DIRECTORY BiScrollers, Buttons, GGBasicTypes, AtomButtons, GGCircleCache, GGModelTypes, GGSegmentTypes, Imager, ImagerBackdoor, ImagerPixelMap, ImagerTransformation, IO, Menus, Rope, SlackProcess, TiogaButtons, ViewerClasses; GGInterfaceTypes: CEDAR DEFINITIONS = BEGIN BoundBox: TYPE = GGModelTypes.BoundBox; Circle: TYPE = GGBasicTypes.Circle; EntityGenerator: TYPE = GGModelTypes.EntityGenerator; ExtendMode: TYPE = GGModelTypes.ExtendMode; FeatureData: TYPE = GGModelTypes.FeatureData; GargoyleContainer: TYPE = Viewer; ImagerProc: TYPE = PROC [dc: Imager.Context]; Line: TYPE = GGBasicTypes.Line; Outline: TYPE = GGModelTypes.Outline; OutlineDescriptor: TYPE = GGModelTypes.OutlineDescriptor; Point: TYPE = GGBasicTypes.Point; Scene: TYPE = GGModelTypes.Scene; Segment: TYPE = GGSegmentTypes.Segment; SelectMode: TYPE = GGModelTypes.SelectMode; Sequence: TYPE = GGModelTypes.Sequence; Slice: TYPE = GGModelTypes.Slice; SliceDescriptor: TYPE = GGModelTypes.SliceDescriptor; TouchGroup: TYPE = GGSegmentTypes.TouchGroup; Traj: TYPE = GGModelTypes.Traj; Vector: TYPE = GGBasicTypes.Vector; Viewer: TYPE = ViewerClasses.Viewer; CaretOn: TYPE = {nothing, joint, cp, seg, slice, spare1, spare2}; Caret: TYPE = REF CaretObj; CaretObj: TYPE = RECORD [ exists: BOOL _ FALSE, point: Point _ [0.0,0.0], chair: REF ANY _ NIL, -- an OutlineDescriptor or SliceDescriptor attractor: REF ANY _ NIL, -- an OutlineDescriptor or SliceDescriptor onOverlay: BOOL _ FALSE ]; DisplayStyle: TYPE = GGModelTypes.DisplayStyle; QualityMode: TYPE = GGModelTypes.QualityMode; CameraData: TYPE = GGModelTypes.CameraData; DragData: TYPE = RECORD [ startPoint: Point _ [0.0, 0.0], currentPoint: Point _ [0.0, 0.0], -- maintained by MouseEvent Procs savedCaret: Caret, -- needed to recover from Abort operations seqInProgress: Sequence, boxInProgress: SliceDescriptor, -- needed by Start/During/End Box procs to pass along new box transform: ImagerTransformation.Transformation, selectState: SelectMode _ joint, -- what are we in the process of selecting? extendMode: ExtendMode _ joint, -- what are we extending to? outlineToExtend: OutlineDescriptor _ NIL, sliceToExtend: SliceDescriptor _ NIL ]; RefreshData: TYPE = RECORD [ suppressRefresh: BOOL _ FALSE, paintAction: ATOM, showColors: AtomButtons.TwoState, screenStyle: AtomButtons.EnumTypeRef, alignments: AtomButtons.TwoState, foregroundBitmap: ImagerBackdoor.Bitmap _ NIL, foregroundPixelMap: ImagerPixelMap.PixelMap, foregroundContext: Imager.Context _ NIL, -- derived from foregroundBitmap foregndBitmapOK: BOOL _ FALSE, backgroundBitmap: ImagerBackdoor.Bitmap _ NIL, backgroundPixelMap: ImagerPixelMap.PixelMap, backgroundContext: Imager.Context _ NIL, -- derived from background map backgndBitmapOK: BOOL _ FALSE, chunkingBitmap: ImagerBackdoor.Bitmap _ NIL, chunkingPixelMap: ImagerPixelMap.PixelMap, chunkingContext: Imager.Context _ NIL, -- derived from chunking map spotPoint: Point _ [0.0, 0.0], -- For Gravity Testing hitPoint: Point _ [0.0, 0.0], -- For Gravity Testing overlayList: LIST OF REF ANY, orderedOverlayList: LIST OF REF ANY, -- maintained by routines in GGRefreshImpl. NIL => must rebuild ordered list addedObject: REF ANY _ NIL, -- used to implement GGRefresh.FinishedAdding recentFeature: FeatureData _ NIL, -- maintained by DuringSelect routines. Most recently hit feature. Could be used for refresh optimization of ExtendSelection. startBoundBox: BoundBox _ NIL, textInProgress: Slice _ NIL -- text slice to be updated by AddChar if nonNil. Any mouse click makes this NIL, completing typein. A character typed when isNIL starts a new textInProgress ]; GravityType: TYPE = {strictDistance, innerCircle, off}; Filters: TYPE = REF FiltersObj; FiltersObj: TYPE = RECORD [ tolerance: REAL _ 25.0, -- the tolerance for hit testing criticalR: REAL _ 25.0, -- see GGGravity.Map innerR: REAL _ 12.0, -- see GGGravity.InnerCircle currentTriggerBag: TriggerBag, currentObjectBag: ObjectBag, sceneTriggerBag: TriggerBag, hitCount: NAT _ 0, gravityType: GravityType, gravityTypeMenu: AtomButtons.EnumTypeRef, -- initialized in GGWindowImpl gravityExtentButton: GraphicsState, gravButton: AtomButtons.TwoState, midpointButton: AtomButtons.TwoState, heuristicsButton: AtomButtons.TwoState, slopeHeader: AtomButtons.ScalarButtonHandle, slopeCount: NAT _ 0, angleHeader: AtomButtons.ScalarButtonHandle, angleCount: NAT _ 0, radiusHeader: AtomButtons.ScalarButtonHandle, radiusCount: NAT _ 0, radiusCircleCache: GGCircleCache.Cache, distanceHeader: AtomButtons.ScalarButtonHandle, distanceCount: 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) ]; MeasureData: TYPE = RECORD [ caret0: Point, caret1: Point, caret2Value: Point, caret2: Viewer, slopeViewValue: REAL, slopeView: Viewer, angleViewValue: REAL, angleView: Viewer, radiusViewValue: REAL, radiusView: Viewer, lineDistViewValue: REAL, lineDistView: Viewer ]; DebugData: TYPE = RECORD [ typescript: Viewer, typescriptIn: IO.STREAM, typescriptOut: IO.STREAM, lastMessage: Rope.ROPE _ NIL, logFileName: Rope.ROPE, logStream: IO.STREAM ]; SelectionClass: TYPE = GGSegmentTypes.SelectionClass; AbortFlags: TYPE = {refresh, playback, gravitytest, bags, spare2, spare3}; GargoyleData: TYPE = REF GargoyleDataObj; GargoyleDataObj: TYPE = RECORD [ outer: GargoyleContainer _ NIL, biScroller: BiScrollers.BiScroller, actionArea: Viewer _ NIL, -- the inner viewer of a BiScroller feedback: Viewer _ NIL, -- the textual feedback region (a label) height: CARDINAL _ 0, yBounded: LIST OF Viewer _ NIL, -- used in GGContainerImpl for viewer resizing. xBounded: LIST OF Viewer _ NIL, originalWDir: Rope.ROPE, currentWDir: Rope.ROPE, mouseMode: ATOM, -- mouseMode and state together form a hierarchical name space of states. state: ATOM, -- as in mouseMode/state scene: Scene, -- the collection of objects we are looking at. caret: Caret, anchor: Caret, camera: CameraData, drag: DragData, refresh: RefreshData, hitTest: Filters, measure: MeasureData, debug: DebugData, slackHandle: SlackProcess.SlackHandle, touching: LIST OF TouchGroup, aborted: PACKED ARRAY AbortFlags OF BOOL _ ALL[FALSE], -- has the Abort button been pushed recently? gravityPool: REF ANY, -- temporary storage pool for GGGravity multiGravityPool: REF ANY -- temporary storage pool for GGMultiGravity ]; GraphicsState: TYPE = REF GraphicsStateObj; GraphicsStateObj: TYPE = RECORD [ button: ViewerClasses.Viewer _ NIL, value: REAL, clientData: REF ANY, atom: ATOM ]; TriggerBag: TYPE = REF TriggerBagObj; TriggerBagObj: TYPE = RECORD [ outlines: LIST OF FeatureData, slices: LIST OF FeatureData, intersectionPoints: LIST OF FeatureData, anchor: FeatureData ]; ObjectBag: TYPE = REF ObjectBagObj; ObjectBagObj: TYPE = RECORD [ slopeLines: LIST OF FeatureData, angleLines: LIST OF FeatureData, radiiCircles: LIST OF FeatureData, distanceLines: LIST OF FeatureData, midpoints: LIST OF FeatureData, intersectionPoints: LIST OF 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 ]; END. ΚGGInterfaceTypes.mesa Last edited by: Eric Bier on January 28, 1987 2:46:45 pm PST Copyright c 1985, 1986 by Xerox Corporation. All rights reserved. Contents: Types used by the Gargoyle interface level. Pier, November 21, 1986 10:47:09 am PST following bitmaps/pixelmaps are resized whenever window changes size e.g. when a new selection is made, the old selected objects must be updated. This box bounds the old selected objects. slopeText: Viewer, angleText: Viewer, radiusText: Viewer, distanceText: Viewer, 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. Graphics Button Hit Testing Κ Z˜Icode™K™Kšœ’œ˜ Kšœ’œ˜Kšœ’ œ˜Kšœ’œ˜Kšœ ’ œ˜Kšœ ’œ˜Kšœ ’ œ˜Kšœ’ œ˜K˜&Kšœ žœžœ ˜Kšœ žœžœ žœžœžœžœ -˜dKšœ žœžœ (˜>Kšœžœžœ -˜GKšœ˜—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šœžœžœ˜/šœžœžœ˜#K˜Kšœžœžœ ž˜"K˜—Kšœžœžœ˜-šœžœžœ˜"K˜ Kšœ žœ 8˜GKšœ˜Kšœ˜Kšœ˜K˜—Kšœžœžœ˜)šœžœžœ˜ Kšœ#ž˜&K˜—K˜Kšžœ˜—…—*2