mirror of
https://github.com/elliotnunn/supermario.git
synced 2024-11-29 20:49:19 +00:00
271 lines
7.2 KiB
C
271 lines
7.2 KiB
C
/************************************************************
|
|
|
|
Created: Saturday, January 26, 1991 at 10:45 PM
|
|
Fonts.h
|
|
C Interface to the Macintosh Libraries
|
|
|
|
|
|
Copyright Apple Computer, Inc. 1985-1990
|
|
All rights reserved
|
|
|
|
************************************************************/
|
|
|
|
|
|
#ifndef __FONTS__
|
|
#define __FONTS__
|
|
|
|
#ifndef __TYPES__
|
|
#include <Types.h>
|
|
#endif
|
|
|
|
|
|
enum {
|
|
|
|
systemFont = 0,
|
|
applFont = 1,
|
|
newYork = 2,
|
|
geneva = 3,
|
|
monaco = 4,
|
|
venice = 5,
|
|
london = 6,
|
|
athens = 7,
|
|
sanFran = 8,
|
|
toronto = 9,
|
|
cairo = 11,
|
|
losAngeles = 12,
|
|
times = 20,
|
|
helvetica = 21,
|
|
courier = 22,
|
|
symbol = 23,
|
|
mobile = 24,
|
|
commandMark = 17,
|
|
checkMark = 18,
|
|
diamondMark = 19
|
|
};
|
|
enum {
|
|
appleMark = 20,
|
|
propFont = 36864,
|
|
prpFntH = 36865,
|
|
prpFntW = 36866,
|
|
prpFntHW = 36867,
|
|
fixedFont = 45056,
|
|
fxdFntH = 45057,
|
|
fxdFntW = 45058,
|
|
fxdFntHW = 45059,
|
|
fontWid = 44208
|
|
};
|
|
|
|
struct FMInput {
|
|
short family;
|
|
short size;
|
|
Style face;
|
|
Boolean needBits;
|
|
short device;
|
|
Point numer;
|
|
Point denom;
|
|
};
|
|
|
|
typedef struct FMInput FMInput;
|
|
|
|
struct FMOutput {
|
|
short errNum;
|
|
Handle fontHandle;
|
|
unsigned char boldPixels;
|
|
unsigned char italicPixels;
|
|
unsigned char ulOffset;
|
|
unsigned char ulShadow;
|
|
unsigned char ulThick;
|
|
unsigned char shadowPixels;
|
|
char extra;
|
|
unsigned char ascent;
|
|
unsigned char descent;
|
|
unsigned char widMax;
|
|
char leading;
|
|
char unused;
|
|
Point numer;
|
|
Point denom;
|
|
};
|
|
|
|
typedef struct FMOutput FMOutput;
|
|
typedef FMOutput *FMOutPtr;
|
|
|
|
struct FontRec {
|
|
short fontType; /*font type*/
|
|
short firstChar; /*ASCII code of first character*/
|
|
short lastChar; /*ASCII code of last character*/
|
|
short widMax; /*maximum character width*/
|
|
short kernMax; /*negative of maximum character kern*/
|
|
short nDescent; /*negative of descent*/
|
|
short fRectWidth; /*width of font rectangle*/
|
|
short fRectHeight; /*height of font rectangle*/
|
|
short owTLoc; /*offset to offset/width table*/
|
|
short ascent; /*ascent*/
|
|
short descent; /*descent*/
|
|
short leading; /*leading*/
|
|
short rowWords; /*row width of bit image / 2 */
|
|
};
|
|
|
|
typedef struct FontRec FontRec;
|
|
|
|
struct FMetricRec {
|
|
Fixed ascent; /*base line to top*/
|
|
Fixed descent; /*base line to bottom*/
|
|
Fixed leading; /*leading between lines*/
|
|
Fixed widMax; /*maximum character width*/
|
|
Handle wTabHandle; /*handle to font width table*/
|
|
};
|
|
|
|
typedef struct FMetricRec FMetricRec;
|
|
|
|
struct WidEntry {
|
|
short widStyle; /*style entry applies to*/
|
|
};
|
|
|
|
typedef struct WidEntry WidEntry;
|
|
|
|
struct WidTable {
|
|
short numWidths; /*number of entries - 1*/
|
|
};
|
|
|
|
typedef struct WidTable WidTable;
|
|
|
|
struct AsscEntry {
|
|
short fontSize;
|
|
short fontStyle;
|
|
short fontID; /*font resource ID*/
|
|
};
|
|
|
|
typedef struct AsscEntry AsscEntry;
|
|
|
|
struct FontAssoc {
|
|
short numAssoc; /*number of entries - 1*/
|
|
};
|
|
|
|
typedef struct FontAssoc FontAssoc;
|
|
|
|
struct StyleTable {
|
|
short fontClass;
|
|
long offset;
|
|
long reserved;
|
|
char indexes[48];
|
|
};
|
|
|
|
typedef struct StyleTable StyleTable;
|
|
|
|
struct NameTable {
|
|
short stringCount;
|
|
Str255 baseFontName;
|
|
};
|
|
|
|
typedef struct NameTable NameTable;
|
|
|
|
struct KernPair {
|
|
char kernFirst; /*1st character of kerned pair*/
|
|
char kernSecond; /*2nd character of kerned pair*/
|
|
short kernWidth; /*kerning in 1pt fixed format*/
|
|
};
|
|
|
|
typedef struct KernPair KernPair;
|
|
|
|
struct KernEntry {
|
|
short kernLength; /*length of this entry*/
|
|
short kernStyle; /*style the entry applies to*/
|
|
};
|
|
|
|
typedef struct KernEntry KernEntry;
|
|
|
|
struct KernTable {
|
|
short numKerns; /*number of kerning entries*/
|
|
};
|
|
|
|
typedef struct KernTable KernTable;
|
|
|
|
struct WidthTable {
|
|
Fixed tabData[256]; /*character widths*/
|
|
Handle tabFont; /*font record used to build table*/
|
|
long sExtra; /*space extra used for table*/
|
|
long style; /*extra due to style*/
|
|
short fID; /*font family ID*/
|
|
short fSize; /*font size request*/
|
|
short face; /*style (face) request*/
|
|
short device; /*device requested*/
|
|
Point inNumer; /*scale factors requested*/
|
|
Point inDenom; /*scale factors requested*/
|
|
short aFID; /*actual font family ID for table*/
|
|
Handle fHand; /*family record used to build up table*/
|
|
Boolean usedFam; /*used fixed point family widths*/
|
|
unsigned char aFace; /*actual face produced*/
|
|
short vOutput; /*vertical scale output value*/
|
|
short hOutput; /*horizontal scale output value*/
|
|
short vFactor; /*vertical scale output value*/
|
|
short hFactor; /*horizontal scale output value*/
|
|
short aSize; /*actual size of actual font used*/
|
|
short tabSize; /*total size of table*/
|
|
};
|
|
|
|
typedef struct WidthTable WidthTable;
|
|
|
|
struct FamRec {
|
|
short ffFlags; /*flags for family*/
|
|
short ffFamID; /*family ID number*/
|
|
short ffFirstChar; /*ASCII code of 1st character*/
|
|
short ffLastChar; /*ASCII code of last character*/
|
|
short ffAscent; /*maximum ascent for 1pt font*/
|
|
short ffDescent; /*maximum descent for 1pt font*/
|
|
short ffLeading; /*maximum leading for 1pt font*/
|
|
short ffWidMax; /*maximum widMax for 1pt font*/
|
|
long ffWTabOff; /*offset to width table*/
|
|
long ffKernOff; /*offset to kerning table*/
|
|
long ffStylOff; /*offset to style mapping table*/
|
|
short ffProperty[9]; /*style property info*/
|
|
short ffIntl[2]; /*for international use*/
|
|
short ffVersion; /*version number*/
|
|
};
|
|
|
|
typedef struct FamRec FamRec;
|
|
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
pascal void InitFonts(void)
|
|
= 0xA8FE;
|
|
pascal void GetFontName(short familyID,Str255 name)
|
|
= 0xA8FF;
|
|
pascal void GetFNum(ConstStr255Param name,short *familyID)
|
|
= 0xA900;
|
|
pascal Boolean RealFont(short fontNum,short size)
|
|
= 0xA902;
|
|
pascal void SetFontLock(Boolean lockFlag)
|
|
= 0xA903;
|
|
pascal FMOutPtr FMSwapFont(const FMInput *inRec)
|
|
= 0xA901;
|
|
pascal void SetFScaleDisable(Boolean fscaleDisable)
|
|
= 0xA834;
|
|
pascal void FontMetrics(const FMetricRec *theMetrics)
|
|
= 0xA835;
|
|
pascal void SetFractEnable(Boolean fractEnable);
|
|
pascal Boolean IsOutline(Point numer,Point denom)
|
|
= {0x7000,0xA854};
|
|
pascal void SetOutlinePreferred(Boolean outlinePreferred)
|
|
= {0x7001,0xA854};
|
|
pascal Boolean GetOutlinePreferred(void)
|
|
= {0x7009,0xA854};
|
|
pascal OSErr OutlineMetrics(short byteCount,const void *textPtr,Point numer,
|
|
Point denom,short *yMax,short *yMin,FixedPtr awArray,FixedPtr lsbArray,
|
|
RectPtr boundsArray)
|
|
= {0x7008,0xA854};
|
|
pascal void SetPreserveGlyph(Boolean preserveGlyph)
|
|
= {0x700A,0xA854};
|
|
pascal Boolean GetPreserveGlyph(void)
|
|
= {0x700B,0xA854};
|
|
pascal OSErr FlushFonts(void)
|
|
= {0x700C,0xA854};
|
|
void getfnum(char *theName,short *familyID);
|
|
void getfontname(short familyID,char *theName);
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|