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]; 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]; StoreBackground: PROC [gargoyleData: GargoyleData]; 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]; END. Æ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. 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 cluster, 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 cluster, the caret, or special alignment lines and symmetry tools. See GGRefreshImpl for the actual refreshing procedures. Drawing Entities Like PaintEntireScene but doesn't try to clear to white first. Êç˜Ihead1™J™6J™KJ™šÏk ˜ J˜J˜ Jšœ˜J˜—Jšœ œ œ˜Jš˜J˜Jšœ œ˜%Jšœœ!˜3Jšœ œ˜%Jšœœ#˜7Jšœ œ˜'Jšœœ˜J˜šÏnœœ œ˜WJšœŒ™ŒJšœv™vJ™—šž œœ œœ˜BJšœØ™Ø—šžœœ*˜CJšœŸ™Ÿ—Jšžœœ*˜Gšžœœ œœ˜EJšœ¥™¥—Jšžœœ;˜YJšžœœ˜?Jšžœœ˜;Jšž œœœœ˜?šžœœ˜3J™—J™7Ihead2™Jšž œœD˜UJšž œœD˜UJšžœœ>˜LJšž œœA˜SJšžœœ2˜HšÐbnœœ2˜MJšœ>™>—J˜Jšœ˜—…—ü ©