Example #1
0
        /// <inheritdoc/>
        public override void Deserialize(FRReader reader)
        {
            base.Deserialize(reader);
            points     = new List <PointF>();
            pointTypes = new List <byte>();
            string polyPoints = reader.ReadStr("PolyPoints");

            foreach (string str in polyPoints.Split('|'))
            {
                string[] point = str.Split('\\');
                if (point.Length == 3)
                {
                    float f1 = float.Parse(point[0].Replace(',', '.'), CultureInfo.InvariantCulture);
                    float f2 = float.Parse(point[1].Replace(',', '.'), CultureInfo.InvariantCulture);
                    addPoint(f1, f2, byte.Parse(point[2]));
                }
            }
            if (reader.HasProperty("CenterX"))
            {
                center.X = reader.ReadFloat("CenterX");
            }
            if (reader.HasProperty("CenterY"))
            {
                center.Y = reader.ReadFloat("CenterY");
            }
            //recalculateBounds();
        }
        /// <inheritdoc/>
        public override void Deserialize(FRReader reader)
        {
            base.Deserialize(reader);

            // compatibility with old reports: try to use last part of ReferenceName as a value for PropName
            if (!String.IsNullOrEmpty(ReferenceName) && ReferenceName.Contains("."))
            {
                string[] names = ReferenceName.Split(new char[] { '.' });
                PropName      = names[names.Length - 1];
                ReferenceName = "";
            }

            // gather all nested datasource names (PropName properties)
            List <string> dataSourceNames = new List <string>();

            foreach (Column column in Columns)
            {
                if (column is BusinessObjectDataSource)
                {
                    dataSourceNames.Add(column.PropName);
                }
            }

            // delete simple columns that have the same name as a datasource. In old version,
            // there was an invisible column used to support BO infrastructure
            for (int i = 0; i < Columns.Count; i++)
            {
                Column column = Columns[i];
                if (!(column is BusinessObjectDataSource) && dataSourceNames.Contains(column.PropName))
                {
                    column.Dispose();
                    i--;
                }
            }
        }
Example #3
0
        //static int i = 0;

        /// <summary>
        /// Assigns values from another source.
        /// </summary>
        /// <remarks>
        /// <b>Note:</b> this method is relatively slow because it serializes
        /// an object to the xml and then deserializes it.
        /// </remarks>
        /// <param name="source">Source to assign from.</param>
        public void BaseAssign(Base source)
        {
            bool saveAncestor = source.IsAncestor;

            source.SetAncestor(false);

            try
            {
                using (XmlItem xml = new XmlItem())
                    using (FRWriter writer = new FRWriter(xml))
                        using (FRReader reader = new FRReader(Report, xml))
                        {
                            writer.SaveChildren = false;
                            writer.Write(source, this);
                            reader.Read(this);
                        }

                Alias             = source.Alias;
                OriginalComponent = source.OriginalComponent;
            }
            finally
            {
                source.SetAncestor(saveAncestor);
            }
        }
Example #4
0
 /// <inheritdoc/>
 public override void Deserialize(FRReader reader)
 {
     // the Clear is needed to avoid duplicate columns in the inherited report
     // when the same datasource is exists in both base and inherited report
     Clear();
     base.Deserialize(reader);
 }
Example #5
0
        internal ReportPage StartGetPage(int index)
        {
            Load();
            ReportPage page;

            using (FRReader reader = new FRReader(null))
            {
                reader.ReadChildren = false;
                reader.BlobStore    = preparedPages.BlobStore;
                page = ReadPage(null, xmlItem, false, reader);
                if (!(page.UnlimitedHeight || page.UnlimitedWidth))
                {
                    page.Dispose();
                    page = ReadPage(null, xmlItem, true, reader);
                    page.SetReport(preparedPages.Report);
                    posprocessor = new PreparedPagePosprocessor();
                    posprocessor.Postprocess(page);
                    posprocessor = null;
                }
                else
                {
                    page.SetReport(preparedPages.Report);
                    posprocessor = new PreparedPagePosprocessor();
                    posprocessor.PostprocessUnlimited(this, page);
                }
            }
            if (page.MirrorMargins && (index + 1) % 2 == 0)
            {
                float f = page.LeftMargin;
                page.LeftMargin  = page.RightMargin;
                page.RightMargin = f;
            }
            return(page);
        }
