Exemple #1
0
        public override void Write(BinaryWriter writer, IMultiPartGeometry <IPointZ> value, WordCount origin)
        {
            Box.Write(writer, value.Box, origin);

            var partCount = value.Parts.Count;

            NumParts.Write(writer, partCount, origin);

            var points = value.Parts.SelectMany(part => part.Points).ToArray();

            NumPoints.Write(writer, points.Length, origin);

            int pointCount = 0;

            for (int i = 0; i < partCount; i++)
            {
                Part(i).Write(writer, pointCount, origin);

                pointCount += value.Parts[i].Points.Count;
            }

            var pointsOffset = OffsetPoints(partCount);

            for (int i = 0; i < points.Length; i++)
            {
                Point(pointsOffset, pointCount, i).Write(writer, points[i], origin);
            }

            MinZ(pointsOffset, pointCount).Write(writer, value.Box.Min.Z, origin);
            MaxZ(pointsOffset, pointCount).Write(writer, value.Box.Max.Z, origin);

            MinM(pointsOffset, pointCount).Write(writer, value.Box.Min.M, origin);
            MaxM(pointsOffset, pointCount).Write(writer, value.Box.Max.M, origin);
        }
Exemple #2
0
        public override void Write(BinaryWriter writer, IMultiPatchShape <IPointZ> value, WordCount origin)
        {
            Box.Write(writer, value.Box, origin);

            var numParts = value.Patches.Count;

            NumParts.Write(writer, numParts, origin);

            var points = value.Patches.SelectMany(patch => patch.Points).ToArray();

            NumPoints.Write(writer, points.Length, origin);

            int pointCount = 0;

            for (int i = 0; i < numParts; i++)
            {
                Part(i).Write(writer, pointCount, origin);
                PartType(numParts, i).Write(writer, value.Patches[i].PatchType);

                pointCount += value.Patches[i].Points.Count;
            }

            var pointsOffset = OffsetPoints(numParts);

            for (int i = 0; i < points.Length; i++)
            {
                Point(pointsOffset, pointCount, i).Write(writer, points[i], origin);
            }

            MinZ(pointsOffset, pointCount).Write(writer, value.Box.Min.Z, origin);
            MaxZ(pointsOffset, pointCount).Write(writer, value.Box.Max.Z, origin);

            MinM(pointsOffset, pointCount).Write(writer, value.Box.Min.M, origin);
            MaxM(pointsOffset, pointCount).Write(writer, value.Box.Max.M, origin);
        }
Exemple #3
0
        public override void Write(BinaryWriter writer, IMultiPartGeometry <IPoint> value, WordCount origin)
        {
            Box.Write(writer, value.Box, origin);

            var partCount = value.Parts.Count;

            NumParts.Write(writer, partCount, origin);

            var points = value.Parts.SelectMany(part => part.Points).ToArray();

            NumPoints.Write(writer, points.Length, origin);

            int pointCount = 0;

            for (int i = 0; i < partCount; i++)
            {
                Part(i).Write(writer, pointCount, origin);

                pointCount += value.Parts[i].Points.Count;
            }

            for (int i = 0; i < pointCount; i++)
            {
                Point(partCount, i).Write(writer, points[i], origin);
            }
        }