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