public static CellArray CellArray(MetafileReader reader)
        {
            var p = reader.ReadPoint();
            var q = reader.ReadPoint();
            var r = reader.ReadPoint();

            int nx = reader.ReadInteger();
            int ny = reader.ReadInteger();

            // TODO: not really used in text encoding; but in case we ever need it,
            //       the same check for zero as in binary encoding needs to happen.
            //       intentionally unused until that time comes.
            int localColorPrecision = reader.ReadInteger();

            int totalCount = nx * ny;
            var colors     = new List <MetafileColor>();

            while (reader.HasMoreData())
            {
                colors.Add(reader.ReadColor());
            }
            // FIXME: for parenthesized lists, every row is enclosed by parenthesis (which right now are ignored by the parser).
            //        The number of cells between parentheses shall be less than or equal to the row length.
            //        If a row is not complete, then the last defined cell in the row is replicated to fill the row.
            //        Since the parser ignores parenthesis, we can only fill the last row with the last color of all rows;
            //        but not every row with the last color of each row.
            if (colors.Count < totalCount)
            {
                var lastColor = colors.Last();
                colors.AddRange(Enumerable.Range(0, totalCount - colors.Count).Select(i => lastColor));
            }
            return(new CellArray(p, q, r, nx, ny, colors.ToArray()));
        }
 public static HyperbolicArc HyperbolicArc(MetafileReader reader)
 {
     // NOTE: Text Encoding does not permit start/end vectors to be encoded as point here (vs. ARCBOUNDS definitions),
     //       but it actually makes sense to store them as such - we can still rely on ReadPoint to read 2x VDC for us
     //       since we ignore parenthesis in the parser (which needs to be fixed in case we ever do).
     return(new HyperbolicArc(reader.ReadPoint(), reader.ReadPoint(), reader.ReadPoint(), reader.ReadPoint(), reader.ReadPoint()));
 }
        public static MaximumVdcExtent MaximumVdcExtent(MetafileReader reader)
        {
            var firstCorner  = reader.ReadPoint();
            var secondCorner = reader.ReadPoint();

            return(new MaximumVdcExtent(firstCorner, secondCorner));
        }
