-- GraphicsDefs.mesa -- Written by Joe Maleson -- Last changed by Doug Wyatt, April 9, 1981 4:15 PM DIRECTORY BitBltDefs USING [BBoperation, BBsourcetype]; GraphicsDefs: DEFINITIONS = BEGIN Bitmap: TYPE = RECORD [ bank: [0..7], --3 bits for Box (idiotic space optimization) nWords: [0..1777B], nBits,nLines: CARDINAL, nBitsPerPixel: [0..256) ← 1, portraitMode: BOOLEAN ← TRUE, scaleFactor: [0..128) ← 10, bits: POINTER TO ARRAY [0..0) OF CARDINAL ]; Rectangle: TYPE = RECORD [ x1,y1,x2,y2: INTEGER --with x1<x2, y1<y2 ]; BoxType: TYPE = {normal,outline,gray}; Box: TYPE = RECORD [boxBitmap: Bitmap, savedBits: POINTER TO ARRAY [0..0) OF CARDINAL, --used when moving around displayBitmap: POINTER TO Bitmap, displayX,displayY: CARDINAL, displayed: BOOLEAN, --1 bit (i.e.,whether displayX,Y are valid) savedBank: [0..7], --3 bits function: BitBltDefs.BBoperation, --2 bits type: BoxType, --2 bits gray: [0..256) --8 bits ]; StrikeFont: TYPE = RECORD [oneBit,index,fixed: [0..1], bank: [0..77B], minCode,maxCode: CARDINAL, maxWidth: CARDINAL, strikeBodyWordLength: CARDINAL, ascent,descent: CARDINAL, wordsPerScanLine: CARDINAL, bitmap: POINTER TO ARRAY [0..0) OF CARDINAL, xInSegment: POINTER TO ARRAY [0..0) OF CARDINAL ]; textMode: TYPE = [0..3]; normal: textMode = 0; italic: textMode = 1; bold: textMode=2; --routines exported by BitmapFns SetDefaultBitmap: PROCEDURE [width,height: CARDINAL]; TurnOnGraphics: PROCEDURE [bitsPerPixel: CARDINAL ← 1,portraitMode: BOOLEAN ← TRUE,scalePercent: CARDINAL ← 100] RETURNS [POINTER TO Bitmap]; GetDefaultBitmapHandle: PROCEDURE RETURNS [POINTER TO Bitmap]; SetXMAlloc: PROCEDURE [Allocate: PROCEDURE [nwords: CARDINAL] RETURNS [LONG POINTER],Free: PROCEDURE [LONG POINTER]]; GetXMAlloc: PROCEDURE RETURNS [Allocate: PROCEDURE [nwords: CARDINAL] RETURNS [LONG POINTER],Free: PROCEDURE [LONG POINTER]]; PutPoint: PROCEDURE [x,y: CARDINAL,b: POINTER TO Bitmap ← NIL]; ErasePoint: PROCEDURE [x,y: CARDINAL,b: POINTER TO Bitmap ← NIL]; XorPoint: PROCEDURE [x,y: CARDINAL,b: POINTER TO Bitmap ← NIL]; PutLine: PROCEDURE [x1,y1,x2,y2: CARDINAL,b: POINTER TO Bitmap ← NIL]; EraseLine: PROCEDURE [x1,y1,x2,y2: CARDINAL,b: POINTER TO Bitmap ← NIL]; XorLine: PROCEDURE [x1,y1,x2,y2: CARDINAL,b: POINTER TO Bitmap ← NIL]; PutArea: PROCEDURE [x1,y1,x2,y2: CARDINAL,b: POINTER TO Bitmap ← NIL]; EraseArea: PROCEDURE [x1,y1,x2,y2: CARDINAL,b: POINTER TO Bitmap ← NIL]; XorArea: PROCEDURE [x1,y1,x2,y2: CARDINAL,b: POINTER TO Bitmap ← NIL]; ReplaceArea: PROCEDURE [x1,y1,x2,y2: CARDINAL,b: POINTER TO Bitmap ← NIL]; PutGray: PROCEDURE [x1,y1,x2,y2: CARDINAL,b: POINTER TO Bitmap ← NIL]; EraseGray: PROCEDURE [x1,y1,x2,y2: CARDINAL,b: POINTER TO Bitmap ← NIL]; XorGray: PROCEDURE [x1,y1,x2,y2: CARDINAL,b: POINTER TO Bitmap ← NIL]; ReplaceGray: PROCEDURE [x1,y1,x2,y2: CARDINAL,b: POINTER TO Bitmap ← NIL]; MaskGray: PROCEDURE [x1,y1,x2,y2: CARDINAL,b: POINTER TO Bitmap ← NIL]; PutBitmap: PROCEDURE [b: POINTER TO Bitmap,x,y: CARDINAL,dest: POINTER TO Bitmap ← NIL]; EraseBitmap: PROCEDURE [b: POINTER TO Bitmap,x,y: CARDINAL,dest: POINTER TO Bitmap ← NIL]; XorBitmap: PROCEDURE [b: POINTER TO Bitmap,x,y: CARDINAL,dest: POINTER TO Bitmap ← NIL]; ReplaceBitmap: PROCEDURE [b: POINTER TO Bitmap,x,y: CARDINAL,dest: POINTER TO Bitmap ← NIL]; --grey square functions (affect subsequent PutArea commands) SetGrayThresholds: PROCEDURE [new: POINTER TO ARRAY [0..0) OF CARDINAL,outputDevice: POINTER TO Bitmap ← NIL]; SetGrayLevel: PROCEDURE [intensity: CARDINAL,outputDevice: POINTER TO Bitmap ← NIL]; --set intensity value for area stuff GetGrayBlock: PROCEDURE RETURNS [gray0,gray1,gray2,gray3: CARDINAL]; PutGrayBitmap: PROCEDURE [b: POINTER TO Bitmap,x,y: CARDINAL, dest: POINTER TO Bitmap ← NIL]; SetRed: PROCEDURE[gray: [0..256),newVal: [0..256),outputDevice: POINTER TO Bitmap ← NIL]; SetGreen: PROCEDURE[gray: [0..256),newVal: [0..256),outputDevice: POINTER TO Bitmap ← NIL]; SetBlue: PROCEDURE[gray: [0..256),newVal: [0..256),outputDevice: POINTER TO Bitmap ← NIL]; GetRed: PROCEDURE[gray: [0..256),outputDevice: POINTER TO Bitmap ← NIL] RETURNS [CARDINAL]; GetGreen: PROCEDURE[gray: [0..256),outputDevice: POINTER TO Bitmap ← NIL] RETURNS [CARDINAL]; GetBlue: PROCEDURE[gray: [0..256),outputDevice: POINTER TO Bitmap ← NIL] RETURNS [CARDINAL]; --Area function: copy (with possible rescaling) TransferRectangle: PROCEDURE [src,dest: POINTER TO Bitmap, srcRectangle,destRectangle: POINTER TO Rectangle, fn: BitBltDefs.BBoperation ← replace,type: BitBltDefs.BBsourcetype ← block]; --and the real functions SetPoint: PROCEDURE [x,y: CARDINAL,fn: BitBltDefs.BBoperation, b: POINTER TO Bitmap ← NIL]; SetLine: PROCEDURE [x1,y1,x2,y2: CARDINAL,fn: BitBltDefs.BBoperation, b: POINTER TO Bitmap ← NIL]; SetArea: PROCEDURE [x1,y1,x2,y2: CARDINAL,fn: BitBltDefs.BBoperation, b: POINTER TO Bitmap ← NIL]; SetGray: PROCEDURE [x1,y1,x2,y2: CARDINAL,fn: BitBltDefs.BBoperation, b: POINTER TO Bitmap ← NIL]; SetBitmap: PROCEDURE [b: POINTER TO Bitmap, x,y: CARDINAL,fn: BitBltDefs.BBoperation,dest: POINTER TO Bitmap ← NIL]; --routines exported by TextFns GetStrikeHandle: PROCEDURE [fontName: STRING] RETURNS [POINTER TO StrikeFont]; GetFontNameArray: PROCEDURE RETURNS [POINTER TO ARRAY [0..0) OF STRING,CARDINAL]; PutText: PROCEDURE [s: STRING,x,y: CARDINAL,font: POINTER TO StrikeFont,mode: textMode,b: POINTER TO Bitmap ← NIL] RETURNS [nextX: CARDINAL]; ReplaceText: PROCEDURE [s: STRING,x,y: CARDINAL,font: POINTER TO StrikeFont,mode: textMode,b: POINTER TO Bitmap ← NIL] RETURNS [nextX: CARDINAL]; EraseText: PROCEDURE [s: STRING,x,y: CARDINAL,font: POINTER TO StrikeFont,mode: textMode,b: POINTER TO Bitmap ← NIL] RETURNS [nextX: CARDINAL]; XorText: PROCEDURE [s: STRING,x,y: CARDINAL,font: POINTER TO StrikeFont,mode: textMode,b: POINTER TO Bitmap ← NIL] RETURNS [nextX: CARDINAL]; SetText: PROCEDURE [s: STRING,x,y: CARDINAL,fn: BitBltDefs.BBoperation,font: POINTER TO GraphicsDefs.StrikeFont,mode: GraphicsDefs.textMode,b: POINTER TO GraphicsDefs.Bitmap ← NIL] RETURNS [nextX: CARDINAL]; --routines exported by BoxFns CreateBox: PROCEDURE [b: POINTER TO Box,width,height: CARDINAL]; DisplayBox: PROCEDURE [b: POINTER TO Box,x,y: CARDINAL, bitmap: POINTER TO Bitmap ← NIL]; ReleaseBox: PROCEDURE [b: POINTER TO Box]; --release temp storage for current box RemoveBox: PROCEDURE [b: POINTER TO Box]; --undisplay DestroyBox: PROCEDURE [b: POINTER TO Box,restore: BOOLEAN]; CursorInBox: PROCEDURE [b: POINTER TO Box] RETURNS [BOOLEAN]; MoveBox: PROCEDURE [b: POINTER TO Box,cornerX,cornerY: CARDINAL]; PaintBox: PROCEDURE [b: POINTER TO Box]; --update current display END.