-- CGSample.mesa
-- Last edited by Doug Wyatt, August 25, 1982 3:42 pm
DIRECTORY
GraphicsBasic USING [PaintMode];
CGSample: DEFINITIONS = {
Mode: TYPE = GraphicsBasic.PaintMode;
Pointer: TYPE = LONG POINTER TO Table;
Words: TYPE = ARRAY [0..0) OF CARDINAL;
Flags: TYPE = MACHINE DEPENDENT RECORD [
function(0:0..3): [0..17B] ← 0, -- function
mConst(0:4..4): BOOLEAN, -- mask value is constant (always 1)
bConst(0:5..5): BOOLEAN, -- brick value is constant (given by bValue)
sConst(0:6..6): BOOLEAN, -- source value is constant (given by sValue)
useMap(0:7..7): BOOLEAN, -- look up sample values in map
size(0:8..15): [0..377B] -- sample size, for brick and source
];
Table: TYPE = MACHINE DEPENDENT RECORD [
flags(0:0..15): Flags, -- flags
count(1:0..15): CARDINAL, -- number of samples to process
bValue(2:0..15): CARDINAL, -- constant brick value, used if bConst=TRUE
sValue(3:0..15): CARDINAL, -- constant source value, used if sConst=TRUE
-- destination and mask information
dLine(4:0..31): LONG POINTER, -- pointer to row of destination bits
mLine(6:0..31): LONG POINTER, -- pointer to row of mask bits (ignored if mConst=TRUE)
di(8:0..15): CARDINAL, -- starting bit index in destination
mi(9:0..15): CARDINAL, -- starting bit index in mask (ignored if mConst=TRUE)
-- source to sample mapping table (ignored if useMap=FALSE)
map(10:0..31): LONG POINTER TO Words,
-- brick information (ignored if bConst=TRUE)
bLine(12:0..31): LONG POINTER TO Words, -- pointer to row of brick samples
bi(14:0..15): CARDINAL, -- starting sample index in brick
bw(15:0..15): CARDINAL, -- width of brick row, in samples
-- source information (ignored if sConst=TRUE)
sBase(16:0..31): LONG POINTER, -- pointer to first word of source array
sRast(18:0..15): CARDINAL, -- words per raster line in source array
sSpare(19:0..15): CARDINAL ← 0, -- not used (samples per pixel?)
sw(20:0..15): CARDINAL, -- width of source, in samples
sh(21:0..15): CARDINAL, -- height of source, in lines
sox(22:0..15): CARDINAL, -- x offset of source, in samples
soy(23:0..15): CARDINAL, -- y offset of source, in lines
sx(24:0..31): LONG INTEGER, -- starting x position in source * 2^16
sy(26:0..31): LONG INTEGER, -- starting y position in source * 2^16
sdx(28:0..31): LONG INTEGER, -- increment to source x position * 2^16
sdy(30:0..31): LONG INTEGER -- increment to source y position * 2^16
];
Sample8: UNSAFE PROC[Pointer, Mode]; -- Some day: = MACHINE CODE ...
Sample0: UNSAFE PROC[Pointer, Mode]; -- Some day: = MACHINE CODE ...
}.