GGRefresh.mesa
Last edited by Bier on November 12, 1986 10:44:05 pm PST
Contents: All painting actions in Gargoyle are called thru this interface.
Pier, January 15, 1986 5:59:07 pm PST
DIRECTORY
GGGravity,
GGInterfaceTypes,
GGModelTypes,
Imager;
GGRefresh: CEDAR DEFINITIONS =
BEGIN
BoundBox: TYPE = GGModelTypes.BoundBox;
FeatureData: TYPE = GGGravity.FeatureData;
Slice: TYPE = GGModelTypes.Slice;
GargoyleData: TYPE = GGInterfaceTypes.GargoyleData;
Outline: TYPE = GGModelTypes.Outline;
SelectionClass: TYPE = GGInterfaceTypes.SelectionClass;
Sequence: TYPE = GGModelTypes.Sequence;
Traj: TYPE = GGModelTypes.Traj;
ActionAreaPaint: PROC [screen: Imager.Context, whatHasChanged: ATOM, gargoyleData: GargoyleData];
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 gargoyleData for now.
We envision a scheme where ActionAreaPaint may actually queue up painting jobs and attempt optimizations on the queue.
MoveToOverlay: PROC [entity: REF ANY, gargoyleData: GargoyleData];
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, gargoyleData: GargoyleData];
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, gargoyleData: GargoyleData];
MoveToBackground: PROC [entity: REF ANY, gargoyleData: GargoyleData];
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 [gargoyleData: GargoyleData, selectClass: SelectionClass];
MoveAllSelectedToBackground: PROC [gargoyleData: GargoyleData];
MoveOverlayToBackground: PROC [gargoyleData: GargoyleData];
EmptyOverlay: PROC [gargoyleData: GargoyleData] RETURNS [BOOL];
SplitBackgroundAndOverlay: PROC [gargoyleData: GargoyleData, restoreBox: BoundBox];
NoteNewForeground: PROC [alignObjects: LIST OF FeatureData, gargoyleData: GargoyleData];
See GGRefreshImpl for the actual refreshing procedures.
Drawing Entities
PaintEntireScene: PROC [screen: Imager.Context, gargoyleData: GargoyleData];
InterpressEntireScene: PROC [dc: Imager.Context, gargoyleData: GargoyleData];
SnapShot: PROC [dc: Imager.Context, gargoyleData: GargoyleData];
Like InterpressEntireScene except it only works while a mouse action is in progress. For action shots.
END.