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;
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];
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];