DIRECTORY CardTab, CedarProcess, Feedback, FeedbackTypes, FunctionCache, GGBasicTypes, GGCircleCache, GGCoreTypes, GGHistoryTypes, GGModelTypes, GGSegmentTypes, Imager, ImagerTransformation, IO, RefTab, Rope, SlackProcessTypes, TIPTypes; GGInterfaceTypes: CEDAR DEFINITIONS = BEGIN BezierDragRecord: TYPE = GGModelTypes.BezierDragRecord; BoundBox: TYPE = GGModelTypes.BoundBox; Camera: TYPE = GGModelTypes.Camera; Circle: TYPE = GGBasicTypes.Circle; DefaultData: TYPE = GGModelTypes.DefaultData; DefaultDataObj: TYPE = GGModelTypes.DefaultDataObj; DisplayStyle: TYPE = GGModelTypes.DisplayStyle; ExtendMode: TYPE = GGModelTypes.ExtendMode; FeatureData: TYPE = GGModelTypes.FeatureData; MsgRouter: TYPE = FeedbackTypes.MsgRouter; HistoryEvent: TYPE = GGModelTypes.HistoryEvent; ImagerProc: TYPE = PROC [dc: Imager.Context]; Line: TYPE = GGCoreTypes.Line; Point: TYPE = GGBasicTypes.Point; QualityMode: TYPE = GGModelTypes.QualityMode; RopeListt: TYPE = GGCoreTypes.RopeListt; Scene: TYPE = GGModelTypes.Scene; Segment: TYPE = GGSegmentTypes.Segment; SelectMode: TYPE = GGModelTypes.SelectMode; Sequence: TYPE = GGModelTypes.Sequence; Slice: TYPE = GGModelTypes.Slice; SliceDescriptor: TYPE = GGModelTypes.SliceDescriptor; SliceGenerator: TYPE = GGModelTypes.SliceGenerator; TouchGroup: TYPE = GGSegmentTypes.TouchGroup; TrajEnd: TYPE = GGModelTypes.TrajEnd; Vector: TYPE = GGBasicTypes.Vector; GGData: TYPE = REF GGDataObj; GGDataObj: TYPE = RECORD [ controls: Controls, -- the control panel controlState: StateData, -- a place to store values when there is no control panel embed: EmbedData, -- data about how Gargoyle is embedded in a window or parent editor router: MsgRouter, -- the textual feedback region (see Feedback.mesa) height: CARDINAL ¬ 0, originalWDir: Rope.ROPE, currentWDir: Rope.ROPE, lastEvents: GGCoreTypes.EventListt, justSawSelect: BOOL ¬ TRUE, mouseMode: ATOM, -- mouseMode and state together form a hierarchical name space of states. (should be moved to DragData) state: ATOM, -- as in mouseMode/state (should be moved to DragData) scene: Scene, -- the collection of objects we are looking at. rootSlice: Slice, -- for storing inheritable properties caret: Caret, anchor: Caret, camera: Camera, drag: DragData, refresh: RefreshData, hitTest: Filters, measure: MeasureData, debug: DebugData, defaults: DefaultData, fitData: FitData, behavior: BehaviorData, history: HistoryData, slackHandle: SlackProcessTypes.SlackHandle, tipTable: TIPTypes.TIPTable, touching: LIST OF TouchGroup, aborted: PACKED ARRAY AbortFlags OF BOOL ¬ ALL[FALSE], -- has the Abort button been pushed recently? multiGravityPool: REF ANY -- temporary storage pool for GGMultiGravity ]; AbortFlags: TYPE = {refresh, playback, gravitytest, bags, filein, spare2, spare3}; MeasureData: TYPE = RECORD [ caret0: Point, caret1: Point, caret2Value: Point, slopeViewValue: REAL, angleViewValue: REAL, radiusViewValue: REAL, lineDistViewValue: REAL ]; DebugData: TYPE = REF DebugDataObj; DebugDataObj: TYPE = RECORD [ lastMessage: Rope.ROPE, writeScriptName: Rope.ROPE, writeScriptStream: IO.STREAM, autoScriptName: Rope.ROPE, autoScriptStream: IO.STREAM, autoScriptActionCount: CARD ¬ 0, lastAutoScriptActionCount: CARD ¬ 0, autoScriptNames: RopeListt, -- in order, the scripts that built this file playScriptName: Rope.ROPE, playScriptStream: IO.STREAM ]; FitData: TYPE = RECORD [ threshold: REAL ¬ 0.5, minDistance: REAL ¬ 0.75, polyPenalty: REAL ¬ 0.75, angle: REAL ¬ 45.0, tolerance: REAL ¬ 2.0, maxIterations: NAT ¬ 5 ]; BehaviorData: TYPE = RECORD [ activeDoc: REF, rawInputMode: ATOM, -- e.g. $None, $Gargoyle, or $Button rawInputState: ATOM, -- in case we need sub-states of rawInputMode savedSelections: LIST OF SliceDescriptor ]; HistoryTool: TYPE = REF HistoryToolObj; HistoryToolObj: TYPE = GGHistoryTypes.HistoryToolObj; HistoryData: TYPE = RECORD [ list: LIST OF HistoryEvent, maxSize: INT ¬ 20, -- desired size of history list currentIndex: INT ¬ 0, -- number for the event in progress currentEvent: HistoryEvent, -- the event in progress tool: HistoryTool, -- history tool advanceProcess: CedarProcess.Process, -- background process for advance capture advanceEvent: HistoryEvent -- event for advance capture ]; DragData: TYPE = REF DragDataObj; DragDataObj: TYPE; -- concrete type in GGDragTypes.DragDataObj; Controls: TYPE = REF ControlsObj; ControlsObj: TYPE; -- concrete type in GGControlPanelTypes.ControlsObj StateData: TYPE = REF StateDataObj; StateDataObj: TYPE; -- concrete type in GGStateTypes.StateDataObj EmbedData: TYPE = REF EmbedDataObj; EmbedDataObj: TYPE; -- concrete type in GGEmbedTypes.EmbedDataObj Caret: TYPE = REF CaretObj; CaretObj: TYPE = RECORD [ exists: BOOL ¬ FALSE, point: Point ¬ [0.0, 0.0], normal: Vector ¬ [0.0, -1.0], chair: SliceDescriptor, attractor: REF -- may be SliceDescriptor, or an AlignmentObject ]; GravityExtentData: TYPE = REF GravityExtentDataObj; GravityExtentDataObj: TYPE = RECORD [ extent: REAL ]; GravityType: TYPE = {linesPreferred, pointsPreferred, facesPreferred}; Filters: TYPE = REF FiltersObj; FiltersObj: TYPE = RECORD [ t: REAL ¬ 25.0, triggerBag: TriggerBag, oldTriggerBag: TriggerBag, oldTriggerBagOK: BOOL ¬ FALSE, alignBag: AlignBag, alignBagIsOldAlignBag: BOOL ¬ FALSE, oldAlignBag: AlignBag, oldAlignBagOK: BOOL ¬ FALSE, sceneBag: TriggerBag, oldSceneBag: TriggerBag, oldSceneBagOK: BOOL ¬ FALSE, gravityType: GravityType ¬ pointsPreferred, hitCount: NAT ¬ 0, scaleUnit: REAL ¬ 72.0, -- value of one scale unit, in screen dots. Initially set to 72.0 (1 inch) horizontalDegrees: REAL -- slope considered horizontal. Initialized to 0 degrees (screen horizontal) ]; RefreshData: TYPE = REF RefreshDataObj; RefreshDataObj: TYPE; TriggerBag: TYPE = REF TriggerBagObj; TriggerBagObj: TYPE = RECORD [ slices: RefTab.Ref, anchor: FeatureData ]; AlignBag: TYPE = REF AlignBagObj; AlignBagObj: TYPE = RECORD [ slopeLineTable: CardTab.Ref, angleLines: LIST OF FeatureData, radiiCircles: LIST OF FeatureData, distanceLines: LIST OF FeatureData, anchor: FeatureData ]; AlignmentLine: TYPE = REF AlignmentLineObj; AlignmentLineObj: TYPE = RECORD [ line: Line, degrees: REAL, triggerPoints: LIST OF Point ¬ NIL ]; AlignmentCircle: TYPE = REF AlignmentCircleObj; AlignmentCircleObj: TYPE = RECORD [ circle: Circle, triggerPoints: LIST OF Point ¬ NIL ]; AlignmentPoint: TYPE = REF AlignmentPointObj; AlignmentPointObj: TYPE = RECORD [ point: Point, tangent: BOOL, -- is this a point of tangency? (for Describe purposes) curve1: FeatureData, curve2: FeatureData ]; SequencePart: TYPE = REF SequencePartObj; SequencePartObj: TYPE = RECORD [ segNum, jointNum, controlPointNum: INT ]; GoodPoint: TYPE = REF GoodPointObj; GoodPointObj: TYPE = RECORD [ dist: REAL, point: Point, normal: Vector, featureData: FeatureData, -- this point hitData: REF ANY, -- a description of this point dimension: [0..2], -- is this from a vertex, edge, or face? priority: INT ¬ 0 -- scene order priority. 0 => in back ]; NearVertexEdgeAndFaces: TYPE = REF NearVertexEdgeAndFacesObj; NearVertexEdgeAndFacesObj: TYPE = RECORD [ things: SEQUENCE len: NAT OF GoodPoint]; FeatureCycler: TYPE = REF FeatureCyclerObj; FeatureCyclerObj: TYPE = RECORD [ nearVEF: NearVertexEdgeAndFaces, count: NAT, index: INTEGER, testPoint: Point ]; END. @ GGInterfaceTypes.mesa Contents: Types used by the Gargoyle interface level. Copyright Σ 1985, 1986, 1987, 1988, 1992 by Xerox Corporation. All rights reserved. Pier, July 21, 1989 4:15:58 pm PDT Maureen Stone, October 2, 1987 11:56:31 am PDT Bier, February 5, 1993 1:36 pm PST Doug Wyatt, April 16, 1992 5:23 pm PDT This is the data which is passed to Gargoyle whenever a user event occurs. This REF is stored in the "data" field of both the GargoyleContainer and the ActionArea. Caret Object Hit Testing Refresh (data structures to help update the screen) Bags Κ <•NewlineDelimiter –(cedarcode) style™code™KšΟnœ-™5Kšœ ΟeœI™TKšœ"™"K™.K™"K™&K™—šΟk ˜ Jšœ΅Ÿœ,˜γK˜—KšœŸœŸ œŸ˜+˜KšœŸœ!˜7Kšœ Ÿœ˜'KšœŸœ˜#KšœŸœ˜#Kšœ Ÿœ˜-KšœŸœ˜3KšœŸœ˜/Kšœ Ÿœ˜+Kšœ Ÿœ˜-Kšœ Ÿœ˜*KšœŸœ˜/Kšœ ŸœŸœ˜-KšœŸœ˜KšœŸœ˜!Kšœ Ÿœ˜-Kšœ Ÿœ˜(KšœŸœ˜!Kšœ Ÿœ˜'Kšœ Ÿœ˜+Kšœ Ÿœ˜'KšœŸœ˜!KšœŸœ ˜5KšœŸœ˜3Kšœ Ÿœ˜-Kšœ Ÿœ˜%KšœŸœ˜#K˜—šΟbœŸœŸœ ˜KšœQŸœP™€—šœ ŸœŸœ˜Kšœ  œΟc˜(Kšœ  œ‘9˜RKšœ  œ‘C˜UKšœ‘2˜EKšœ Ÿœ˜KšœŸœ˜KšœŸœ˜Kšœ#˜#KšœŸœŸœ˜Kšœ Ÿœ‘h˜yKšœŸœ‘6˜CKšœ‘/˜>Kšœ‘%˜7Kšœ œ˜ Kšœ œ˜Kšœ œ˜Kšœ œ˜Kšœ   œ˜Kšœ  œ˜Kšœ   œ˜Kšœ  œ˜Kšœ   œ˜Kšœ  œ˜Kšœ   œ˜Kšœ   œ˜K˜+K˜Kšœ ŸœŸœ ˜Kšœ ŸœŸœ ŸœŸœŸœŸœ‘-˜dKšœŸœŸœ‘-˜GKšœ˜—K˜š  œŸœB˜RK˜—š  œŸœŸœ˜Kšœ˜Kšœ˜Kšœ˜KšœŸœ˜KšœŸœ˜KšœŸœ˜KšœŸ˜K˜K˜—Kš  œŸœŸœ˜#š  œŸœŸœ˜KšœŸœ˜KšœŸœ˜KšœŸœŸœ˜KšœŸœ˜KšœŸœŸœ˜KšœŸœ˜ KšœŸœ˜$Kšœ‘-˜IKšœŸœ˜KšœŸœŸ˜K˜K˜—š œŸœŸœ˜Kšœ Ÿœ˜Kšœ Ÿœ˜Kšœ Ÿœ˜KšœŸœ˜Kšœ Ÿœ˜KšœŸœ˜K˜K˜—š  œŸœŸœ˜Kšœ Ÿœ˜KšœŸœ&˜8KšœŸœ‘-˜BKšœŸœŸœ˜(K˜K˜—Kšœ ŸœŸœ˜'šœŸœ!˜5K˜—š  œŸœŸœ˜KšœŸœŸœ˜Kšœ Ÿœ‘˜2KšœŸœ‘#˜:Kšœ‘˜4Kšœ‘˜"Kšœ&‘)˜OKšœ‘˜7K˜—K˜Kšœ ŸœŸœ ˜!Kšœ Ÿœ‘,˜?K˜Kšœ ŸœŸœ ˜!Kšœ Ÿœ‘3˜FK˜Kšœ ŸœŸœ˜#KšœŸœ‘-˜AK˜Kšœ ŸœŸœ˜#KšœŸœ‘-˜AK˜š  ™ K˜—Kš œŸœŸœ ˜š œŸœŸœ˜KšœŸœŸœ˜K˜K˜Kšœ˜Kšœ Ÿœ‘0˜?K˜—K™š  ™ K˜—Kš œŸœŸœ˜3šœŸœŸœ˜%KšœŸ˜ K˜K˜—Kš  œŸœ5˜FKš œŸœŸœ ˜š  œŸœŸœ˜KšœŸœ˜Kšœ˜Kšœ˜KšœŸœŸœ˜Kšœ˜KšœŸœŸœ˜$Kšœ˜KšœŸœŸœ˜Kšœ˜Kšœ˜KšœŸœŸœ˜K˜+Kšœ Ÿœ˜Kšœ Ÿœ ‘K˜cKšœŸœ‘M˜eK˜—K˜š œ,™3K™—Kšœ ŸœŸœ˜'KšœŸœ˜K˜š ™K™—Kš  œŸœŸœ˜%š  œŸœŸœ˜Kšœ˜Kšœ˜Kšœ˜K˜—Kš œŸœŸœ ˜!š  œŸœŸœ˜Kšœ˜Kšœ ŸœŸœ ˜ KšœŸœŸœ ˜"KšœŸœŸœ ˜#Kšœ˜K˜—K˜Kš  œŸœŸœ˜+š œŸœŸœ˜!K˜ Kšœ Ÿœ˜KšœŸœŸœ Ÿ˜"K˜K˜—Kš œŸœŸœ˜/š œŸœŸœ˜#K˜KšœŸœŸœ Ÿ˜"K˜K˜—Kš œŸœŸœ˜-š œŸœŸœ˜"K˜ Kšœ Ÿœ‘8˜GKšœ˜Kšœ˜Kšœ˜—K˜Kš  œŸœŸœ˜)š œŸœŸœ˜ Kšœ#Ÿ˜&K˜K˜—Kš  œŸœŸœ˜#š  œŸœŸœ˜KšœŸœ˜ K˜ K˜Kšœ‘ ˜'Kšœ ŸœŸœ‘˜0Kšœ‘(˜;Kšœ Ÿœ‘%˜7K˜K˜—Kš œŸœŸœ˜=š œŸœŸœ˜*KšœŸœŸœŸœ ˜(K˜—Kš  œŸœŸœ˜+š œŸœŸœ˜!Kšœ ˜ KšœŸœ˜ KšœŸœ˜K˜K˜—K˜KšŸœ˜—…—|(ψ