BitBlt.mesa
For Dragon
Copyright (C) 1986 by Xerox Corporation. All rights reserved.
Willie-Sue, September 11, 1986 12:32:42 pm PDT
Carl Hauser, November 12, 1986 1:02:23 pm PST
DIRECTORY
DragOps;
BitBlt: DEFINITIONS
= BEGIN
Data Structures for BitBlt (wizards only)
DragonPointer: TYPE = POINTER TO DragOps.Word;
DragonBitAddress: TYPE = MACHINE DEPENDENT RECORD [
word: DragonPointer,
bit: INT
];
BitBltFlags: TYPE = MACHINE DEPENDENT RECORD [
determines the BitBlt function
direction: Direction ← forward,
disjoint: BOOLFALSE,
disjointItems: BOOLFALSE,
gray: BOOLFALSE,
srcFunc: SrcFunc ← null,
dstFunc: DstFunc ← null,
reserved: [0..511] ← 0,
reserved1: DragOps.Half ← DragOps.ZerosHalf -- so uses 32 bits
];
Direction: TYPE = {forward, backward};
DstFunc: TYPE = {null, and, or, xor};
GrayParm: TYPE = MACHINE DEPENDENT RECORD [
used with Src to describe gray brick
reserved: [0..255] ← 0,
yOffset: [0..255],
widthMinusOne: [0..255],
heightMinusOne: [0..255]
];
SrcDesc: TYPE = MACHINE DEPENDENT RECORD [
SELECT OVERLAID * FROM
gray => [gray: GrayParm],
srcBpl => [srcBpl: INT],
ENDCASE
];
BitBltTablePtr: TYPE = POINTER TO BitBltTable;
BitBltTable: TYPE = MACHINE DEPENDENT RECORD [
dst: DragonBitAddress,
dstBpl: INT,
src: DragonBitAddress,
srcDesc: SrcDesc,
width: INT,
height: INT,
flags: BitBltFlags
];
SrcFunc: TYPE = {null, complement};
BITBLT: PROC[bbt: BitBltTablePtr];
END.