DIRECTORY Imager ; IGScanConverter: CEDAR DEFINITIONS = BEGIN Cubic: TYPE = REF CubicRec; CubicRec: TYPE = RECORD [ xmin, ymin, ymax: INTEGER, -- in device units x0, y0, x1, y1, x2, y2, x3, y3: CARDINAL, ascending: BOOLEAN, openAt0: BOOLEAN, openAt3: BOOLEAN, outlineNumber: [0..8192) ]; DevicePath: TYPE = REF DevicePathRec; DevicePathRec: TYPE = RECORD [ length: NAT _ 0, numberOfOutlines: NAT _ 0, seq: REF DevicePathSeqRec ]; DevicePathSeqRec: TYPE = RECORD [ SEQUENCE maxLength: NAT OF Cubic ]; XValueFor: PROCEDURE [cubic: CubicRec, y: Imager.FIXED] RETURNS [INTEGER]; Allocate: PROCEDURE RETURNS [DevicePath]; Reset: PROCEDURE [devicePath: DevicePath]; Release: PROCEDURE [devicePath: DevicePath]; PushPath: PROCEDURE [ devicePath: DevicePath, path: Imager.Path, transformation: Imager.Transformation ]; PopPath: PROCEDURE [devicePath: DevicePath]; ScanConvert: PROCEDURE [devicePath: DevicePath, LineProc: PROC[xmin, xmax, y: INTEGER]]; END. IGScanConverter.mesa Created March 11, 1983 Edited by Michael Plass, March 11, 1983 1:51 pm The bezier points are given relative to (xmin-1/2, ymin) in units 1/256 the size of device units. The y polynomial must be monotonically nondecreasing for parameters in [0..1]. สฎ˜Jšœ™J™J™/unitšฯk ˜ J˜J˜—šœ˜*Jšœœœ ˜šœ œœ˜Jšœœฯc˜-šœ œ˜)Jšœฐ™ฐ—Jšœ œ˜Jšœ œ˜Jšœ œ˜J˜J˜—Jšœ œœ˜%šœœœ˜Jšœœ˜Jšœœ˜Jšœœ˜J˜—šœœœ˜!Jšœ œœ˜ J˜—Kš ฯn œ œœœœ˜JKšŸœ œœ˜)KšŸœ œ˜*KšŸœ œ˜,šŸœ œ˜J˜Jšœ˜Jšœ%˜%Jšœ˜—KšŸœ œ˜,Kš Ÿ œ œŸœœœ˜XKšœ˜——…—ธz