DragonBitBlt.mesa
Copyright (C) 1986 by Xerox Corporation. All rights reserved.
Willie-Sue, September 11, 1986 12:32:42 pm PDT
DragonBitBlt:
DEFINITIONS
= BEGIN
Data Structures for DragonBitBlt (wizards only)
DragonPointer: TYPE = LONG POINTER TO DragOpsCross.Word;
DragonBitAddress:
TYPE =
MACHINE
DEPENDENT
RECORD [
word: DragonPointer,
bit: INT
];
BitBltFlags:
TYPE =
MACHINE
DEPENDENT
RECORD [
determines the BitBlt function
direction: Direction ← forward,
disjoint: BOOL ← FALSE,
disjointItems: BOOL ← FALSE,
gray: BOOL ← FALSE,
srcFunc: SrcFunc ← null,
dstFunc: DstFunc ← null,
reserved: [0..511] ← 0,
reserved1: DragOpsCross.Half ← DragOpsCross.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 = LONG 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];