Example #6
0
        private Base CloneObjects(Base source, Base parent)
        {
            if (source is ReportComponentBase && !(source as ReportComponentBase).FlagPreviewVisible)
            {
                return(null);
            }

            // create clone object and assign all properties from source
            string baseName = "";
            string objName;



            Base clone = Activator.CreateInstance(source.GetType()) as Base;

            using (XmlItem xml = new XmlItem())
                using (FRWriter writer = new FRWriter(xml))
                    using (FRReader reader = new FRReader(null, xml))
                    {
                        writer.SaveChildren = false;
                        writer.SerializeTo  = SerializeTo.SourcePages;
                        writer.Write(source, clone);
                        reader.Read(clone);
                    }
            clone.Name = source.Name;
            clone.OriginalComponent  = source;
            source.OriginalComponent = clone;
            if (clone is ReportComponentBase)
            {
                (clone as ReportComponentBase).AssignPreviewEvents(source);
            }
            // create alias
            objName = "Page" + pages.Count.ToString() + "." + clone.Name;
            if (clone is BandBase)
            {
                baseName = "b";
            }
            else if (clone is PageBase)
            {
                baseName = "page";
                objName  = "Page" + pages.Count.ToString();
            }
            else
            {
                baseName = clone.BaseName[0].ToString().ToLower();
            }

            clone.Alias  = preparedPages.Dictionary.AddUnique(baseName, objName, clone);
            source.Alias = clone.Alias;

            ObjectCollection childObjects = source.ChildObjects;

            foreach (Base c in childObjects)
            {
                CloneObjects(c, clone);
            }
            clone.Parent = parent;
            return(clone);
        }
Example #7
0
 /// <summary>
 /// Deserializes the object.
 /// </summary>
 /// <remarks>
 ///   <para>Do not call this method directly. You should override it if you are
 ///     developing a new component for FastReport.</para>
 ///   <para>This method is called when the object needs to restore the state. It may
 ///     happen when:</para>
 ///   <list type="bullet">
 ///     <item>
 ///       <description>loading the report from a file or stream;</description>
 ///     </item>
 ///     <item>
 ///       <description>loading the report from the designer's undo
 ///             buffer;</description>
 ///     </item>
 ///     <item>
 ///       <description>assigning another object to this object using the
 ///         <see cref="Assign"/> or <see cref="AssignAll(Base)">AssignAll</see> methods;</description>
 ///     </item>
 ///     <item>
 ///       <description>loading the object from the designer's
 ///             clipboard;</description>
 ///     </item>
 ///     <item>loading the object from the preview pages.</item>
 ///   </list>
 /// </remarks>
 /// <param name="reader">Reader object.</param>
 public virtual void Deserialize(FRReader reader)
 {
     reader.ReadProperties(this);
     while (reader.NextItem())
     {
         DeserializeSubItems(reader);
     }
 }
Example #8
0
 /// <summary>
 /// Loads the collection from a stream.
 /// </summary>
 /// <param name="stream">Stream to load from.</param>
 public void Load(Stream stream)
 {
     using (FRReader reader = new FRReader(null))
     {
         reader.Load(stream);
         reader.Read(this);
     }
 }
Example #9
0
 /// <inheritdoc/>
 public override void Deserialize(FRReader reader)
 {
     base.Deserialize(reader);
     if (reader.HasProperty("GroupByXValue"))
     {
         GroupBy = GroupBy.XValue;
     }
 }
Example #10
0
 /// <summary>
 /// Deserializes the collection.
 /// </summary>
 /// <param name="reader">Reader object.</param>
 /// <remarks>
 /// This method is for internal use only.
 /// </remarks>
 public void Deserialize(FRReader reader)
 {
     while (reader.NextItem())
     {
         StyleCollection s = new StyleCollection();
         reader.Read(s);
         Add(s);
     }
 }
Example #11
0
 /// <inheritdoc/>
 public void Deserialize(FRReader reader)
 {
     Clear();
     while (reader.NextItem())
     {
         FormatBase format = reader.Read() as FormatBase;
         Add(format);
     }
 }
Example #12
0
        private void RestoreSettings()
        {
            XmlItem root = Config.Root.FindItem("Preview").FindItem("Exports").FindItem(ClassName);

            using (FRReader reader = new FRReader(null, root))
            {
                reader.Read(this);
            }
        }
