<> <> <> <> <> <<>> DIRECTORY GGBasicTypes, GGBoundBox, GGModelTypes, GGSegmentTypes, Imager, ImagerTransformation, TextNode; GGOutline: CEDAR DEFINITIONS = BEGIN BoundBox: TYPE = GGBoundBox.BoundBox; HistoryEvent: TYPE = GGModelTypes.HistoryEvent; Joint: TYPE = GGSegmentTypes.Joint; Point: TYPE = GGBasicTypes.Point; Scene: TYPE = GGModelTypes.Scene; Segment: TYPE = GGSegmentTypes.Segment; SelectionClass: TYPE = GGSegmentTypes.SelectionClass; Sequence: TYPE = GGModelTypes.Sequence; Slice: TYPE = GGModelTypes.Slice; SliceClass: TYPE = GGModelTypes.SliceClass; SliceDescriptor: TYPE = GGModelTypes.SliceDescriptor; SliceDescriptorGenerator: TYPE = GGModelTypes.SliceDescriptorGenerator; SliceGenerator: TYPE = GGModelTypes.SliceGenerator; SliceParts: TYPE = GGModelTypes.SliceParts; SliceWalkProc: TYPE = GGModelTypes.SliceWalkProc; Traj: TYPE = GGModelTypes.Traj; TrajEnd: TYPE = GGModelTypes.TrajEnd; TrajPartType: TYPE = GGModelTypes.TrajPartType; fillColor: Imager.Color; -- calculated in GGOutlineImplA OutlineData: TYPE = REF OutlineDataObj; OutlineDataObj: TYPE = RECORD [ oddWrap: BOOL _ TRUE, fillColor: Imager.Color, fillText: TextNode.Ref, screenStyle: BOOL _ TRUE, -- refers to format of fillText children, ptr: LIST OF Slice, prioritiesValid: BOOL _ FALSE, ptrValid: BOOL _ FALSE, subclassData: REF ANY ]; OutlineParts: TYPE = REF OutlinePartsObj; OutlinePartsObj: TYPE = RECORD [ descriptors: LIST OF SliceDescriptor ]; OutlineHitData: TYPE = REF OutlineHitDataObj; OutlineHitDataObj: TYPE = RECORD [ child: Slice, childHitData: REF ANY ]; <> <<>> CreateOutline: PROC [child: Slice, fillColor: Imager.Color] RETURNS [outline: Slice]; <> AddChild: PROC [outline: Slice, child: Slice] RETURNS [holier: Slice]; ReplaceFirstChild: PROC [outline: Slice, newChild: Slice] RETURNS [newOutline: Slice]; ReplaceChild: PROC [outline: Slice, oldChild, newChild: Slice] RETURNS [newOutline: Slice]; SetWrapRule: PROC [outline: Slice, oddWrap: BOOL]; GetWrapRule: PROC [outline: Slice] RETURNS [oddWrap: BOOL]; SetFillText: PROC [slice: Slice, node: TextNode.Ref, screenStyle: BOOL _ FALSE, history: HistoryEvent]; <> DeleteControlPoints: PROC [outlineD: SliceDescriptor, scene: Scene] RETURNS [bBox: BoundBox]; <> SaveSelectionsInOutlineAllClasses: PROC [outline: Slice]; UnpackHitData: PROC [hitData: REF ANY] RETURNS [child: Slice, hitType: TrajPartType, segNum, cpNum, jointNum: INT, hitPoint: Point]; <> UnpackOneSegmentDescriptor: PROC [outlineD: SliceDescriptor] RETURNS [childDescriptor: SliceDescriptor, segNum: NAT]; <> UnpackSimpleDescriptor: PROC [outlineD: SliceDescriptor] RETURNS [success: BOOL, hitType: TrajPartType, childDescriptor: SliceDescriptor, joint: Joint _ NIL, jointNum: NAT _ 999, cp: Point, cpNum: NAT _ 999, seg: Segment _ NIL, segNum: NAT _ 999]; <> <<>> <> <<>> <> FindTrajShapeInOutline: PROC [traj: Slice, outline: Slice] RETURNS [oldTrajs: LIST OF Slice]; <> TrajsInOutline: PROC [outline: Slice] RETURNS [trajGen: SliceGenerator]; <> TrajectoriesOfOutline: PROC [outline: Slice] RETURNS [trajs: LIST OF Traj _ NIL]; <> ListHoles: PROC [outline: Slice] RETURNS [holesList: LIST OF Slice]; HasHoles: PROC [outline: Slice] RETURNS [BOOL]; <<>> END.