-- TEditFont.mesa; Last Edited by McGregor, 24-Aug-81 15:48:55 DIRECTORY NodeStyle USING [Dist], NameSymbolTable USING [Name]; TEditFont: DEFINITIONS = BEGIN Font: TYPE = REF FontObject; FontObject: TYPE = RECORD [ height: [0..7777B] ← NULL, kerned: BOOLEAN ← NULL, width: PACKED ARRAY CHARACTER[0C..177C] OF [0..255] ← NULL, raster: CARDINAL ← NULL, maxWidth: CARDINAL ← NULL, min, max: CHARACTER ← NULL, address: LONG POINTER ← NIL, bitmap: LONG POINTER TO ARRAY [0..0) OF WORD ← NULL, xInSegment: LONG POINTER TO ARRAY CHARACTER[0C..0C) OF CARDINAL ← NULL, family: NameSymbolTable.Name, size: NodeStyle.Dist ← 0.0, next: Font ← NIL ]; defaultFont: REF --READONLY-- FontObject; CharWidth: PROCEDURE [char: CHARACTER, font: Font ← defaultFont] RETURNS [[0..LAST[INTEGER]]] = INLINE {RETURN[font.width[char]]}; StringWidth: PROCEDURE [string: STRING, font: Font ← defaultFont] RETURNS [[0..LAST[INTEGER]]] ; FontHeight: PROCEDURE [font: Font ← defaultFont] RETURNS [[0..LAST[INTEGER]]] = INLINE {RETURN [font.height]} ; XInSegment: PROCEDURE [char: CHARACTER, font: Font] RETURNS [CARDINAL] = INLINE {RETURN[font.xInSegment[char]]} ; EstablishFont: PUBLIC PROCEDURE [family: NameSymbolTable.Name, size: NodeStyle.Dist] RETURNS [Font] ; Error: ERROR [code: ErrorCode] ; ErrorCode: TYPE = {illegalFormat} ; END.