GGRefresh.mesa
Last edited by Bier on March 24, 1987 11:18:38 pm PST
Contents: All painting actions in Gargoyle are called thru this interface.
Pier, May 12, 1987 3:47:27 pm PDT
DIRECTORY
BufferedRefresh, GGGravity, GGInterfaceTypes, GGModelTypes, Imager;
GGRefresh: CEDAR DEFINITIONS =
BEGIN
BoundBox: TYPE = GGModelTypes.BoundBox;
FeatureData: TYPE = GGGravity.FeatureData;
Slice: TYPE = GGModelTypes.Slice;
SliceDescriptor: TYPE = GGModelTypes.SliceDescriptor;
GGData: TYPE = GGInterfaceTypes.GGData;
Outline: TYPE = GGModelTypes.Outline;
Sandwich: TYPE = BufferedRefresh.Sandwich;
SelectionClass: TYPE = GGInterfaceTypes.SelectionClass;
Sequence: TYPE = GGModelTypes.Sequence;
Traj: TYPE = GGModelTypes.Traj;
CreateSandwich: PROC [] RETURNS [sandwich: Sandwich];
ActionAreaPaint: PROC [screen: Imager.Context, whatHasChanged: ATOM, ggData: GGData];
whatToDo will be an atom describing a painting action such as $EraseControlPoint, $PaintControlPoint, $EraseAllControlPoints, $EraseAll, $PaintEntireScene, or $PaintTrajectory. A pointer to the particular object to be repainted will be stored in ggData for now.
We envision a scheme where ActionAreaPaint may actually queue up painting jobs and attempt optimizations on the queue.
MoveToOverlay: PROC [sliceD: SliceDescriptor, ggData: GGData];
This entity is now on the overlay plane (for dragging or rubberbanding). The entity may be an outline, a slice, or the caret. If a Traj or Sequence is passed, the whole outline to which they belong will be moved.
MoveJointsToOverlay: PROC [traj: Traj, ggData: GGData];
A trajectory in the overlay plane is interpreted to mean that the trajectory's joints are to be painted on the overlay plane (for use in selection feedback).
RemoveJointsFromOverlay: PROC [traj: Traj, ggData: GGData];
MoveToBackground: PROC [sliceD: SliceDescriptor, ggData: GGData];
This entity is now on the background (normal plane), staying put. The entity may be an outline, a slice, the caret, or special alignment lines and symmetry tools.
MoveAllSelectedToOverlay: PROC [ggData: GGData, selectClass: SelectionClass];
MoveAllSelectedToBackground: PROC [ggData: GGData];
MoveOverlayToBackground: PROC [ggData: GGData];
EmptyOverlay: PROC [ggData: GGData] RETURNS [BOOL];
SplitBackgroundAndOverlay: PROC [ggData: GGData, restoreBox: BoundBox];
NoteNewForeground: PROC [alignObjects: LIST OF FeatureData, ggData: GGData];
UpdateForegroundForMotion: PROC [ggData: GGData];
See GGRefreshImpl for the actual refreshing procedures.
Drawing Entities
PaintEntireScene: PROC [screen: Imager.Context, ggData: GGData, showColors: BOOL];
InterpressEntireScene: PROC [dc: Imager.Context, ggData: GGData];
SnapShot: PROC [dc: Imager.Context, ggData: GGData];
Like InterpressEntireScene except it only works while a mouse action is in progress. For action shots.
END.