GGRefreshTypes.mesa
Copyright Ó 1988, 1992 by Xerox Corporation. All rights reserved.
Bier, August 17, 1992 10:07 pm PDT
Kenneth A. Pier, August 18, 1992 2:11 pm PDT
Contents: Optimizing Gargoyle refresh is an on-going process requiring new data structures. The real concrete types of this data structures are defined here so that changing them will not require recompiling GGInterfaceTypes
DIRECTORY
<<BufferedRefresh,>> CardTab, GGBasicTypes, GGCoreTypes, GGInterfaceTypes, GGModelTypes, Imager, ImagerTransformation;
GGRefreshTypes: CEDAR DEFINITIONS = BEGIN
BoundBox: TYPE = GGCoreTypes.BoundBox;
FeatureData: TYPE = GGModelTypes.FeatureData;
GGData: TYPE = GGInterfaceTypes.GGData;
Point: TYPE = GGBasicTypes.Point;
Sandwich: TYPE = REF SandwichObj;
SandwichObj: TYPE; -- opaque so GGRefresh doesn't depend on BufferedRefresh
Slice: TYPE = GGModelTypes.Slice;
SliceDescriptor: TYPE = GGModelTypes.SliceDescriptor;
PaintProc: TYPE = PROC [ggData: GGData, request: REF ¬ NIL, bounds: BoundBox, clientData: REF ¬ NIL];
RefreshDataObj: TYPE = RECORD [
oldTransform: ImagerTransformation.Transformation,
suppressRefresh: BOOL ¬ FALSE,
suppressScreen: BOOL ¬ FALSE, -- allows painting layer update but no screen refresh
paintAction: ATOM,
sandwich: Sandwich,
clientToViewer: ImagerTransformation.Transformation, -- remembers BiScroller to allow reuse of sandwich when window opens anew
lineCache: CardTab.Ref, -- remembers which lines have been drawn in Foreground
savedLineTable: CardTab.Ref,
dragInProgress: BOOL ¬ FALSE,
caretIsMoving: BOOL ¬ FALSE,
spotPoint: Point ¬ [0.0, 0.0], -- For Gravity Testing
hitPoint: Point ¬ [0.0, 0.0], -- For Gravity Testing
overlayList: LIST OF SliceDescriptor,
orderedOverlayList: LIST OF SliceDescriptor, -- maintained by routines in GGRefreshImpl. NIL => must rebuild ordered list
addedObject: Slice, -- used to implement GGRefresh.FinishedAdding
recentFeature: FeatureData, -- maintained by DuringSelect routines. Most recently hit feature. Could be used for refresh optimization of ExtendSelection.
startBoundBox: BoundBox, -- being phased out
paintBox: BoundBox, -- aggregate bound box for the latest refresh call
beforeBox: BoundBox, -- old selections, attractor feedback, caret, or anchor are within this box
totalBox: BoundBox, -- accumulated bounding boxes since refresh was turned off.
textInProgress: Slice, -- 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
areaFollowColorTool: BOOL ¬ FALSE,
lineFollowColorTool: BOOL ¬ FALSE,
other: REF ANY -- for extensibility
];
END.