Exemple #4
0
        public static GeometricPatternDefinition GeometricPatternDefinition(MetafileReader reader)
        {
            int patternIndex      = reader.ReadIndex();
            int segmentIdentifier = reader.ReadName();
            var firstCornerPoint  = reader.ReadPoint();
            var secondCornerPoint = reader.ReadPoint();

            return(new GeometricPatternDefinition(patternIndex, segmentIdentifier, firstCornerPoint, secondCornerPoint));
        }
        public static NonUniformRationalBSpline NonUniformRationalBSpline(MetafileReader reader)
        {
            int splineOrder           = reader.ReadInteger();
            int numberOfControlPoints = reader.ReadInteger();
            var controlPoints         = new List <PointF>();

            for (int i = 0; i < numberOfControlPoints; i++)
            {
                controlPoints.Add(reader.ReadPoint());
            }
            var knots = new List <double>();

            for (int i = 0; i < splineOrder + numberOfControlPoints; i++)
            {
                knots.Add(reader.ReadReal());
            }
            double start   = reader.ReadReal();
            double end     = reader.ReadReal();
            var    weights = new List <double>();

            for (int i = 0; i < numberOfControlPoints; i++)
            {
                weights.Add(reader.ReadReal());
            }
            return(new NonUniformRationalBSpline(splineOrder, controlPoints.ToArray(), knots.ToArray(), start, end, weights.ToArray()));
        }
        public static Polygon Polygon(MetafileReader reader)
        {
            var points = new List <PointF>();

            while (reader.HasMoreData(2))
            {
                points.Add(reader.ReadPoint());
            }
            return(new Polygon(points.ToArray()));
        }
        public static Polybezier Polybezier(MetafileReader reader)
        {
            int continuityIndicator = reader.ReadIndex();
            var pointSequences      = new List <PointF>();

            while (reader.HasMoreData(2))
            {
                pointSequences.Add(reader.ReadPoint());
            }
            return(new Polybezier(continuityIndicator, pointSequences.ToArray()));
        }
        private static List <PointF> ReadPointList(MetafileReader reader)
        {
            var points = new List <PointF>();

            while (reader.HasMoreData(2))
            {
                points.Add(reader.ReadPoint());
            }

            return(points);
        }
 public static BeginTileArray BeginTileArray(MetafileReader reader)
 {
     return(new BeginTileArray(
                reader.ReadPoint(),
                ParseCellPathDirection(reader.ReadEnum()),
                ParseLineProgressionDirection(reader.ReadEnum()),
                reader.ReadInteger(), reader.ReadInteger(),
                reader.ReadInteger(), reader.ReadInteger(),
                reader.ReadReal(), reader.ReadReal(),
                reader.ReadInteger(), reader.ReadInteger(),
                reader.ReadInteger(), reader.ReadInteger()));
 }
        public static PolygonSet PolygonSet(MetafileReader reader)
        {
            var points = new List <PointF>();
            var flags  = new List <EdgeOutFlags>();

            while (reader.HasMoreData(3))
            {
                points.Add(reader.ReadPoint());
                flags.Add(ParseEdgeOutFlags(reader.ReadEnum()));
            }
            return(new PolygonSet(points.ToArray(), flags.ToArray()));
        }
        public static Polygon IncrementalPolygon(MetafileReader reader)
        {
            var points    = new List <PointF>();
            var lastPoint = reader.ReadPoint();

            points.Add(lastPoint);
            while (reader.HasMoreData(2))
            {
                double deltaX = reader.ReadVdc();
                double deltaY = reader.ReadVdc();
                lastPoint = new PointF((float)(lastPoint.X + deltaX), (float)(lastPoint.Y + deltaY));
                points.Add(lastPoint);
            }
            return(new Polygon(points.ToArray()));
        }
        private static List <PointF> ReadIncrementalPointList(MetafileReader reader)
        {
            var points    = new List <PointF>();
            var lastPoint = reader.ReadPoint();

            points.Add(lastPoint);
            while (reader.HasMoreData(2))
            {
                double deltaX = reader.ReadVdc();
                double deltaY = reader.ReadVdc();
                lastPoint = new PointF((float)(lastPoint.X + deltaX), (float)(lastPoint.Y + deltaY));
                points.Add(lastPoint);
            }

            return(points);
        }
        public static PolygonSet IncrementalPolygonSet(MetafileReader reader)
        {
            var points    = new List <PointF>();
            var flags     = new List <EdgeOutFlags>();
            var lastPoint = reader.ReadPoint();

            points.Add(lastPoint);
            flags.Add(ParseEdgeOutFlags(reader.ReadEnum()));
            while (reader.HasMoreData(3))
            {
                double deltaX = reader.ReadVdc();
                double deltaY = reader.ReadVdc();
                lastPoint = new PointF((float)(lastPoint.X + deltaX), (float)(lastPoint.Y + deltaY));
                points.Add(lastPoint);
                flags.Add(ParseEdgeOutFlags(reader.ReadEnum()));
            }
            return(new PolygonSet(points.ToArray(), flags.ToArray()));
        }
 public static ClipRectangle ClipRectangle(MetafileReader reader)
 {
     return(new ClipRectangle(reader.ReadPoint(), reader.ReadPoint()));
 }
 public static RestrictedText RestrictedText(MetafileReader reader)
 {
     return(new RestrictedText(reader.ReadVdc(), reader.ReadVdc(), reader.ReadPoint(), ParseFinalFlag(reader.ReadEnum()), reader.ReadString()));
 }
 public static TextCommand Text(MetafileReader reader)
 {
     return(new TextCommand(reader.ReadPoint(), ParseFinalFlag(reader.ReadEnum()), reader.ReadString()));
 }
 public static EllipticalArcClose EllipticalArcClose(MetafileReader reader)
 {
     return(new EllipticalArcClose(reader.ReadPoint(), reader.ReadPoint(), reader.ReadPoint(), reader.ReadPoint(), reader.ReadPoint(), ParseArcClosure(reader.ReadEnum())));
 }
 public static Circle Circle(MetafileReader reader)
 {
     return(new Circle(reader.ReadPoint(), reader.ReadVdc()));
 }
 public static CircularArc3Point CircularArc3Point(MetafileReader reader)
 {
     return(new CircularArc3Point(reader.ReadPoint(), reader.ReadPoint(), reader.ReadPoint()));
 }
 public static CircularArcCenterClose CircularArcCenterClose(MetafileReader reader)
 {
     return(new CircularArcCenterClose(reader.ReadPoint(), reader.ReadPoint(), reader.ReadPoint(), reader.ReadVdc(), ParseArcClosure(reader.ReadEnum())));
 }
Exemple #21
0
 public static FillReferencePoint FillReferencePoint(MetafileReader reader)
 {
     return(new FillReferencePoint(reader.ReadPoint()));
 }
 public static Ellipse Ellipse(MetafileReader reader)
 {
     return(new Ellipse(reader.ReadPoint(), reader.ReadPoint(), reader.ReadPoint()));
 }
 public static CircularArcCenterReversed CircularArcCenterReversed(MetafileReader reader)
 {
     return(new CircularArcCenterReversed(reader.ReadPoint(), reader.ReadPoint(), reader.ReadPoint(), reader.ReadVdc()));
 }
Exemple #24
0
 public static CharacterOrientation CharacterOrientation(MetafileReader reader)
 {
     return(new CharacterOrientation(reader.ReadPoint(), reader.ReadPoint()));
 }
 public static ParabolicArc ParabolicArc(MetafileReader reader)
 {
     return(new ParabolicArc(reader.ReadPoint(), reader.ReadPoint(), reader.ReadPoint()));
 }
 public static EllipticalArc EllipticalArc(MetafileReader reader)
 {
     return(new EllipticalArc(reader.ReadPoint(), reader.ReadPoint(), reader.ReadPoint(), reader.ReadPoint(), reader.ReadPoint()));
 }