-- Compiler IxDefs
-- Tiberi January 21, 1980  12:41 AM

DIRECTORY
	AltoDefs: FROM "AltoDefs" USING [BYTE];

IxDefs: DEFINITIONS =
BEGIN OPEN AltoDefs;
BcplLong: TYPE=MACHINE DEPENDENT RECORD[highbits,lowbits: CARDINAL];

IXType: TYPE = [0..16);
IXTypeEnd: IXType = 0;
IXTypeName: IXType = 1;
IXTypeWidths: IXType = 4;
IXTypeMultiChars: IXType = 6;

IXH: TYPE = MACHINE DEPENDENT RECORD	-- IX header
	[ type: IXType, length: [0..4096) ];

IXName: TYPE = MACHINE DEPENDENT RECORD	--for debugging
	[header: IXH,
	code: WORD,
	name: PACKED ARRAY [0..20) OF CHARACTER];

IXWidths: TYPE = MACHINE DEPENDENT RECORD	--for debugging
	[header: IXH,
	fam,face: BYTE,
	bc,ec: BYTE,
	siz: INTEGER,
	rotation: CARDINAL,
	sa: RECORD[highbits,lowbits: CARDINAL],
	len: LONG CARDINAL,
	resolutionx: INTEGER,
	resolutiony: INTEGER];

IX: TYPE = MACHINE DEPENDENT RECORD
[header: IXH,
body: SELECT OVERLAID * FROM
IXTypeName =>
	[code: WORD,
	name: PACKED ARRAY [0..20) OF CHARACTER],
IXTypeWidths =>
	[fam,face: BYTE,
	bc,ec: BYTE,
	siz: INTEGER,
	rotation: CARDINAL,
	sa: BcplLong,
	len: BcplLong,
	resolutionx: INTEGER,
	resolutiony: INTEGER],

ENDCASE ];

WTB: TYPE = MACHINE DEPENDENT RECORD	--Width Table Block
[XL,YB,			--X,Y offset
XW,YH: INTEGER,		--width, height
XWidthFixed,YWidthFixed: BOOLEAN,
spare: [0..16384)
];

--Codes in the height entry for a char that indicate something else:
HNonExCode: INTEGER = -1;
HSplineCode: INTEGER = -2;

CharWidth: TYPE = RECORD	--Block describing char widths
[WX,WY: LONG INTEGER,	--X width,Y width
XL,YB: INTEGER,		--X left, Y bottom (offset)
W,H: INTEGER		--Width, {Height or special}
];

END.