-- AltoFont.mesa -- Last changed by Doug Wyatt, September 9, 1980 4:08 PM DIRECTORY Font USING [Id]; AltoFont: DEFINITIONS = { Handle: TYPE = LONG POINTER TO Object; New: PROC[id: Font.Id, size: CARDINAL] RETURNS[Handle]; Default: PROC RETURNS[Handle]; BBox: TYPE = RECORD [ dx,dy: CARDINAL, ox,oy: INTEGER, wx,wy: INTEGER ]; Rast: TYPE = RECORD [ bca: LONG POINTER, bmr: CARDINAL, x0,y0: INTEGER ]; Character: PROC[self: Handle, c: CHARACTER, bbox: POINTER TO BBox, rast: POINTER TO Rast] = INLINE { self.procs.Character[self,c,bbox,rast] }; CharBox: PROC[self: Handle, c: CHARACTER] RETURNS[bbox: BBox] = INLINE { self.procs.CharBox[self,c,@bbox] }; StringBox: PROC[self: Handle, s: LONG STRING] RETURNS[bbox: BBox] = INLINE { self.procs.StringBox[self,s,@bbox] }; FontBox: PROC[self: Handle] RETURNS[bbox: BBox] = INLINE { self.procs.FontBox[self,@bbox] }; Free: PROC[selfPtr: LONG POINTER TO Handle] = INLINE { IF selfPtr^#NIL THEN selfPtr^.procs.Free[selfPtr] }; Object: PRIVATE TYPE = RECORD [ procs: LONG POINTER TO READONLY Procs, data: LONG POINTER TO Data ]; Procs: PRIVATE TYPE = RECORD [ Character: PROC[self: Handle, c: CHARACTER, bbox: POINTER TO BBox, rast: POINTER TO Rast], CharBox: PROC[self: Handle, c: CHARACTER, bbox: POINTER TO BBox], StringBox: PROC[self: Handle, s: LONG STRING, bbox: POINTER TO BBox], FontBox: PROC[self: Handle, bbox: POINTER TO BBox], Free: PROC[selfPtr: LONG POINTER TO Handle] ]; Data: PRIVATE TYPE; AltoFontImpl: PROGRAM; }.(670)