ImagerScanConverterPrivate.mesa
Copyright © 1984, 1985 by Xerox Corporation. All rights reserved.
Michael Plass, April 29, 1985 1:14:52 pm PDT
Doug Wyatt, May 19, 1985 4:37:54 pm PDT
ImagerScanConverterPrivate: CEDAR DEFINITIONS
~ BEGIN
DevicePathRep:
TYPE ~
RECORD [
scanLineCrossings: INT,
sMin, sMax, fMin, fMax: INTEGER,
pointTable: PointTable,
bucketTable: BucketTable,
segmentList: LIST OF SegmentRep,
pieceList: LIST OF PieceRep,
scratchSegmentList: LIST OF SegmentRep,
scratchPieceList: LIST OF PieceRep
];
PointTable: TYPE ~ REF PointTableRec;
PointTableRec:
TYPE ~
RECORD [
SEQUENCE maxLength: NAT OF Point
];
Point:
TYPE ~
MACHINE
DEPENDENT
RECORD [
1 word long, ordered so it can be sorted like a cardinal
fRel: NAT, -- relative to devicePath.fMin
direction: Direction
];
Direction:
TYPE ~ {increasing, decreasing};
BucketTable:
TYPE ~
REF BucketTableRec;
BucketTableRec:
TYPE ~
RECORD [length:
NAT, seq:
SEQUENCE maxLength:
NAT
OF
INTEGER];
SegmentRep:
TYPE ~
RECORD [
sFirstScan: INTEGER, -- sFirstScan + 1/2 defines the first scan line that crosses this segment.
direction: Direction,
scanCount: NAT, -- number of scan lines that cross this segment.
s0, f0, s1, f1: REAL
];
PieceRep:
TYPE ~
RECORD [
sOrg, fOrg: INTEGER, -- in device units
sScale: CARDINAL,
sOffset: CARDINAL,
sFirstScan: INTEGER, -- sFirstScan + 1/2 defines the first scan line that crosses this piece.
scanCount: CARDINAL, -- number of scan lines that cross this piece.
direction: Direction,
iterationsUntilFlat: NAT,
f0: CARDINAL,
s1, f1: CARDINAL,
s2, f2: CARDINAL,
s3, f3:
CARDINAL
In device coordinates, the coordinates of point i is
(fi/fScale + 1/2 + fOrg, (si+sOffset)/sScale + sOrg)
];
END.