/// <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()); }
/// <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())); }