GGRefresh.mesa
Last edited by Bier on October 17, 1985 2:33:20 pm PDT
Contents: All painting actions in Gargoyle are called thru this interface.
DIRECTORY
GGInterfaceTypes,
GGModelTypes,
Imager;
GGRefresh: CEDAR DEFINITIONS =
BEGIN
Cluster: TYPE = GGModelTypes.Cluster;
GargoyleData: TYPE = GGInterfaceTypes.GargoyleData;
Outline: TYPE = GGModelTypes.Outline;
SelectionClass: TYPE = GGInterfaceTypes.SelectionClass;
Sequence: TYPE = GGModelTypes.Sequence;
Traj: TYPE = GGModelTypes.Traj;
ActionAreaPaint: PROC [dc: Imager.Context, whatToDo: 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 cluster, 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 cluster, 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];
StoreBackground: PROC [gargoyleData: GargoyleData];
See GGRefreshImpl for the actual refreshing procedures.
Drawing Entities
DrawCluster: PROC [dc: Imager.Context, cluster: Cluster, gargoyleData: GargoyleData];
DrawOutline: PROC [dc: Imager.Context, outline: Outline, gargoyleData: GargoyleData];
DrawTraj: PROC [dc: Imager.Context, traj: Traj, gargoyleData: GargoyleData];
DrawSequence: PROC [dc: Imager.Context, seq: Sequence, gargoyleData: GargoyleData];
PaintEntireScene: PROC [dc: Imager.Context, gargoyleData: GargoyleData];
InterpressEntireScene: PROC [dc: Imager.Context, gargoyleData: GargoyleData];
Like PaintEntireScene but doesn't try to clear to white first.
END.