G3dScanConvert.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.
DIRECTORY ImagerPixel, G3dEdgeBlt, G3dRender;
G3dScanConvert: CEDAR DEFINITIONS
~ BEGIN
Type Definitions
Context:  TYPE ~ G3dRender.Context;
Pixel:   TYPE ~ G3dRender.Pixel; -- red, green, blue, alpha (coverage), z (depth)
PixelBufferProc: TYPE ~ PROC[ImagerPixel.PixelBuffer];
RGB:   TYPE ~ G3dRender.RGB;      --RECORD [ r, g, b: REAL];
IntRGBT:  TYPE ~ RECORD[ r, g, b, t: CARDINAL];
RealSequence:TYPE ~ G3dRender.RealSequence;
RECORD [length: NAT ← 0, s: SEQUENCE maxLength: NAT OF REAL];
IntegerPair: TYPE ~ G3dRender.IntegerPair;    -- RECORD [x, y: INTEGER]
Patch:    TYPE ~ G3dRender.Patch;
EdgeSequence: TYPE ~ G3dEdgeBlt.EdgeSequence;
RECORD [length: NAT ← 0, s: SEQUENCE maxLength: NAT OF G3dEdgeBlt.EdgeDesc];
CnvxPoly: TYPE ~ RECORD [lftSrc, lftDst, rgtSrc, rgtDst, scanSrc, scanDst: REF EdgeSequence];
Constants
justNoticeable: REAL ~ 0.02; -- percentage intensity change for a just noticeable difference
Utility Procedures
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];
Pixel Operations
DoWithPixels: PROC [context: Context, start: IntegerPair, length: NAT, proc: PixelBufferProc ];
Scan Conversion for Lines
PutLine: PROC [context: Context, p1, p2: IntegerPair, color1, color2: Pixel ];
Scan Conversion for Convex Areas
FastFlatTiler: PROC [context: Context, plygn: REF Patch, color: Pixel];
LerpTiler: PROC [context: Context, plygn: REF Patch];
HiliteTiler: PROC [context: Context, plygn: REF Patch, shininess: NAT];
END.