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]; MoveToOverlay: PROC [entity: REF ANY, gargoyleData: GargoyleData]; MoveJointsToOverlay: PROC [traj: Traj, gargoyleData: GargoyleData]; RemoveJointsFromOverlay: PROC [traj: Traj, gargoyleData: GargoyleData]; MoveToBackground: PROC [entity: REF ANY, gargoyleData: GargoyleData]; 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]; PaintEntireScene: PROC [screen: Imager.Context, gargoyleData: GargoyleData]; InterpressEntireScene: PROC [dc: Imager.Context, gargoyleData: GargoyleData]; SnapShot: PROC [dc: Imager.Context, gargoyleData: GargoyleData]; END. 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 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. 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. 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). 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. See GGRefreshImpl for the actual refreshing procedures. Drawing Entities Like InterpressEntireScene except it only works while a mouse action is in progress. For action shots. Êô˜Ihead1™J™8™KIcode™%—J™šÏk ˜ J˜ J˜J˜ Jšœ˜J˜—Jšœ œ œ˜Jš˜˜Lšœ œ˜'Lšœ œ˜*Jšœœ˜!Jšœœ!˜3Jšœ œ˜%Jšœœ#˜7Jšœ œ˜'Jšœœ˜—J˜šÏnœœ*œ˜aJšœŒ™ŒJšœv™vJ™—šž œœ œœ˜BJšœÖ™Ö—šžœœ*˜CJšœŸ™Ÿ—Jšžœœ*˜Gšžœœ œœ˜EJšœ£™£—Jšžœœ;˜YJšžœœ˜?Jšžœœ˜;Jšž œœœœ˜?Jšžœœ4˜Sšžœœœœ*˜XJ™—J™7Ihead2™Jšžœœ6˜LJšÐbnœœ2˜Mšžœœ2˜@L™g—J˜Jšœ˜—…—Ò Ú