-- Compiler GriffinFontDefs
-- Stone, February 18, 1980 5:02 PM
-- Tiberi January 24, 1980 4:58 PM
-- interface module for griffin fonts
-- Last Edited by: Stone, December 28, 1983 3:56 pm
DIRECTORY
StyleDefs,
Rope USING [ROPE],
Graphics USING [Context],
PointDefs USING[ObjPt];
GriffinFontDefs: DEFINITIONS =
BEGIN
-- rotation in minutes, face as in Fonts.Widths
FontDescriptor: TYPE = RECORD [name: Rope.ROPE, rotation, face, points: CARDINAL];
Rot0Degrees: CARDINAL = 0;
Rot90Degrees: CARDINAL = 5400;
Rot180Degrees: CARDINAL = 10800;
Rot270Degrees: CARDINAL = 16200;
Regular: CARDINAL = 0;
Italic: CARDINAL = 1;
Bold: CARDINAL = 2;
BoldItalic: CARDINAL = Bold + Italic;
FontDescriptorHandle: TYPE = REF FontDescriptor;
ForAllFonts: PROCEDURE[do: PROCEDURE[font: FontDescriptorHandle]];
DisplayString: PROCEDURE [string: Rope.ROPE,
anchorPt: PointDefs.ObjPt,
anchor: StyleDefs.Anchor,
orientation: StyleDefs.Orientation,
fd: FontDescriptorHandle,
dc: Graphics.Context];
--The following metrics are in Object coordinates
Width, Height: PROCEDURE [c: CHARACTER, fd: FontDescriptorHandle]
RETURNS [REAL];
StringWidth, StringHeight: PROCEDURE [string: Rope.ROPE, fd: FontDescriptorHandle, orientation: StyleDefs.Orientation]
RETURNS [REAL];
MaxWidth, MaxHeight, MaxPosExtent: PROCEDURE [fd: FontDescriptorHandle]
RETURNS [REAL];
TopLeft: PROCEDURE [anchorPt: PointDefs.ObjPt,
height, width: REAL, --same coordinates as anchorPt
anchor: StyleDefs.Anchor,
orientation: StyleDefs.Orientation,
rotation: CARDINAL]
RETURNS [tl: PointDefs.ObjPt];
BltChar: PROCEDURE [char: CHARACTER, tl: PointDefs.ObjPt,
fd: FontDescriptorHandle];
FontError: SIGNAL;
ErrorType: TYPE = {nofonts, nowidths};
StartupFontError: SIGNAL[type: ErrorType];
END.