<> <> <> DIRECTORY GraphicsBasic USING [Vec]; <> PolygonPen: CEDAR DEFINITIONS ~ BEGIN Vec: TYPE ~ GraphicsBasic.Vec; Bezier: TYPE ~ RECORD[b0, b1, b2, b3: Vec]; Pen: TYPE ~ REF PenRec; PenRec: TYPE ~ RECORD[point: SEQUENCE n: NAT OF Vec]; <> <> <> MoveToProc: TYPE ~ PROCEDURE [z0: Vec]; LineToProc: TYPE ~ PROCEDURE [z1: Vec]; CurveToProc: TYPE ~ PROCEDURE [z1, z2, z3: Vec]; -- three Bezier control points. z3 is the new last point. SimpleStroke: PROCEDURE [pen: Vec, curve: Bezier, moveTo: MoveToProc, lineTo: LineToProc, curveTo: CurveToProc]; -- for when the interior of the curve is known never to be parallel to the pen BroadStroke: PROCEDURE [pen: Vec, curve: Bezier, moveTo: MoveToProc, lineTo: LineToProc, curveTo: CurveToProc]; -- for a compound stroke with a broad pen. Dot: PROCEDURE [pen: Pen, point: Vec, moveTo: MoveToProc, lineTo: LineToProc, curveTo: CurveToProc]; Line: PROCEDURE [pen: Pen, startPoint, endPoint: Vec, moveTo: MoveToProc, lineTo: LineToProc, curveTo: CurveToProc]; Stroke: PROCEDURE [pen: Pen, curve: Bezier, moveTo: MoveToProc, lineTo: LineToProc, curveTo: CurveToProc]; END.