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.