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 1, 1985 7:12:48 pm PDT
Contents: calls to GraphicsExtra.mesa to double buffer graphics
DIRECTORY
BitMap3d,
Imager,
ImagerBackdoor,
ViewerClasses;
BitMap3dImpl: PROGRAM IMPORTS Imager, ImagerBackdoor EXPORTS BitMap3d =
BEGIN
Bitmap: TYPE = ImagerBackdoor.Bitmap;
Viewer: TYPE = ViewerClasses.Viewer;
AlternateDisplayContext: TYPE = REF AlternateDisplayContextObj;
AlternateDisplayContextObj: TYPE = BitMap3d.AlternateDisplayContextObj;
DrawAltDisplayContext: PUBLIC PROC [dc: Imager.Context, altDC: AlternateDisplayContext] = {
Imager.SetXY[dc,[0,0]];
ImagerBackdoor.DrawBits[dc, altDC.bitMap.base, altDC.bitMap.wordsPerLine, 0, 0, altDC.bitMap.height, altDC.bitMap.width, 0, altDC.bitMap.height];
};
GetAltDisplayContext: PUBLIC PROC RETURNS [altDC: AlternateDisplayContext] = {
bitMap: Bitmap ← ImagerBackdoor.NewBitmap[10, 10];
dc: Imager.Context ← ImagerBackdoor.BitmapContext[bitMap];
altDC ← NEW[AlternateDisplayContextObj ← [
dc: dc,
bitMap: bitMap]];
};
ResizeBitMap: PUBLIC PROC [viewer: Viewer, altDC: AlternateDisplayContext] = {
newBitMap: Bitmap ← ImagerBackdoor.NewBitmap[viewer.cw, viewer.ch];
dc: Imager.Context ← ImagerBackdoor.BitmapContext[newBitMap];
altDC.bitMap ← newBitMap;
altDC.dc ← dc;
};
Erase: PUBLIC PROC [altDC: AlternateDisplayContext] = {
EraseAux: SAFE PROC = TRUSTED {
Imager.SetColor[altDC.dc, Imager.white];
Imager.MaskRectangle[altDC.dc, ImagerBackdoor.GetBounds[altDC.dc]];
Imager.SetColor[altDC.dc, Imager.white];
};
Imager.DoSaveAll[altDC.dc, EraseAux];
}; -- end of Erase
END.