DIRECTORY GGBasicTypes, GGBoundBox, GGModelTypes, GGSegmentTypes, GGTrajTypes, Imager, ImagerTransformation, TextNode; GGOutline: CEDAR DEFINITIONS = BEGIN BoundBox: TYPE = GGBoundBox.BoundBox; HistoryEvent: TYPE = GGModelTypes.HistoryEvent; Joint: TYPE = GGSegmentTypes.Joint; Point: TYPE = GGBasicTypes.Point; RunProc: TYPE = GGTrajTypes.RunProc; 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]; ReplaceRunsInOutline: PROC [outlineD: SliceDescriptor, runProc: RunProc, segmentsOnly: BOOL ¬ TRUE, selectNewRuns: BOOL ¬ FALSE] RETURNS [newOutline: Slice ¬ NIL]; 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.   GGOutline.mesa Contents: Procedures to implement the Outline Slice Class in Gargoyle. Outlines consist of a list of Slices, many of which are often of class Traj. Copyright Σ 1986, 1987, 1992 by Xerox Corporation. All rights reserved. Pier, July 15, 1988 1:31:39 pm PDT Bier, January 28, 1993 3:11 pm PST The Outline Slice Class CreateOutline creates a simple outline with a single child. sets fill and flows data into children. Restricted to outline with all children of type $Box. Deletes selected control points and returns bounding box of area requiring refresh. hitType, segNum, cpNum, jointNum, hitPoint only valid if GetType[child]=$Traj segNum only valid if GetType[childDescriptor.slice]=$Traj partType, joint, jointNum, cp, cpNum, seg, segNum only valid if GetType[childDescriptor.slice]=$Traj Queries about Outlines Looks through the children of outline to see if any of the shapes match, control point for control point and coordinate for the coordinate, the traj entry. If so, return all such trajectories that match. Returns a generator of those children of "outline" that are of class $Traj. Like TrajsInOutline but returns a list (used by MatchTool). Κ–(cedarcode) style•NewlineDelimiter ™codešœ™KšΟnœ™•Kšœ Οeœ=™HKšœ"™"K™"K™—šΟk ˜ J˜l—K˜š œŸœŸ œŸ˜$K˜Kšœ Ÿœ˜%KšœŸœ˜/KšœŸœ˜#KšœŸœ˜!Kšœ Ÿœœœœ˜$KšœŸœ˜!Kšœ Ÿœ˜'KšœŸœ!˜5Kšœ Ÿœ˜'KšœŸœ˜!Kšœ Ÿœ˜+KšœŸœ ˜5KšœŸœ)˜GKšœŸœ˜3Kšœ Ÿœ˜+KšœŸœ˜1KšœŸœ˜Kšœ Ÿœ˜%KšœŸœ˜/—K˜KšœΟc˜8K˜Kšœ ŸœŸœ˜'šœŸœŸœ˜Kšœ ŸœŸœ˜Kšœ˜Kšœ˜Kšœ ŸœŸœ ˜9KšœŸœŸœ˜KšœŸœŸœ˜Kšœ ŸœŸœ˜KšœŸœŸ˜K˜—KšœŸœŸœ˜)šœŸœŸœ˜ Kšœ ŸœŸœ˜$K˜—KšœŸœŸœ˜-šœŸœŸœ˜"Kšœ ˜ KšœŸœŸ˜Kšœ˜—K˜™K™—š œŸœ)Ÿœ˜UKšœ;™;—KšœŸœ Ÿœ˜FKšœŸœ#Ÿœ˜VKš œŸœ-Ÿœ˜[KšœŸœ=ŸœŸœŸœŸœŸœŸœ˜£Kš œŸœŸœ˜2Kš œŸœŸœ Ÿœ˜;š œŸœ1ŸœŸœ˜gK™^—K˜šœŸœ+Ÿœ˜]K™S—Kš!œŸœ˜9K˜š  œŸœ ŸœŸœŸœ@Ÿœ˜„KšœM™M—šœŸœŸœ,Ÿœ˜uKšœ9™9—šœŸœŸœ ŸœJŸœ ŸœŸœŸœ Ÿœ˜χKšœd™d—K™šœΟb™K™—Kš œŸœŸœ+Ÿœ ˜ˆš œŸœŸœ ŸœŸœ˜]KšœΜ™Μ—šœŸœŸœ˜HK™K—š œŸœŸœ ŸœŸœŸœ˜QKšœ;™;—Kš  œŸœŸœ ŸœŸœ˜DKšœŸœŸœŸœ˜/K™KšŸœ˜—…— Ž½