<> <> <> <> <<>> DIRECTORY ImagerPixel USING [ PixelBuffer ], EdgeBlt USING [ EdgeSequence ], ThreeDBasics USING [ Context, IntegerPair, Patch, Pixel, RealSequence, RGB ]; ScanConvert: CEDAR DEFINITIONS ~ BEGIN <> Context: TYPE ~ ThreeDBasics.Context; Pixel: TYPE ~ ThreeDBasics.Pixel; -- red, green, blue, alpha (coverage), z (depth) PixelBufferProc: TYPE ~ PROC[ImagerPixel.PixelBuffer]; RGB: TYPE ~ ThreeDBasics.RGB; -- RECORD[ r, g, b: REAL]; IntRGBT: TYPE ~ RECORD[ r, g, b, t: CARDINAL]; RealSequence: TYPE ~ ThreeDBasics.RealSequence; <> IntegerPair: TYPE ~ ThreeDBasics.IntegerPair; -- RECORD[x, y: INTEGER] Patch: TYPE ~ ThreeDBasics.Patch; EdgeSequence: TYPE ~ EdgeBlt.EdgeSequence; <> CnvxPoly: TYPE ~ RECORD[ lftSrc, lftDst, rgtSrc, rgtDst, scanSrc, scanDst: REF EdgeSequence ]; <> justNoticeable: REAL ~ 0.02; -- percentage intensity change for a just noticeable difference <> Extend: PROC[ seq: REF RealSequence, newLength: NAT] RETURNS[REF RealSequence]; Power: PROC[ value: CARD16, power: NAT] RETURNS[ result: CARD16 ]; MappedRGB: PROC[renderMode: ATOM, clr: RGB] RETURNS[NAT]; RGBFromMap: PROC[renderMode: ATOM, value: NAT] RETURNS[RGB]; <> DoWithPixels: PROC [ context: REF Context, start: IntegerPair, length: NAT, proc: PixelBufferProc ]; <> PutLine: PROC [context: REF Context, p1, p2: IntegerPair, color1, color2: Pixel ]; <> FastFlatTiler: PROC [context: REF Context, plygn: REF Patch, color: Pixel]; LerpTiler: PROC [context: REF Context, plygn: REF Patch]; HiliteTiler: PROC [context: REF Context, plygn: REF Patch, shininess: NAT]; END.