public static void Restore(out IParametricCurve2d curve, BinaryReader reader) { curve = null; int nType = reader.ReadInt32(); if (nType == 1) { Segment2d segment = new Segment2d(); Restore(ref segment, reader); curve = segment; } else if (nType == 2) { Circle2d circle = new Circle2d(Vector2D.Zero, 1.0); Restore(ref circle, reader); curve = circle; } else if (nType == 3) { Arc2d arc = new Arc2d(Vector2D.Zero, 1.0, 0, 1); Restore(ref arc, reader); curve = arc; } else if (nType == 100) { ParametricCurveSequence2 seq = new ParametricCurveSequence2(); Restore(ref seq, reader); curve = seq; } else { throw new Exception("gSerialization.Restore: IParametricCurve2D : unknown curve type " + nType.ToString()); } }
public static void Store(ParametricCurveSequence2 sequence, BinaryWriter writer) { writer.Write(sequence.IsClosed); writer.Write((int)sequence.Count); foreach (IParametricCurve2d c in sequence.Curves) { Store(c, writer); } }
public static void Restore(ref ParametricCurveSequence2 sequence, BinaryReader reader) { sequence.IsClosed = reader.ReadBoolean(); int N = reader.ReadInt32(); for (int i = 0; i < N; ++i) { IParametricCurve2d c; Restore(out c, reader); sequence.Append(c); } }