<> <> <> <> <> <> <<>> DIRECTORY Imager USING [Context, Rectangle, SampleMap, Transformation], Real USING [LargestNumber]; BufferedRefresh: CEDAR DEFINITIONS = BEGIN Rectangle: TYPE = Imager.Rectangle; SampleMap: TYPE = Imager.SampleMap; RefreshProc: TYPE = PROC [dc: Imager.Context, boundRect: Rectangle, clientData: REF ANY] RETURNS [drawnOn: BOOL _ TRUE]; <> Layer: TYPE = RECORD [name: ATOM, backingMap: BOOL, refreshProc: RefreshProc]; Sandwich: TYPE = REF SandwichObj; SandwichObj: TYPE = RECORD [ layers: LIST OF LayerData, clientToViewer: Imager.Transformation, -- the transforms most recently seen by DrawSandwich viewerToClient: Imager.Transformation, cw, ch: INTEGER _ 0, -- current "screen" size class: ATOM _ NIL -- current "screen" context class ]; LayerData: TYPE = REF LayerDataObj; LayerDataObj: TYPE = RECORD [ name: ATOM, refreshProc: RefreshProc, wantsMap, hasMap: BOOL, backingMap: SampleMap _ NIL, savedMap: SampleMap _ NIL, -- saved by BufferedRefresh.SaveLayer backingContext: Imager.Context _ NIL, -- derived from backingMap mapOK: BOOL _ FALSE, drawnOn: BOOL _ TRUE ]; << [Artwork node; type 'ArtworkInterpress on' to command tool] >> CreateSandwich: PROC [layers: LIST OF Layer] RETURNS [sandwich: Sandwich]; <> FitSandwichToScreen: PROC [sandwich: Sandwich, cw, ch: INTEGER, screen: Imager.Context]; DrawSandwich: PROC [sandwich: Sandwich, screen: Imager.Context, clientToViewer, viewerToClient: Imager.Transformation, clientData: REF ANY, ignoreBackingMap: BOOL _ FALSE, noBuffer: BOOL _ FALSE, changeRect: Imager.Rectangle _ [-Real.LargestNumber, -Real.LargestNumber, Real.LargestNumber, Real.LargestNumber]]; <> <> <> <> <<[clientToViewer, viewerToClient] _ BiScrollers.GetStyle[].GetTransforms[BiScrollers.QuaBiScroller[gargoyleData.actionArea]];>> <> SetLayerOK: PROC [sandwich: Sandwich, layerName: ATOM, ok: BOOL]; GetLayerOK: PROC [sandwich: Sandwich, layerName: ATOM] RETURNS [ok: BOOL]; RepairLayer: PROC [sandwich: Sandwich, layerName: ATOM, proc: RefreshProc, clientData: REF ANY _ NIL, clear: BOOL _ FALSE]; <> SaveLayer: PROC [sandwich: Sandwich, layerName: ATOM]; <> RestoreLayer: PROC [sandwich: Sandwich, layerName: ATOM]; <> <<>> END.