<> <> DIRECTORY ImagerBasic USING [Pair]; Path: CEDAR DEFINITIONS ~ BEGIN Pair: TYPE ~ ImagerBasic.Pair; PATH: TYPE ~ REF PathRep; SegType: TYPE ~ {move, line, curve, conic, arc}; PathRep: TYPE ~ RECORD[segs: Segs, reals: Reals, lp: Pair]; Seg: TYPE ~ RECORD[type: SegType, index: NAT]; Segs: TYPE ~ REF SegsRep; SegsRep: TYPE ~ RECORD[length: NAT, array: SEQUENCE max: NAT OF Seg]; Reals: TYPE ~ REF RealsRep; RealsRep: TYPE ~ RECORD[length: NAT, array: SEQUENCE max: NAT OF REAL]; New: PROC[nSegs: NAT, expectedType: SegType _ move] RETURNS[PATH]; ObtainScratch: PROC[nSegs: NAT, expectedType: SegType _ move] RETURNS[PATH]; ReleaseScratch: PROC[path: PATH]; LastPoint: PROC[path: PATH] RETURNS[x, y: REAL]; LastPointP: PROC[path: PATH] RETURNS[Pair]; <> <<>> MoveTo: PROC[path: PATH, x, y: REAL]; MoveToP: PROC[path: PATH, p: Pair]; <> <<>> LineTo: PROC[path: PATH, x, y: REAL]; LineToP: PROC[path: PATH, p: Pair]; <> <<>> LineToX: PROC[path: PATH, x: REAL]; LineToY: PROC[path: PATH, y: REAL]; <> <> <<>> CurveTo: PROC[path: PATH, x1, y1, x2, y2, x3, y3: REAL]; CurveToP: PROC[path: PATH, p1, p2, p3: Pair]; <> <> ConicTo: PROC[path: PATH, x1, y1, x2, y2: REAL, r: REAL]; ConicToP: PROC[path: PATH, p1, p2: Pair, r: REAL]; <> <> ArcTo: PROC[path: PATH, x1, y1, x2, y2: REAL]; ArcToP: PROC[path: PATH, p1, p2: Pair]; <> <> <<>> <<>> <<>> <> <> <> <> <> <> <> <<};>> END.