-- 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 ... }.