Example #13
0
 /// <summary>
 /// Loads the dictionary from a stream.
 /// </summary>
 /// <param name="stream">The stream to load from.</param>
 public void Load(Stream stream)
 {
     Clear();
     using (FRReader reader = new FRReader(Report))
     {
         reader.Load(stream);
         reader.Read(this);
     }
 }
Example #14
0
 /// <inheritdoc/>
 public void Deserialize(FRReader reader)
 {
     Clear();
     while (reader.NextItem())
     {
         MatrixHeaderDescriptor d = new MatrixHeaderDescriptor();
         reader.Read(d);
         Add(d);
     }
 }
 /// <summary>
 /// Deserializes the collection.
 /// </summary>
 /// <param name="reader">Reader object.</param>
 /// <remarks>
 /// This method is for internal use only.
 /// </remarks>
 public void Deserialize(FRReader reader)
 {
     Clear();
     while (reader.NextItem())
     {
         GridControlColumn c = new GridControlColumn();
         reader.Read(c);
         Add(c);
     }
 }
Example #16
0
 internal string GetName()
 {
     using (FRReader reader = new FRReader(null))
     {
         reader.ReadChildren = false;
         reader.BlobStore    = preparedPages.BlobStore;
         ReportPage page = ReadObject(null, xmlItem, false, reader) as ReportPage;
         return(page.Name);
     }
 }
Example #17
0
 /// <inheritdoc/>
 public void Deserialize(FRReader reader)
 {
     Clear();
     while (reader.NextItem())
     {
         HighlightCondition c = new HighlightCondition();
         reader.Read(c);
         Add(c);
     }
 }
Example #18
0
 /// <inheritdoc/>
 public void Deserialize(FRReader reader)
 {
     Clear();
     while (reader.NextItem())
     {
         CrossViewCellDescriptor d = new CrossViewCellDescriptor();
         reader.Read(d);
         Add(d);
     }
 }
Example #19
0
 /// <inheritdoc/>
 public void Deserialize(FRReader reader)
 {
     Clear();
     while (reader.NextItem())
     {
         Sort s = new Sort();
         reader.Read(s);
         Add(s);
     }
 }
Example #20
0
        internal IEnumerable <Base> GetPageItems(ReportPage page, bool postprocess)
        {
            if (!(page.UnlimitedHeight || page.UnlimitedWidth))
            {
                foreach (Base child in page.ChildObjects)
                {
                    if (postprocess)
                    {
                        yield return(child);
                    }
                    else
                    {
                        using (child)
                            yield return(child);
                    }
                }
            }
            else
            {
                if (Export.ExportBase.HAVE_TO_WORK_WITH_OVERLAY)
#pragma warning disable CS0162 // Unreachable code detected
                {
                    foreach (Base child in page.ChildObjects)
#pragma warning restore CS0162 // Unreachable code detected
                    {
                        if (child is OverlayBand)
                        {
                            yield return(child);
                        }
                    }
                }

                using (FRReader reader = new FRReader(null))
                {
                    reader.DeserializeFrom = SerializeTo.Preview;
                    reader.ReadChildren    = false;
                    reader.BlobStore       = preparedPages.BlobStore;
                    for (int i = 0; i < xmlItem.Count; i++)
                    {
                        if (postprocess)
                        {
                            yield return(ReadObject(page, xmlItem[i], true, reader));
                        }
                        else
                        {
                            using (Base obj = ReadObject(page, xmlItem[i], true, reader))
                            {
                                using (Base obj2 = posprocessor.PostProcessBandUnlimitedPage(obj))
                                    yield return(obj2);
                            }
                        }
                    }
                }
            }
        }
Example #21
0
 private void LoadReport(Stream stream)
 {
     Report.Clear();
     using (FRReader reader = new FRReader(Report))
     {
         stream.Position  = 0;
         reader.BlobStore = BlobStore;
         reader.Load(stream);
         reader.Read(Report);
     }
 }
 /// <inheritdoc/>
 protected override void DeserializeSubItems(FRReader reader)
 {
     if (String.Compare(reader.ItemName, "Formats", true) == 0)
     {
         reader.Read(Formats);
     }
     else
     {
         base.DeserializeSubItems(reader);
     }
 }
Example #23
0
 public void Load(XmlItem rootItem)
 {
     Clear();
     for (int i = 0; i < rootItem.Count; i++)
     {
         using (FRReader reader = new FRReader(null, rootItem[i]))
         {
             pages.Add(reader.Read() as ReportPage);
         }
     }
 }
