-- File: BitMap3dImpl.mesa -- Last edited by Bier on December 18, 1982 1:41 am -- Author: Eric Allan Bier on June 16, 1982 10:33 am -- Contents: calls to GraphicsExtra.mesa to double buffer graphics 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; -- RECORD [ -- dc: Graphics.Context, -- bitMap: BitmapRef]; 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.