<> <> <> <> <<>> DIRECTORY Imager, ImagerBackdoor; BufferedRefresh: CEDAR DEFINITIONS = BEGIN Rectangle: TYPE = Imager.Rectangle; RefreshProc: TYPE = PROC [dc: Imager.Context, boundRect: Rectangle, clientData: REF ANY]; Layer: TYPE = RECORD [name: ATOM, backingMap: BOOL, refreshProc: RefreshProc]; Sandwich: TYPE = REF SandwichObj; SandwichObj: TYPE = RECORD [ layers: LIST OF LayerData, chunkingBitmap: Imager.SampleMap _ NIL, chunkingContext: Imager.Context _ NIL -- derived from chunking map ]; LayerData: TYPE = REF LayerDataObj; LayerDataObj: TYPE = RECORD [ name: ATOM, refreshProc: RefreshProc, hasMap: BOOL, backingMap: Imager.SampleMap _ NIL, backingContext: Imager.Context _ NIL, -- derived from backingMap mapOK: BOOL _ FALSE ]; CreateSandwich: PROC [layers: LIST OF Layer] RETURNS [sandwich: Sandwich]; <> FitSandwichToScreen: PROC [sandwich: Sandwich, cw, ch: INTEGER, clientToViewer: Imager.Transformation _ NIL]; DrawSandwich: PROC [sandwich: Sandwich, screen: Imager.Context, boundRect: Imager.Rectangle, viewerToClient: Imager.Transformation, clientData: REF ANY, ignoreBackingMap: BOOL _ FALSE]; <> <> <> <<>> SetLayerOK: PROC [sandwich: Sandwich, layerName: ATOM, ok: BOOL]; GetLayerOK: PROC [sandwich: Sandwich, layerName: ATOM] RETURNS [ok: BOOL]; GetLayerContext: PROC [sandwich: Sandwich, layerName: ATOM] RETURNS [backingContext: Imager.Context]; END.