DIRECTORY ImagerPixelMaps; ImagerScanConverter: CEDAR DEFINITIONS ~ BEGIN DeviceRectangle: TYPE ~ ImagerPixelMaps.DeviceRectangle; bigRectangle: DeviceRectangle ~ [sMin: -big/2, fMin: -big/2, sSize: big, fSize: big]; big: PRIVATE INTEGER ~ LAST[NAT]; PixelMap: TYPE ~ ImagerPixelMaps.PixelMap; Function: TYPE ~ ImagerPixelMaps.Function; DevicePath: TYPE ~ REF DevicePathRep; DevicePathRep: TYPE; PathProc: TYPE ~ PROC [ move: PROC [s, f: REAL], line: PROC [s, f: REAL], curve: PROC [s1, f1, s2, f2, s3, f3: REAL] ]; CreatePath: PROC [ pathProc: PathProc, clipBox: DeviceRectangle _ bigRectangle, scratch: DevicePath _ NIL -- for re-use of storage ] RETURNS [DevicePath]; BoundingBox: PROC [devicePath: DevicePath] RETURNS [DeviceRectangle]; NumberOfRuns: PROC [devicePath: DevicePath] RETURNS [numberOfRuns: INT]; ConvertToRuns: PROC [ devicePath: DevicePath, runProc: PROC [sMin, fMin: INTEGER, fSize: NAT], clipBox: DeviceRectangle _ bigRectangle, parityFill: BOOLEAN _ FALSE ]; ConvertToPixels: PROC [ devicePath: DevicePath, pixelMap: PixelMap, value: CARDINAL _ 1, parityFill: BOOLEAN _ FALSE, function: Function _ [null, null] ]; END. δImagerScanConverter.mesa Michael Plass, October 3, 1983 1:28 pm control points of a bezier cubic Not always as tight as possible, but should be pretty close. Guaranteed to be an upper bound, should be close to the actual. ΚΨ˜Jšœ™™&JšΟk œ˜—J˜šœœ˜.Iunitšœœ#˜8šœU˜UJš œœœœœ˜!—Kšœ œ˜*Kšœ œ˜*Kšœ œœ˜%Idefaultšœœ˜šΟnœœœ˜Jšœœœ˜Jšœœœ˜šœœœ˜*J™ —Jšœ˜—šž œœ˜J˜J˜(JšœœΟc˜2Jšœœ˜—šž œœœ˜EJ™<—šž œœœœ˜HJ™?—šž œœ˜Jšœ˜Jšœ œœ œ˜0J˜(Jšœ œ˜Jšœ˜—šžœœ˜Jšœ˜Jšœ˜Jšœœ˜Jšœ œœ˜Jšœ!˜!Jšœ˜—Kšœ˜——…—x4