<> <> <> <> <<>> <> <<>> DIRECTORY Basics USING [BITAND, BITNOT, BITOR], Imager USING [Context], ImagerCache USING [Ref], ImagerDevice USING [CharMask, Device, DeviceBox], ImagerFont USING [Font, XChar, XStringProc], ImagerFontPrivate USING [FontAtom], ImagerManhattan USING [DeviceRectangle, Polygon], ImagerRaster USING [FontTuner], ImagerScanConverter USING [DevicePath], ImagerState USING [State], ImagerTransformation USING [Transformation]; ImagerRasterPrivate: CEDAR DEFINITIONS IMPORTS Basics ~ BEGIN Context: TYPE ~ Imager.Context; Device: TYPE ~ ImagerDevice.Device; DeviceBox: TYPE ~ ImagerDevice.DeviceBox; CharMask: TYPE ~ ImagerDevice.CharMask; DevicePath: TYPE ~ ImagerScanConverter.DevicePath; FontAtom: TYPE ~ ImagerFontPrivate.FontAtom; Transformation: TYPE ~ ImagerTransformation.Transformation; ManhattanPolygon: TYPE ~ ImagerManhattan.Polygon; DeviceRectangle: TYPE ~ ImagerManhattan.DeviceRectangle; Font: TYPE ~ ImagerFont.Font; XChar: TYPE ~ ImagerFont.XChar; XStringProc: TYPE ~ ImagerFont.XStringProc; Flags: TYPE ~ RECORD[ clientToDevice: BOOL _ FALSE, -- clientToDevice is valid clientClipper: BOOL _ FALSE, -- clientClipMask and clientClipBox are valid fontInfo: BOOL _ FALSE, -- charToDevice and fontAtom are valid deviceColor: BOOL _ FALSE, -- color last set by SetColor[device, ...] is valid devicePriority: BOOL _ FALSE, -- priority last set by SetPriority[device, ...] is valid unused: [0..3777B] _ 0 ]; noFlags: Flags ~ []; OrFlags: PROC[f1, f2: Flags] RETURNS[Flags] ~ INLINE { RETURN[LOOPHOLE[Basics.BITOR[LOOPHOLE[f1], LOOPHOLE[f2]]]]; }; AndFlags: PROC[f1, f2: Flags] RETURNS[Flags] ~ INLINE { RETURN[LOOPHOLE[Basics.BITAND[LOOPHOLE[f1], LOOPHOLE[f2]]]]; }; NotFlags: PROC[f: Flags] RETURNS[Flags] ~ INLINE { RETURN[LOOPHOLE[Basics.BITNOT[LOOPHOLE[f]]]]; }; FontCache: TYPE ~ ImagerCache.Ref; charArraySize: NAT ~ 128; CharArrayIndex: TYPE ~ NAT[0..charArraySize); CharArray: TYPE ~ REF CharArrayRep; CharArrayRep: TYPE ~ ARRAY CharArrayIndex OF CharMask; Data: TYPE ~ REF DataRep; DataRep: TYPE ~ RECORD[ device: Device _ NIL, -- a particular raster device charArray: CharArray _ NIL, -- local cache of recently used characters fontCache: FontCache _ NIL, rastWeight: REAL _ 0.0, -- bigger values favor bitmaps in the cache. fontTuner: ImagerRaster.FontTuner _ NIL, devicePath: DevicePath _ NIL, -- scratch storage for scan converter valid: Flags _ [], viewToDevice: Transformation _ NIL, -- always valid viewClipMask: ManhattanPolygon _ NIL, -- device coords; always valid viewClipBox: DeviceRectangle _ [0, 0, 0, 0], -- device coords; always valid clientToDevice: Transformation _ NIL, -- valid iff valid.clientToDevice clientClipMask: ManhattanPolygon _ NIL, -- device coords; valid iff valid.clientClipper clientClipRect: DeviceRectangle _ [0, 0, 0, 0], -- device coords; valid iff valid.clientClipper clientClipBox: DeviceBox _ [0, 0, 0, 0], -- device coords; valid iff valid.clientClipper clientClipBoxOnly: BOOL _ FALSE, -- client clipper is equal to clientClipBox; valid iff valid.clientClipper specialClipPresent: BOOL _ FALSE, -- Used by ImagerOpsImpl specialClipRect: DeviceRectangle _ [0, 0, 0, 0], -- device coords; valid iff specialClipPresent maskToDevice: Transformation _ NIL, -- scratch storage for MaskBits and MaskPixel fontAtom: FontAtom _ NIL, -- valid iff valid.fontInfo charToDevice: Transformation _ NIL -- valid iff valid.fontInfo ]; NoteStateChanges: PROC [data: Data, state: ImagerState.State]; ValidateIfNeeded: PROC [data: Data, state: ImagerState.State, needs: Flags]; ClipBoxToMask: PROC [box: DeviceBox, mask: ManhattanPolygon, action: PROC[DeviceBox]]; RasterShow: PROC [context: Context, string: XStringProc, xrel: BOOL]; BasicShowChar: PROC [context: Context, font: Font, char: XChar, checkBB: BOOL, imaging: BOOL, fontTuner: ImagerRaster.FontTuner _ NIL]; ShowCharacterMask: PROC [data: Data, mask: CharMask, s: INTEGER, f: INTEGER]; RasterShowText: PROC [context: Context, text: REF READONLY TEXT, start, len: NAT, xrel: BOOL]; END.