<> <> <> DIRECTORY ImagerBasic USING [Visibility], ImagerPixelMaps, ImagerScanConverter ; ImagerMasks: CEDAR DEFINITIONS ~ BEGIN <> DeviceRectangle: TYPE ~ ImagerPixelMaps.DeviceRectangle; PixelMap: TYPE ~ ImagerPixelMaps.PixelMap; DevicePath: TYPE ~ ImagerScanConverter.DevicePath; Visibility: TYPE ~ ImagerBasic.Visibility; Mask: TYPE ~ RECORD [ sMin, fMin: INTEGER, sSize, fSize: NAT, refRep: REF <> <> <> ]; <> Create: PROC [ runs: PROC[ -- Create calls this back run: PROC[sMin, fMin: INTEGER, fSize: NAT], -- client calls this from inside runs. repeat: PROC[timesToRepeatScanline: NAT] -- client calls this to repeat a scanline ] ] RETURNS [Mask]; <> MaskFromPixelMap: PROC [pixelMap: PixelMap, minValue: CARDINAL _ 1, maxValue: CARDINAL _ 1] RETURNS [Mask]; <> <> MaskFromDevicePath: PROC [devicePath: DevicePath, parityFill: BOOLEAN _ FALSE] RETURNS [Mask]; Box: PROC [r: DeviceRectangle] RETURNS [Mask]; InlineBox: PROC [r: DeviceRectangle] RETURNS [Mask] ~ INLINE {RETURN [[r.sMin, r.fMin, r.sSize, r.fSize, NIL]]}; <> And: PROC [a, b: Mask] RETURNS [Mask]; Or: PROC [a, b: Mask] RETURNS [Mask]; Difference: PROC [a, b: Mask] RETURNS [Mask]; Shift: PROC [mask: Mask, s, f: INTEGER] RETURNS [Mask]; InlineShift: PROC [mask: Mask, s, f: INTEGER] RETURNS [Mask] ~ INLINE {RETURN[[mask.sMin+s, mask.fMin+f, mask.sSize, mask.fSize, mask.refRep]]}; Bitmap: PROC [mask: Mask] RETURNS [Mask]; <> <> SMin: PROC [mask: Mask] RETURNS [INTEGER] ~ INLINE {RETURN[mask.sMin]}; FMin: PROC [mask: Mask] RETURNS [INTEGER] ~ INLINE {RETURN[mask.fMin]}; SSize: PROC [mask: Mask] RETURNS [CARDINAL] ~ INLINE {RETURN[mask.sSize]}; FSize: PROC [mask: Mask] RETURNS [CARDINAL] ~ INLINE {RETURN[mask.fSize]}; CountRuns: PROC [mask: Mask] RETURNS [INT]; MapRuns: PROC [mask: Mask, run: PROC [sMin, fMin: INTEGER, fSize: NAT]]; MapBoxes: PROC [mask: Mask, box: PROC [DeviceRectangle]]; MapClippedRuns: PROC [mask, clipper: Mask, run: PROC [sMin, fMin: INTEGER, fSize: NAT]]; MapClippedBoxes: PROC [mask, clipper: Mask, box: PROC [DeviceRectangle]]; IsVisible: PROC [mask, clipper: Mask] RETURNS [Visibility]; <