<> <> <> <> <> DIRECTORY BitMap3d, Graphics, GraphicsOps, ViewerClasses; BitMap3dImpl: PROGRAM IMPORTS Graphics, GraphicsOps EXPORTS BitMap3d = BEGIN BitmapRef: TYPE = REF READONLY BitmapRep; BitmapRep: TYPE = GraphicsOps.BitmapRep; Viewer: TYPE = ViewerClasses.Viewer; AlternateDisplayContext: TYPE = REF AlternateDisplayContextObj; AlternateDisplayContextObj: TYPE = BitMap3d.AlternateDisplayContextObj; DrawAltDisplayContext: PUBLIC PROC [dc: Graphics.Context, altDC: AlternateDisplayContext] = { Graphics.SetCP[dc,0,0]; GraphicsOps.DrawBitmap[ dc, altDC.bitMap, altDC.bitMap.width, altDC.bitMap.height, 0,0, 0, altDC.bitMap.height ]; }; GetAltDisplayContext: PUBLIC PROC RETURNS [altDC: AlternateDisplayContext] = { bitMap: BitmapRef _ GraphicsOps.NewBitmap[10, 10]; dc: Graphics.Context _ GraphicsOps.NewContextFromBitmap[bitMap]; altDC _ NEW[AlternateDisplayContextObj _ [ dc: dc, bitMap: bitMap]]; }; ResizeBitMap: PUBLIC PROC [viewer: Viewer, altDC: AlternateDisplayContext] = { newBitMap: BitmapRef _ GraphicsOps.NewBitmap[viewer.cw, viewer.ch]; GraphicsOps.SetTargetBitmap[altDC.dc, newBitMap]; altDC.bitMap _ newBitMap; }; Erase: PUBLIC PROC [altDC: AlternateDisplayContext] = { mark: Graphics.Mark _ Graphics.Save[altDC.dc]; Graphics.SetColor[altDC.dc, Graphics.white]; Graphics.DrawBox[altDC.dc,Graphics.GetBounds[altDC.dc]]; Graphics.SetColor[altDC.dc, Graphics.white]; Graphics.Restore[altDC.dc,mark]; }; -- end of Erase END.