<> <> DIRECTORY ViewerClasses, ViewerOps; SampledCurveEdit: CEDAR DEFINITIONS IMPORTS ViewerOps ~ 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]; <> <> RegisterPointModifer: PROC [atom: ATOM, pointModifier: PointModifier]; <> AddMenuItem: PROC [atom: ATOM]; <> 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]; <> NewTIP: PROC; <> CreateViewer: PROC [info: ViewerClasses.ViewerRec] RETURNS [Viewer] ~ INLINE { RETURN [ViewerOps.CreateViewer[$SampledCurveEdit, info]]; }; END.