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. ΨScanConvert.mesa Copyright Σ 1984, 1987 by Xerox Corporation. All rights reserved. Frank Crow, July 1, 1987 5:21:01 pm PDT Scan conversion for lines and polygons and image manipulation, no anti-aliasing. Type Definitions RECORD [length: NAT _ 0, s: SEQUENCE maxLength: NAT OF REAL]; RECORD [length: NAT _ 0, s: SEQUENCE maxLength: NAT OF EdgeBlt.EdgeDesc ]; Constants Utility Procedures Pixel Operations Scan Conversion for Lines Scan Conversion for Convex Areas Κg˜Ihead2™™BJ™'J™PJ™šΟk ˜ Idefaultšœœ˜$Lšœ œ˜"Lšœœœ<œ˜X——šœ œ ˜Jšœ˜—™Jšœ œ˜%JšœœΟc0˜RJ˜Jšœœœ˜6J˜Jšœœœž˜?Iašœ œœœ˜/šœœ˜/Jš œ œ œ œœœ™>—Jšœ œ#ž˜LJšœœ˜"šœœ˜*Lš œ œ œ œœ™J—Jšœ œœ4œ˜^—™ Lšœœ ž?˜\—™Jš Οnœœœœœœ˜OJš Ÿœœ œ œœ œ˜BMš ΠbnŸœœ œœœœ˜9Mš Ÿ œœ œ œœœ˜<—šΟb™LšŸ œœ œ&œ˜d—™LšŸœœ œ7˜R—™ LšŸ œœ œœ˜KLšŸ œœ œœ˜9Lš Ÿ œœ œœœ˜KM˜—Jšœ˜—…— U