File: BitMap3dImpl.mesa
Last edited by Bier on December 18, 1982 1:41 am
Copyright © 1984 by Xerox Corporation. All rights reserved.
Author: Eric Allan Bier on August 19, 1984 3:22:57 pm PDT
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;
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.