DIRECTORY IIFont USING [Font, CorrectionType, XChar], IISample USING [SampleMap], Scaled USING [Value], SF USING [Box, BoxAction, maxBox, Vec, zeroVec]; IIMaskCache: CEDAR DEFINITIONS ~ BEGIN XChar: TYPE ~ IIFont.XChar; Run: TYPE ~ MACHINE DEPENDENT RECORD [fMin: CARDINAL, lastRun: BOOL, fSize: NAT]; ScaledVec: TYPE ~ RECORD [s, f: Scaled.Value]; CharMask: TYPE ~ REF CharMaskRep; CharMaskRep: TYPE ~ MACHINE DEPENDENT RECORD [ font: IIFont.Font, -- font and char together provide a unique identifier for this mask char: IIFont.XChar, escapement: ScaledVec, box: SF.Box, amplified: BOOL, correction: IIFont.CorrectionType, flag: PACKED ARRAY [0..11) OF [0..1], -- for padding and expansion data: SELECT rep: * FROM raster => [bits: SEQUENCE COMPUTED CARDINAL -- sSize*Ceiling[fSize/16.0] -- OF WORD], runs => [run: SEQUENCE nRuns: CARDINAL OF Run], culled, maskNotCacheable => [], ENDCASE ]; BitmapFromCharMask: PROC [charMask: CharMask] RETURNS [IISample.SampleMap]; BoxesFromCharMask: PROC [charMask: CharMask, boxAction: SF.BoxAction, delta: SF.Vec _ SF.zeroVec, clip: SF.Box _ SF.maxBox]; MaskCache: TYPE ~ REF MaskCacheRep; MaskCacheRep: TYPE; Create: PROC [size: NAT] RETURNS [MaskCache]; Size: PROC [x: MaskCache] RETURNS [NAT]; Fetch: PROC [x: MaskCache, font: REF, char: XChar] RETURNS [CharMask]; Store: PROC [x: MaskCache, charMask: CharMask] RETURNS [ok: BOOL]; Flush: PROC [x: MaskCache]; GetList: PROC [x: MaskCache] RETURNS [LIST OF CharMask]; GetNamedCache: PROC [atom: ATOM, createSize: NAT] RETURNS [MaskCache]; FlushAll: PROC; END. PIIMaskCache.mesa Copyright Σ 1986 by Xerox Corporation. All rights reserved. Michael Plass, November 21, 1986 2:01:51 pm PST Doug Wyatt, May 19, 1985 4:06:38 pm PDT Device-dependent Character Masks Same as PDFileFormat.Run; fMin is relative to fMinBB. Character Mask Caches Number of elements in the cache. Returns FALSE if the cache is full. Since this is a cache, the implementation reserves the right to replace a previously existing entry. Makes the cache empty. In case somebody wants to save the cache somewhere else. For sharing caches by name. Flushes all the named caches. ΚΫ˜codešœ™Kšœ<™