DIRECTORY GraphicsBasic, Scaled ; UFCubicScan: 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: Scaled.Value] RETURNS [INTEGER]; Allocate: PROCEDURE RETURNS [DevicePath]; Reset: PROCEDURE [devicePath: DevicePath]; Release: PROCEDURE [devicePath: DevicePath]; PushPath: PROCEDURE [ devicePath: DevicePath, path: GraphicsBasic.Path, map: PROC [GraphicsBasic.Vec] RETURNS [GraphicsBasic.Vec] _ NIL ]; PopPath: PROCEDURE [devicePath: DevicePath]; ScanConvert: PROCEDURE [devicePath: DevicePath, LineProc: PROC[xmin, xmax, y: INTEGER]]; END. φUFCubicScan.mesa Created February 16, 1983 Edited by Michael Plass, February 23, 1983 2:00 pm The bezier points are given relative to (xmin-1/2, ymin) in units 1/256 the size of device units. Must have y0 <= y1 <= y3 and y0 <= y2 <= y3. Κ»˜Jšœ™J™J™2unitšΟk ˜ J˜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šœ˜——…—δ•