-- 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.