<> <> <> <<>> <> DIRECTORY II USING [Context, Transformation], IIBox USING [Box], IIFont USING [Font, XChar, XStringProc], IIMaskCache USING [CharMask, CharMaskRep, MaskCache, ScaledVec], IIDevice USING [AllowedMasks, DeviceClass, DeviceParm], Scaled USING [zero], SF USING [Box, Vec], IIState USING [State]; IIRasterShow: CEDAR DEFINITIONS ~ BEGIN Context: TYPE ~ II.Context; State: TYPE ~ IIState.State; <> <> <<>> ScaledVec: TYPE ~ IIMaskCache.ScaledVec; zeroScaledVec: ScaledVec ~ [Scaled.zero, Scaled.zero]; ShowData: TYPE ~ REF ShowDataRep; ShowDataRep: TYPE ~ RECORD [ fontCache: IIMaskCache.MaskCache _ NIL, fontAtom: IIFont.Font _ NIL, -- canonicalized ref used as part of key for font cache fontBB: IIBox.Box _ [0, 0, 0, 0], -- device coords; valid iff valid.fontBB viewToDevice: II.Transformation _ NIL, clipBounds: SF.Box _ [], deviceClass: IIDevice.DeviceClass _ NIL, deviceParm: IIDevice.DeviceParm _ NIL, allow: IIDevice.AllowedMasks _ [FALSE, FALSE, FALSE, FALSE, FALSE, FALSE], <<-- The remaining items are set and used only inside of fast cases of Show>> correctPass: [0..2] _ 0, -- matches state.np.correctPass valid: BOOL _ FALSE, -- says whether any of the following is valid cp: ScaledVec _ zeroScaledVec, -- device coordinates, offset by 1/2 pixel correctSum: ScaledVec _ zeroScaledVec, -- used only in correct pass 1 correctMask: ScaledVec _ zeroScaledVec, -- used only in correct pass 2 lastAmpMask: IIMaskCache.CharMask _ NIL, -- validates lastAmp lastAmp: ScaledVec _ zeroScaledVec, -- amplified space width lastUnCorrectedSpace: ScaledVec _ zeroScaledVec, -- validates lastCorrectedSpace lastCorrectedSpace: ScaledVec _ zeroScaledVec -- used only in correct pass 2 ]; GetShowData: PROC [context: Context] RETURNS [ShowData]; <> BasicShowChar: PROC [context: Context, char: IIFont.XChar]; <> CachedShowChar: PROC [context: Context, char: IIFont.XChar]; <> MaskCharMask: PROC [context: Context, charMask: IIMaskCache.CharMask] RETURNS [ok: BOOL]; <> RasterMask: TYPE ~ REF IIMaskCache.CharMaskRep.raster; CommonChar: TYPE ~ [0..255]; GetCharArray: PROC [fontAtom: IIFont.Font] RETURNS [r: REF ARRAY CommonChar OF RasterMask]; CommonCharLookup: PROC [showData: ShowData, charArray: REF ARRAY CommonChar OF RasterMask, char: IIFont.XChar] RETURNS [m: RasterMask _ NIL]; TryFastState: PROC [state: State, showData: ShowData]; <> DoCharMetrics: PROC [state: State, showData: ShowData, m: IIMaskCache.CharMask]; <> FlushState: PROC [state: State, showData: ShowData]; <> BitFont: PROC RETURNS [IIFont.Font]; <> <<>> RasterShow: PROC [context: Context, string: IIFont.XStringProc, xrel: BOOL]; <> <<>> FastShow: PROC [context: Context, string: IIFont.XStringProc, xrel: BOOL]; <> END.