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. š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 by Xerox Corporation. All rights reserved. Pier, July 15, 1988 1:31:39 pm PDT Bier, June 26, 1989 9:34:30 pm PDT 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). Κ/˜Icodešœ™šΟnœ™•KšœB™BKšœ"™"K™"—K™šΟk ˜ Jšœ_˜_—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š œžœžœ˜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šžœ˜—…— Έ