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