<> <> <> <> DIRECTORY ViewerClasses USING [Viewer, ViewerRec], Imager USING [Context]; SampledCurveEdit: CEDAR DEFINITIONS ~ BEGIN Viewer: TYPE ~ ViewerClasses.Viewer; PointKind: TYPE ~ {sample, knot, corner, open}; <> <> <> <> MarkedPoint: TYPE ~ RECORD [ x, y: REAL, isHeader: BOOLEAN _ FALSE, kind: PointKind ]; PointList: TYPE ~ LIST OF MarkedPoint; Trajectory: TYPE ~ PointList; <> Outline: TYPE ~ LIST OF Trajectory; <> PointModifier: TYPE = REF PointModifierRep; PointModifierRep: TYPE = RECORD [ pointModifyProc: PointModifyProc, data: REF ]; PointModifyProc: TYPE ~ PROC [self: PointModifier, pointList: PointList, count: INT] RETURNS [changed: BOOLEAN _ TRUE, newCount: INT _ -1]; <> <> <= 0, the selection count is altered.>> RegisterPointModifer: PROC [atom: ATOM, pointModifier: PointModifier]; <> CopyTrajectory: PROC [trajectory: Trajectory] RETURNS [Trajectory]; MalformedTrajectory: ERROR; CopyOutline: PROC [outline: Outline] RETURNS [Outline]; GetOutline: PROC [viewer: Viewer] RETURNS [Outline]; <> ObtainOutline: PROC [viewer: Viewer] RETURNS [Outline]; <> SetOutline: PROC [viewer: Viewer, outline: Outline]; <> CreateViewer: PROC [info: ViewerClasses.ViewerRec] RETURNS [Viewer]; UserPaint: TYPE ~ REF UserPaintRec; UserPaintRec: TYPE = RECORD[ proc: PROC [context: Imager.Context, data: REF], data: REF ]; RegisterUserPaint: PROC [viewer: Viewer, userPaint: UserPaint]; <> <<>> NotifyUserPaint: PROC [viewer: Viewer, userPaint: UserPaint]; <> <<>> AddMenuItem: PROC [viewer: Viewer, atom: ATOM]; <> END.