ImagerScanConverterPrivate.mesa
Copyright Ó 1988, 1990, 1991 by Xerox Corporation. All rights reserved.
Michael Plass, May 28, 1992 9:32 am PDT
DIRECTORY
ImagerScanConverter USING [Pair],
Scaled USING [Value],
SF USING [Box];
ImagerScanConverterPrivate: CEDAR DEFINITIONS
~ BEGIN
Pair: TYPE ~ ImagerScanConverter.Pair;
RealBox: TYPE ~ RECORD [min, max: Pair ¬ [0, 0]];
ExternalHalfPlane: TYPE ~ {sLo, sHi, fLo, fHi};
Region: TYPE ~ PACKED ARRAY ExternalHalfPlane OF BOOL;
AreaState: TYPE ~ {nil, awaitMove, awaitLine, complete, completeMonotone};
Edge: TYPE ~ REF EdgeRep;
Edges: TYPE ~ REF EdgeRep;
EdgeRep: TYPE ~ RECORD [
sMin: INTEGER, -- First scan line touched
sCount: NAT, -- Number of scan lines touched
f0: Scaled.Value, -- Initial value of f
df: Scaled.Value, -- df/ds
wrapDelta: INTEGER, -- for wrap computation
link: REF EdgeRep
];
Area: TYPE ~ REF AreaRep;
AreaRep: TYPE ~ RECORD [
bounds: SF.Box, -- For clipping as the area is built
realBounds: RealBox, -- Floating-point version of same
tightBounds: SF.Box, -- Computed bounding box of area
state: AreaState, -- Indicates state of outline
moveCount: INT, -- Number of MoveTo calls
firstPt: Pair,  -- Argument of most recent MoveTo
firstRegion: Region, -- Region of most recent MoveTo
lastPt: Pair,  -- Most recent point inserted
lastRegion: Region, -- Region of lastPt
totalCrossings: INT, -- Total number of scan-line crossings
increasingEdges: Edges, -- Edges that were increasing in s
decreasingEdges: Edges, -- Edges that were decreasing in s
freeEdges: Edges, -- Avail list of edges for reuse
mode: INTEGER, -- Scan conversion mode
tolerance: REAL, -- For subdividing curves
cLimit: INTEGER, -- For bounding worst-case subdivisions (curve, conic)
pLimit: INTEGER-- For bounding worst-case subdivisions (parabola)
];
END.