<> <> <> <> <> <<>> DIRECTORY GGBasicTypes, GGBoundBox, GGInterfaceTypes, GGModelTypes, GGSegmentTypes; GGCaret: CEDAR DEFINITIONS = BEGIN Caret: TYPE = GGInterfaceTypes.Caret; CaretOn: TYPE = GGInterfaceTypes.CaretOn; GargoyleData: TYPE = GGInterfaceTypes.GargoyleData; 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, gargoyleData: GargoyleData] RETURNS [box: GGBoundBox.BoundBox]; -- returns NIL if caret not either gargoyleData.caret or gargoyleData.anchor <<>> <> TellOnOverlay: PROC [caret: Caret, onOverlay: BOOL]; IsOnOverlay: PROC [caret: Caret] RETURNS [BOOL]; <> SitOn: PROC [caret: Caret, chair: REF ANY]; GetChair: PROC [caret: Caret] RETURNS [chair: REF ANY]; SittingOnEnd: PROC [caret: Caret] RETURNS [BOOL]; <> SetAttractor: PROC [caret: Caret, point: Point, attractor: REF ANY]; <> NoAttractor: PROC [caret: Caret]; <> GetAttractor: PROC [caret: Caret] RETURNS [attractor: REF ANY]; GetPoint: PROC [caret: Caret] RETURNS [point: Point]; END.