<> <> <> DIRECTORY CGCubic USING [Bezier], PETypes; PEBezier: CEDAR DEFINITIONS = BEGIN OPEN PETypes; Bezier: TYPE = CGCubic.Bezier; BezierLineProc: TYPE = PROCEDURE[t0, t3: REAL, bezier: Bezier]; BezierSubdivideUntilLines: PROCEDURE [bezier: Bezier, proc: BezierLineProc, depth: NAT _ 0, t0: REAL _ 0.0, t3: REAL _ 1.0]; <> BezierPointProc: TYPE = PROCEDURE[t: REAL, p: Point]; BezierSubdivideUntilPoints: PROCEDURE [bezier: Bezier, proc: BezierPointProc, t0: REAL _ 0.0, t3: REAL _ 1.0]; <> <<>> SegmentToBezier: PROCEDURE [segment: Segment] RETURNS [bezier: Bezier]; <> BezierToSegment: PROCEDURE [bezier: Bezier] RETURNS [segment: Segment]; <> SplitBezier: PROCEDURE [originalBezier: Bezier, t: REAL] RETURNS [bezier1, bezier2: Bezier]; <> END.