/// <summary>
            /// Serializes the actual data.
            /// </summary>
            /// <param name="typeModel"></param>
            /// <param name="data"></param>
            /// <param name="boxes"></param>
            /// <returns></returns>
            protected override byte[] Serialize(RuntimeTypeModel typeModel, List <string> data,
                                                List <BoxF2D> boxes)
            {
                var collection = new PrimitivesCollection();

                collection.Data = data.ToArray();
                collection.MinX = new double[boxes.Count];
                collection.MaxX = new double[boxes.Count];
                collection.MinY = new double[boxes.Count];
                collection.MaxY = new double[boxes.Count];
                for (int idx = 0; idx < boxes.Count; idx++)
                {
                    collection.MinX[idx] = boxes[idx].Min[0];
                    collection.MaxX[idx] = boxes[idx].Max[0];
                    collection.MinY[idx] = boxes[idx].Min[1];
                    collection.MaxY[idx] = boxes[idx].Max[1];
                }

                // create the memory stream.
                var stream = new MemoryStream();

                typeModel.Serialize(stream, collection);
                return(stream.ToArray());
            }
Example #2
0
        /// <summary>
        /// Serializes the actual data.
        /// </summary>
        /// <param name="typeModel"></param>
        /// <param name="data"></param>
        /// <param name="boxes"></param>
        /// <returns></returns>
        protected override byte[] Serialize(RuntimeTypeModel typeModel, List <Scene2DEntry> data,
                                            List <BoxF2D> boxes)
        {
            var icons     = new List <Icon2DEntry>();
            var images    = new List <Image2DEntry>();
            var lines     = new List <Line2DEntry>();
            var points    = new List <Point2DEntry>();
            var polygons  = new List <Polygon2DEntry>();
            var texts     = new List <Text2DEntry>();
            var lineTexts = new List <LineText2DEntry>();

            // build the collection object.
            var collection = new PrimitivesCollection();

            for (int idx = 0; idx < data.Count; idx++)
            {
                IScene2DPrimitive primitive = data[idx].Scene2DPrimitive;
                if (primitive is Icon2D)
                {
                    icons.Add(new Icon2DEntry()
                    {
                        Primitive = (Icon2D)primitive,
                        Id        = data[idx].Id,
                        Layer     = data[idx].Layer
                    });
                }
                else if (primitive is Image2D)
                {
                    images.Add(new Image2DEntry()
                    {
                        Primitive = (Image2D)primitive,
                        Id        = data[idx].Id,
                        Layer     = data[idx].Layer
                    });
                }
                else if (primitive is Line2D)
                {
                    lines.Add(new Line2DEntry()
                    {
                        Primitive = (Line2D)primitive,
                        Id        = data[idx].Id,
                        Layer     = data[idx].Layer
                    });
                }
                else if (primitive is Point2D)
                {
                    points.Add(new Point2DEntry()
                    {
                        Primitive = (Point2D)primitive,
                        Id        = data[idx].Id,
                        Layer     = data[idx].Layer
                    });
                }
                else if (primitive is Polygon2D)
                {
                    polygons.Add(new Polygon2DEntry()
                    {
                        Primitive = (Polygon2D)primitive,
                        Id        = data[idx].Id,
                        Layer     = data[idx].Layer
                    });
                }
                else if (primitive is Text2D)
                {
                    texts.Add(new Text2DEntry()
                    {
                        Primitive = (Text2D)primitive,
                        Id        = data[idx].Id,
                        Layer     = data[idx].Layer
                    });
                }
                else if (primitive is LineText2D)
                {
                    lineTexts.Add(new LineText2DEntry()
                    {
                        Primitive = (LineText2D)primitive,
                        Id        = data[idx].Id,
                        Layer     = data[idx].Layer
                    });
                }
                else
                {
                    throw new Exception("Primitive type not supported by serializer.");
                }
            }

            collection.Icons     = icons.ToArray();
            collection.Images    = images.ToArray();
            collection.Lines     = lines.ToArray();
            collection.Points    = points.ToArray();
            collection.Polygons  = polygons.ToArray();
            collection.Texts     = texts.ToArray();
            collection.LineTexts = lineTexts.ToArray();

            // create the memory stream.
            var stream = new MemoryStream();

            typeModel.Serialize(stream, collection);
            if (!_compress)
            {
                return(stream.ToArray());
            }
            return(GZipStream.CompressBuffer(stream.ToArray()));
        }
        /// <summary>
        /// Serializes the actual data.
        /// </summary>
        /// <param name="typeModel"></param>
        /// <param name="data"></param>
        /// <param name="boxes"></param>
        /// <returns></returns>
        protected override byte[] Serialize(RuntimeTypeModel typeModel, List <Scene2DEntry> data,
                                            List <BoxF2D> boxes)
        {
            var icons     = new List <Icon2DEntry>();
            var images    = new List <Image2DEntry>();
            var lines     = new List <Line2DEntry>();
            var points    = new List <Point2DEntry>();
            var polygons  = new List <Polygon2DEntry>();
            var texts     = new List <Text2DEntry>();
            var lineTexts = new List <LineText2DEntry>();

            // build the collection object.
            var collection = new PrimitivesCollection();

            for (int idx = 0; idx < data.Count; idx++)
            {
                IScene2DPrimitive primitive = data[idx].Scene2DPrimitive;
                if (primitive is Icon2D)
                {
                    Icon2D icon = primitive as Icon2D;
                    icons.Add(Icon2DEntry.From(data[idx].Id, icon, _styleIndex.AddStyle(icon, data[idx].Layer)));
                }
                else if (primitive is Image2D)
                {
                    Image2D image = primitive as Image2D;
                    images.Add(Image2DEntry.From(data[idx].Id, image, _styleIndex.AddStyle(image, data[idx].Layer)));
                }
                else if (primitive is Line2D)
                {
                    Line2D line = primitive as Line2D;
                    lines.Add(Line2DEntry.From(data[idx].Id, line, _styleIndex.AddStyle(line, data[idx].Layer)));
                }
                else if (primitive is Point2D)
                {
                    Point2D point = primitive as Point2D;
                    points.Add(Point2DEntry.From(data[idx].Id, point, _styleIndex.AddStyle(point, data[idx].Layer)));
                }
                else if (primitive is Polygon2D)
                {
                    Polygon2D polygon = primitive as Polygon2D;
                    polygons.Add(Polygon2DEntry.From(data[idx].Id, polygon, _styleIndex.AddStyle(polygon, data[idx].Layer)));
                }
                else if (primitive is Text2D)
                {
                    Text2D text = primitive as Text2D;
                    texts.Add(Text2DEntry.From(data[idx].Id, text, _styleIndex.AddStyle(text, data[idx].Layer)));
                }
                else if (primitive is LineText2D)
                {
                    LineText2D lineText = primitive as LineText2D;
                    lineTexts.Add(LineText2DEntry.From(data[idx].Id, lineText, _styleIndex.AddStyle(lineText, data[idx].Layer)));
                }
                else
                {
                    throw new Exception("Primitive type not supported by serializer.");
                }
            }

            collection.Icons     = icons.ToArray();
            collection.Images    = images.ToArray();
            collection.Lines     = lines.ToArray();
            collection.Points    = points.ToArray();
            collection.Polygons  = polygons.ToArray();
            collection.Texts     = texts.ToArray();
            collection.LineTexts = lineTexts.ToArray();

            // create the memory stream.
            var stream = new MemoryStream();

            typeModel.Serialize(stream, collection);
            if (!_compress)
            {
                return(stream.ToArray());
            }
            return(GZipStream.CompressBuffer(stream.ToArray()));
        }