Example #24
0
 public override void Deserialize(FRReader reader)
 {
     FPageType = RegisteredObjects.FindType(reader.ReadStr("PageType"));
     while (reader.NextItem())
     {
         Base c = reader.Read() as Base;
         if (c != null)
         {
             FObjects.Add(c);
         }
     }
 }
Example #25
0
 /// <inheritdoc/>
 public override void Deserialize(FRReader reader, string prefix)
 {
     base.Deserialize(reader, prefix);
     if (reader.HasProperty(prefix + ".ImageIndex"))
     {
         imageIndex = reader.ReadInt(prefix + ".ImageIndex");
     }
     if (reader.BlobStore != null && imageIndex != -1)
     {
         SetImageData(reader.BlobStore.Get(imageIndex));
     }
 }
Example #26
0
 /// <inheritdoc/>
 public void Deserialize(FRReader reader)
 {
     Clear();
     Name = "";
     reader.ReadProperties(this);
     while (reader.NextItem())
     {
         Style s = new Style();
         reader.Read(s);
         Add(s);
     }
 }
Example #27
0
        internal ReportPage ReadPage(Base parent, XmlItem item, bool readchild, FRReader reader)
        {
            ReportPage page = ReadObject(parent, item, false, reader) as ReportPage;

            if (readchild)
            {
                for (int i = 0; i < item.Count; i++)
                {
                    ReadObject(page, item[i], true, reader);
                }
            }
            return(page);
        }
Example #28
0
 /// <inheritdoc/>
 public override void Deserialize(FRReader reader)
 {
     base.Deserialize(reader);
     if (reader.HasProperty("ChartData"))
     {
         string streamStr = reader.ReadStr("ChartData");
         using (MemoryStream stream = Converter.FromString(typeof(Stream), streamStr) as MemoryStream)
         {
             FChart.Serializer.Reset();
             FChart.Serializer.Load(stream);
         }
     }
 }
Example #29
0
 /// <inheritdoc/>
 public override void Deserialize(FRReader reader)
 {
     base.Deserialize(reader);
     if (reader.HasProperty("ImageIndex"))
     {
         imageIndex = reader.ReadInt("ImageIndex");
         if (reader.BlobStore != null && imageIndex != -1)
         {
             //int saveIndex = FImageIndex;
             //Image = ImageHelper.Load(reader.BlobStore.Get(FImageIndex));
             //FImageIndex = saveIndex;
             SetImageData(reader.BlobStore.Get(imageIndex));
         }
     }
 }
Example #30
0
 /// <summary>
 /// Deserializes nested object properties.
 /// </summary>
 /// <param name="reader">Reader object.</param>
 /// <remarks>
 /// <para>Typically the object serializes all properties to the single xml item:</para>
 /// <code>
 /// &lt;TextObject Name="Text2" Left="18.9" Top="37.8" Width="283.5" Height="28.35"/&gt;
 /// </code>
 /// <para>Some objects like <see cref="DataBand"/> have child objects that serialized in subitems:</para>
 /// <code>
 /// &lt;DataBand Name="Data1" Top="163" Width="718.2" Height="18.9"&gt;
 ///   &lt;TextObject Name="Text3" Left="18.9" Top="37.8" Width="283.5" Height="28.35"/&gt;
 /// &lt;/DataBand&gt;
 /// </code>
 /// <para>To read such subitems, the <c>DeserializeSubItems</c> method is used. Base
 /// implementation reads the child objects. You may override it to read some specific subitems.</para>
 /// </remarks>
 /// <example>The following code is used to read report's styles:
 /// <code>
 /// protected override void DeserializeSubItems(FRReader reader)
 /// {
 ///   if (String.Compare(reader.ItemName, "Styles", true) == 0)
 ///     reader.Read(Styles);
 ///   else
 ///     base.DeserializeSubItems(reader);
 /// }
 /// </code>
 /// </example>
 protected virtual void DeserializeSubItems(FRReader reader)
 {
     if (reader.ReadChildren)
     {
         Base obj = reader.Read() as Base;
         if (obj != null)
         {
             obj.Parent = this;
             if (IsAncestor && !obj.IsAncestor)
             {
                 obj.ZOrder = obj.zOrder;
             }
         }
     }
 }