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