<> <> <> <> <> <<>> DIRECTORY GGBasicTypes, GGBoundBox, GGInterfaceTypes, GGModelTypes, GGSegmentTypes; GGCaret: CEDAR DEFINITIONS = BEGIN Caret: TYPE = GGInterfaceTypes.Caret; CaretOn: TYPE = GGInterfaceTypes.CaretOn; GGData: TYPE = GGInterfaceTypes.GGData; Joint: TYPE = GGModelTypes.Joint; Point: TYPE = GGBasicTypes.Point; Segment: TYPE = GGSegmentTypes.Segment; Sequence: TYPE = GGModelTypes.Sequence; SliceDescriptor: TYPE = GGModelTypes.SliceDescriptor; Traj: TYPE = GGModelTypes.Traj; caretWidth: REAL = 6.0; caretHeight: REAL = 8.0; anchorWidth: REAL = 16.0; anchorHeight: REAL = 16.0; <> <> <> <> <> <> <<>> Copy: PROC [to, from: Caret]; <> Kill: PROC [caret: Caret]; <> <<>> Exists: PROC [caret: Caret] RETURNS [BOOL]; BoundBoxOfCaret: PROC [caret: Caret, ggData: GGData] RETURNS [box: GGBoundBox.BoundBox]; -- returns NIL if caret not either ggData.caret or ggData.anchor <<>> <> <> <> <> SitOn: PROC [caret: Caret, chair: SliceDescriptor]; GetChair: PROC [caret: Caret] RETURNS [chair: SliceDescriptor]; SittingOnEnd: PROC [caret: Caret] RETURNS [BOOL]; <> SetAttractor: PROC [caret: Caret, point: Point, attractor: SliceDescriptor]; <> NoAttractor: PROC [caret: Caret]; <> GetAttractor: PROC [caret: Caret] RETURNS [attractor: SliceDescriptor]; GetPoint: PROC [caret: Caret] RETURNS [point: Point]; END.