-- File CIFRamtekTypeDefs.mesa
-- Edited by R. Pasco from Martin Newell’s CIFVersatecTypeDefs.mesa
-- of June 1980
-- Last updated: December 4, 1981 5:40 PM

CIFRamtekTypeDefs: DEFINITIONS =

BEGIN

Edge: TYPE = POINTER TO EdgeRecord;
EdgeRecord: TYPE = RECORD [
next: Edge,
xstart: REAL,
ystart: REAL,
yend: REAL,
lastouty: REAL,--y value where edge of deferred trapezoid was last output
mate: Edge,--other edge making up a deferred trapezoid
up: BOOLEAN,--TRUE if edge defined in increasing y
flagout: BOOLEAN,--TRUE if edge will need to be output at ycurr
vert: BOOLEAN,--TRUE if edge vertical - used to SELECT variant
var:SELECT COMPUTED EdgeAngle FROM --use COMPUTED to save the whole WORD that Mesa
--otherwise allocates for the tag
oblique => [
xend: REAL,
slope: REAL],
vertical => NULL,
ENDCASE
];

EdgeAngle: TYPE = {oblique,vertical};
EdgeType: TYPE = {acontinuingUp, acontinuingDown, aterminatingUp,
aterminatingDown, estartingUp, estartingDown, null};

HalfTone: TYPE = ARRAY [0..4) OF ColorStipple;
--Black,Cyan,Magenta,Yellow
ColorStipple: TYPE = RECORD [
nonzero: BOOLEAN,--True if anything in stipple array is nonzero
stipple: ARRAY [0..4) OF CARDINAL--Four lines of 16 pixels each
];

END.