DIRECTORY CardTab, CedarProcess, Feedback, FeedbackTypes, FunctionCache, GGBasicTypes, GGCircleCache, GGCoreTypes, GGHistoryTypes, GGModelTypes, GGSegmentTypes, Imager, ImagerTransformation, IO, RefTab, Rope, SlackProcessTypes, TIPPrivate; 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, parseInfo: TIPPrivate.TIPParseInfo, 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. 8GGInterfaceTypes.mesa Contents: Types used by the Gargoyle interface level. Copyright Σ 1985, 1986, 1987, 1988 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, March 4, 1992 7:27 pm PST Doug Wyatt, June 17, 1988 4:18:42 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 Κ ˜Icode™šΟnœ-™5KšœN™NKšœ"™"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šžœ˜—…—†(Ρ