DIRECTORY Imager USING [Rectangle, VEC, Transformation], ImagerPath USING [MoveToProc, CurveToProc], CubicSplines USING [CoeffsSequence], Cubic2 USING [Bezier]; CubicPaths: CEDAR DEFINITIONS ~ BEGIN VEC: TYPE = Imager.VEC; Path: TYPE = REF PathRec; PathRec: TYPE = RECORD[bounds: Imager.Rectangle, cubics: REF PathSequence]; PathSequence: TYPE = RECORD[bezier: SEQUENCE length: NAT OF Cubic2.Bezier]; PathFromCubic: PROC[coeffs: CubicSplines.CoeffsSequence] RETURNS[Path]; EnumeratePath: PROC [ path: Path, moveTo: ImagerPath.MoveToProc, curveTo: ImagerPath.CurveToProc]; PointProc: TYPE = PROC [p: VEC] RETURNS[stop: BOOLEAN _ FALSE]; WalkPath: PROC[path: Path, tol: REAL, proc: PointProc]; PointOnPath: PROC[pt: VEC, path: Path, tol: REAL] RETURNS[BOOLEAN]; TranslatePath: PROC[path: Path, offset: VEC]; TransformPath: PROC[path: Path, tranformation: Imager.Transformation]; END. nCubicPaths.mesa Copyright c 1985 by Xerox Corporation. All rights reserved. Written by: Maureen Stone August 5, 1985 8:39:13 pm PDT Call this inside of an Imager.PathProc to display the path. ie: pathProc: ImagerPath.PathProc = {EnumeratePath[path, moveTo, curveTo]}; Enumerates all the points on the curve. Uses subdivision. tol is for the flatness test Κ›˜codešœ Οkœ™Kšœ Οmœ1™