/// <summary>
        /// Deserializes a scene with a style index.
        /// </summary>
        /// <param name="stream"></param>
        /// <param name="lazy"></param>
        /// <returns></returns>
        public Scene2DStyledSource Deserialize(Stream stream, bool lazy = true)
        {
            // read index bytes.
            byte[] indexSizeBytes = new byte[4];
            stream.Read(indexSizeBytes, 0, 4);
            int length = BitConverter.ToInt32(indexSizeBytes, 0);

            // move to the index position.
            RuntimeTypeModel typeModel = TypeModel.Create();
            typeModel.Add(typeof(Scene2DStyledIndex), true); // the styles index.

            typeModel.Add(typeof(Icon2DStyle), true);
            typeModel.Add(typeof(Image2DStyle), true);
            typeModel.Add(typeof(Line2DStyle), true);
            typeModel.Add(typeof(Point2DStyle), true);
            typeModel.Add(typeof(Polygon2DStyle), true);
            typeModel.Add(typeof(Text2DStyle), true);
            typeModel.Add(typeof(LineText2DStyle), true);

            // deserialize the index.
            byte[] indexBytes = new byte[length];
            stream.Read(indexBytes, 0, length);
            MemoryStream cappedStream = new MemoryStream(indexBytes);
            Scene2DStyledIndex styleIndex =
                typeModel.Deserialize(cappedStream, null, typeof(Scene2DStyledIndex)) as Scene2DStyledIndex;

            // initialize the serializer.
            Scene2DRTreeSerializer serializer = new Scene2DRTreeSerializer(true, styleIndex);
            return new Scene2DStyledSource(
                serializer.Deserialize(new LimitedStream(stream), true));
        }
Example #2
0
        /// <summary>
        /// Deserialize a Scene2D from the given stream.
        /// </summary>
        /// <param name="stream"></param>
        /// <param name="compressed"></param>
        /// <returns></returns>
        public static IScene2DPrimitivesSource Deserialize(Stream stream, bool compressed)
        {
            // create the serializer.
            var serializer = new Scene2DRTreeSerializer(compressed);
            ISpatialIndexReadonly <Scene2DEntry> index = serializer.Deserialize(stream);

            return(new Scene2DPrimitivesSource(index));
        }
Example #3
0
        /// <summary>
        /// Serializes this scene2D to the given stream.
        /// </summary>
        /// <param name="stream"></param>
        /// <param name="compress"></param>
        public override void Serialize(Stream stream, bool compress)
        {
            // build the index.
            var index = new RTreeMemoryIndex <Scene2DEntry>();

            foreach (var primitiveLayer in _primitives)
            {
                foreach (var primitive in primitiveLayer.Value)
                {
                    index.Add(primitive.GetBox(), new Scene2DEntry()
                    {
                        Layer            = primitiveLayer.Key,
                        Id               = 0,
                        Scene2DPrimitive = primitive
                    });
                }
            }

            // create the serializer.
            var serializer = new Scene2DRTreeSerializer(compress);

            serializer.Serialize(stream, index);
        }
        /// <summary>
        /// Serializes a stream with a style index.
        /// </summary>
        /// <param name="stream"></param>
        /// <param name="index"></param>
        public void Serialize(Stream stream, RTreeMemoryIndex<Scene2DEntry> index)
        {
            Scene2DStyledIndex styleIndex = new Scene2DStyledIndex();
            Scene2DRTreeSerializer serializer = new Scene2DRTreeSerializer(true, styleIndex);

            // serialize the tree and fill the styleindex.
            MemoryStream rTreeStream = new MemoryStream();
            serializer.Serialize(rTreeStream, index);

            // serialize the index.
            MemoryStream indexStream = new MemoryStream();
            RuntimeTypeModel typeModel = TypeModel.Create();
            typeModel.Add(typeof(Scene2DStyledIndex), true);

            typeModel.Add(typeof(Icon2DStyle), true);
            typeModel.Add(typeof(Image2DStyle), true);
            typeModel.Add(typeof(Line2DStyle), true);
            typeModel.Add(typeof(Point2DStyle), true);
            typeModel.Add(typeof(Polygon2DStyle), true);
            typeModel.Add(typeof(Text2DStyle), true);
            typeModel.Add(typeof(LineText2DStyle), true);

            typeModel.Serialize(indexStream, styleIndex);

            // write to the final stream.
            byte[] indexSizeBytes = BitConverter.GetBytes((int)indexStream.Length);
            stream.Write(indexSizeBytes, 0, indexSizeBytes.Length);
            indexStream.Seek(0, SeekOrigin.Begin);
            indexStream.WriteTo(stream);
            rTreeStream.WriteTo(stream);
            indexStream.Dispose();
            rTreeStream.Dispose();
        }
Example #5
0
        /// <summary>
        /// Serializes this scene2D to the given stream.
        /// </summary>
        /// <param name="stream"></param>
        /// <param name="compress"></param>
        public override void Serialize(Stream stream, bool compress)
        {
            // build the index.
            var index = new RTreeMemoryIndex<Scene2DEntry>();
            foreach (var primitiveLayer in _primitives)
            {
                foreach (var primitive in primitiveLayer.Value)
                {
                    index.Add(primitive.GetBox(), new Scene2DEntry()
                    {
                        Layer = primitiveLayer.Key,
                        Id = 0,
                        Scene2DPrimitive = primitive
                    });
                }
            }

            // create the serializer.
            var serializer = new Scene2DRTreeSerializer(compress);
            serializer.Serialize(stream, index);
        }
Example #6
0
        /// <summary>
        /// Deserialize a Scene2D from the given stream.
        /// </summary>
        /// <param name="stream"></param>
        /// <param name="compressed"></param>
        /// <returns></returns>
        public static IScene2DPrimitivesSource Deserialize(Stream stream, bool compressed)
        {
            // create the serializer.
            var serializer = new Scene2DRTreeSerializer(compressed);
            ISpatialIndexReadonly<Scene2DEntry> index = serializer.Deserialize(stream);

            return new Scene2DPrimitivesSource(index);
        }