<> <> <> <> <<>> DIRECTORY CD, Imager; CDCurves: CEDAR DEFINITIONS = BEGIN <> <> <> <<>> <> <> <> <> <> CurveSpecific: TYPE = REF CurveRec; CurveRec: TYPE = RECORD [points: LIST OF CD.Position, w: CD.Number_0, path: Imager.Trajectory_NIL, imagerObject: Imager.Object_NIL]; splineClass: PRIVATE CD.ObjectClass; lineClass: PRIVATE CD.ObjectClass; polygonClass: PRIVATE CD.ObjectClass; filledCurveClass: PRIVATE CD.ObjectClass; IsLine: PROC [ob: CD.Object] RETURNS [BOOL] = INLINE { RETURN [ob.class = lineClass] }; IsSpline: PROC [ob: CD.Object] RETURNS [BOOL] = INLINE { RETURN [ob.class = splineClass] }; IsPolygon: PROC [ob: CD.Object] RETURNS [BOOL] = INLINE { RETURN [ob.class = polygonClass] }; IsFilledCurve: PROC [ob: CD.Object] RETURNS [BOOL] = INLINE { RETURN [ob.class = filledCurveClass] }; CreateLine: PROC [points: LIST OF CD.Position, w: CD.Number, layer: CD.Layer] RETURNS [ob: CD.Object, offset: CD.Position]; <<--Creates a line object of width "w" (even) connecting the points "points". >> CreateSpline: PROC [points: LIST OF CD.Position, w: CD.Number, layer: CD.Layer] RETURNS [ob: CD.Object, offset: CD.Position]; <<--Creates a spline object of width "w" (even) connecting the points "points". >> CreatePolygon: PROC [points: LIST OF CD.Position, layer: CD.Layer] RETURNS [ob: CD.Object, offset: CD.Position]; <<--Creates a polygon object using the "points" as border line. >> CreateFilledCurve: PROC [points: LIST OF CD.Position, layer: CD.Layer] RETURNS [ob: CD.Object, offset: CD.Position]; <<--Creates a filled curve object using the "points" as border line. >> <<--All the create procs may return NIL or call CD.Error if restrictions are violated.>> <<--offset: If applied as position to the curve object, it would go through its defining "points".>> <<--[the coordinates of the points in the CurveRec are the original coordinates minus "offset"]>> <<>> END.