Subversion Repositories filter_foundry

Rev

Rev 193 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 193 Rev 259
Line 1... Line -...
1
/*
-
 
2
 * ATMInterface.h
1
/*
-
 
2
 * ATMInterface.h
-
 
3
 *
-
 
4
 * Version 3.0
-
 
5
 *
-
 
6
 * Adobe Type Manager is a trademark of Adobe Systems Incorporated.
-
 
7
 * Copyright 1983-1991 Adobe Systems Incorporated.
-
 
8
 * All Rights Reserved.
-
 
9
 */
-
 
10
 
-
 
11
#ifndef _H_ATMInterface
-
 
12
#define _H_ATMInterface
-
 
13
 
-
 
14
#include <Dialogs.h>                                    /* needed for MMFPHook declaration */
-
 
15
 
-
 
16
/*
-
 
17
 * This defines which language calling conventions you wish to use for the
-
 
18
 * "pre-3.0" calls with ATM 3.0. For example, do you want the field "fontAvailable"
-
 
19
 * a C or Pascal routine? If you wish this to be a PASCAL routine always, use
-
 
20
 *              #define ATM_LANG        pascal
-
 
21
 * We don't advise doing this unless you are guaranteed that the ATM you will
-
 
22
 * be working with will _always_ be ATM 3.0 or greater!  But, you MUST do this
-
 
23
 *if you request ATMPascalProcsStatusCode instead of ATMProcsStatusCode.
-
 
24
 */
-
 
25
#ifndef ATM_LANG
-
 
26
#define ATM_LANG        ATM_C
-
 
27
#endif
-
 
28
 
-
 
29
/*
-
 
30
 * Does your compiler support function prototypes in structure fields? If so, we
-
 
31
 * will supply them for you. Older versions of Think C (pre-5.0) don't and will give
-
 
32
 * error messages for prototyping function pointers in structs, so you will want
-
 
33
 * to turn this off.
-
 
34
 */
-
 
35
#ifndef ATM_USE_PROTOTYPES
-
 
36
#       if !defined(THINK_C) || THINK_C == 5
-
 
37
#               define ATM_USE_PROTOTYPES       1
-
 
38
#       else
-
 
39
#               define ATM_USE_PROTOTYPES       0
-
 
40
#       endif
-
 
41
#endif
-
 
42
 
-
 
43
/*
-
 
44
 * Think C 4.0 (THINK_C == 1) doesn't allow the "pascal" keyword in function pointers
-
 
45
 * in structs.
-
 
46
 */
-
 
47
#ifndef ATM_C
-
 
48
#define ATM_C
-
 
49
#endif
-
 
50
#ifndef ATM_PASCAL
-
 
51
#       if !defined(THINK_C) || THINK_C == 5
-
 
52
#               define ATM_PASCAL       pascal
-
 
53
#       else
-
 
54
#               define ATM_PASCAL
-
 
55
#       endif
-
 
56
#endif
-
 
57
 
-
 
58
#define MaxLegalBlendName       31                      /* Maximum size of a legal font name (w/o len). */
-
 
59
#define MaxBlendEntries         16                      /* Max entries in a blend vector.                               */
-
 
60
#define MaxBlendAxes            4                       /* Can specify 4 dimensions.                                    */
-
 
61
 
-
 
62
#define WeightAxis      (StringPtr) "\pWeight"  /* Weight axis identifier.                                      */
-
 
63
#define WidthAxis       (StringPtr) "\pWidth"   /* Width axis identifier.                                       */
-
 
64
 
-
 
65
/* For the "method" parameter of CopyFit. */
-
 
66
enum {
-
 
67
        ATMCopyFitDefault,                                      /* Let us choose the best method for H&J.               */
-
 
68
        ATMCopyFitConstStems,                           /* Keep the stem widths constant.                               */
-
 
69
        ATMCopyFitVarStems                                      /* Allow stem widths to vary.                                   */
-
 
70
};
-
 
71
 
-
 
72
typedef long ATMFixed;
-
 
73
 
-
 
74
typedef short ATMErr;
-
 
75
 
-
 
76
/*
-
 
77
 * For MPW users who don't want to use the ATMInterface.a glue routines:
-
 
78
 * you must use ATMPascalProcsStatusCode.  This in turn requires that you
-
 
79
 *              #define ATM_LANG pascal
-
 
80
 * (as described above) before #include'ing ATMInterface.h.
-
 
81
 */
-
 
82
#define ATMProcsStatusCode                      0
-
 
83
#define ATMPascalProcsStatusCode        16
-
 
84
#define ATMPickerControlCode            10
-
 
85
 
-
 
86
/* Return codes from GetBlendedFontType                                                                                                 */
-
 
87
#define ATMNotBlendFont                         0
-
 
88
#define ATMBlendFontInstance            1
-
 
89
#define ATMBlendFontBaseDesign          2
-
 
90
#define ATMTempBlendFont                        3
-
 
91
 
-
 
92
typedef struct
-
 
93
        {
-
 
94
        ATMFixed a, b, c, d, tx, ty;
-
 
95
        } ATMFixedMatrix;
-
 
96
 
-
 
97
typedef struct
-
 
98
        {
-
 
99
        ATMFixed x, y;
-
 
100
        } ATMFixedPoint, *ATMPFixedPoint;
-
 
101
 
-
 
102
/*
-
 
103
 * This structure is filled via getFontSpecsATM() and gives additional information
-
 
104
 * about the current font than we can get from just the FOND. Make sure that the
-
 
105
 * appropriate bits are set when the fields are filled in, and the "SpecsReserved"
-
 
106
 * is initialized to zero!
-
 
107
 *
-
 
108
 * As of the 3.0 release, only the vertical stem width and xheight are used,
-
 
109
 * though the cap height might be used if the xheight is not available. This structure
-
 
110
 * is designed to be expandable as needed in the future.
-
 
111
 *
-
 
112
 * The version number MUST be initialized to zero or one...
-
 
113
 */
-
 
114
#define FontSpecsVersion        1
-
 
115
#define SpecReserve                     23
-
 
116
 
-
 
117
typedef struct FontSpecs {
-
 
118
        short   version;
-
 
119
        Boolean vertStemWidthAvail : 1;         /* Signals that data is available.              */
-
 
120
        Boolean horizStemWidthAvail : 1;
-
 
121
        Boolean xHeightAvail : 1;
-
 
122
        Boolean capHeightAvail : 1;
-
 
123
        Boolean serifWidthAvail : 1;
-
 
124
        Boolean serifHeightAvail : 1;
-
 
125
                        /* These are in version 1 and above. */
-
 
126
        Boolean italicAngleAvail : 1;
-
 
127
        Boolean flagsAvail : 1;
-
 
128
        Boolean lowerCaseScaleAvail : 1;
-
 
129
 
-
 
130
#ifdef THINK_C
-
 
131
        long    SpecsReserved : SpecReserve;    /* Must be initialized to zero (0)!             */
-
 
132
#else
-
 
133
        int             SpecsReserved : SpecReserve;    /* Must be initialized to zero (0)!             */
-
 
134
#endif
-
 
135
       
-
 
136
        Fixed   SpecsVertStemWidth;                     /* Thickness of the vertical stems.             */
-
 
137
        Fixed   SpecsHorizStemWidth;            /* Thickness of the horizontal stems.   */
-
 
138
        Fixed   SpecsxHeight;                           /* The height of the letter 'x'.                */
-
 
139
        Fixed   SpecsCapHeight;                         /* The height of a capital letter.              */
-
 
140
        Fixed   SpecsSerifWidth;                        /* The width of a serif.                                */
-
 
141
        Fixed   SpecsSerifHeight;                       /* The height of a serif, ie. how tall  */
-
 
142
                                                                                /* are the tips off the base line.              */                                     
-
 
143
                        /* These are in version 1 and above. */
-
 
144
        Fixed   SpecsItalicAngle;                       /* How much the font "leans".                   */
-
 
145
        long    SpecsFlags;                                     /* See below for flag values.                   */
-
 
146
        Fixed   SpecsLowerCaseScale;            /* Amount to scale lowercase for
-
 
147
                                                                                 * x-height matching */
-
 
148
 
-
 
149
        Fixed   SpecsResSpace[SpecReserve];     /* Reserved fields for later.                   */
-
 
150
} FontSpecs;
-
 
151
 
-
 
152
#define SPECS_FORCE_BOLD                0x1             /* Font should be artificially emboldened. */
-
 
153
#define SPECS_ALL_CAPS                  0x2             /* Font contains uppercase characters in lowercase positions. */
-
 
154
#define SPECS_SMALL_CAPS                0x4             /* Font contains small capitals in lowercase positions. */
-
 
155
 
-
 
156
/*
-
 
157
 * Creator/Picker option flags
-
 
158
 */
-
 
159
#define CREATOR_DIALOG  0x0001  /* Creator dialog, else Picker dialog */
-
 
160
#define OK_IS_QUIT              0x0002  /* Ok button title becomes Quit */
-
 
161
 
-
 
162
#if ATM_USE_PROTOTYPES
-
 
163
typedef ATM_PASCAL short (*MMFPHook)(short item, DialogPtr theDialog);
-
 
164
#else
-
 
165
typedef ProcPtr MMFPHook;
-
 
166
#endif
-
 
167
 
-
 
168
/*
-
 
169
 * Multiple Master Font Picker parameters
-
 
170
 *
-
 
171
 * All strings are Pascal format.
-
 
172
 *
-
 
173
 * The MMFP_Parms apply to both the Font Picker and Font Creator dialogs.
-
 
174
 * Set the CREATOR_DIALOG bit in "flags" to get the Creator rather than the
-
 
175
 * Picker dialog.  Use "where" to specify the dialog's position, or use [0,0]
-
 
176
 * to get the standard positioning.  Pass in your own "prompt" string or use
-
 
177
 * NULL to get the standard prompt.  Pass in your own "sample" string or use
-
 
178
 * NULL to get the standard sample.  The sample string is continuously redrawn
-
 
179
 * to illustrate the current font as the user navigates through the Multiple
-
 
180
 * Master design space.  A short fragment of the user's selection in the
-
 
181
 * current document is a reasonable alternative to the default sample text.
-
 
182
 * The user is also able to type in the sample box to see other characters.
-
 
183
 * Pass in your own sample "startSize" or use 0 to get the default initial
-
 
184
 * sample size.  The user can also adjust the sample size through a popup
-
 
185
 * menu and type-in size box.  Pass in your own "dlgHook" dialog event hook
-
 
186
 * function if you wish to change the dialog behavior or add your own items.
-
 
187
 * If you specify a "dlgHook", it is called by the Picker immediately after
-
 
188
 * each call to ModalDialog().  Refer to the Standard File Package chapter of
-
 
189
 * Inside Mac for more details on how to write and use a dialog hook routine.
-
 
190
 * Despite their different appearances, both the Creator and Picker dialogs
-
 
191
 * share the same item numbering.
-
 
192
 *
-
 
193
 * When the Picker or Creator dialog is first displayed, the family and
-
 
194
 * instance popup menus and the sliders and axis values are all set to reflect
-
 
195
 * the initial font, and the sample string is rendered in this font at the
-
 
196
 * initial sample size.  There are a number of ways to choose this initial font.
-
 
197
 * If "startFondID" is a Multiple Master font then it is used as the initial
-
 
198
 * font.  If "startFondID" is -1 or a regular (non-Multiple Master) font, then
-
 
199
 * "startFamilyName" is checked.  If this is the name of a Multiple Master
-
 
200
 * font, then the instance at "startCoords" is used as the initial font.
-
 
201
 * "StartCoords" must have as many elements as there are design axes for
-
 
202
 * the specified family.  If "startCoords" is NULL, then the first instance
-
 
203
 * in "startFamilyName" is used as the initial font.  If "startFamilyName"
-
 
204
 * is NULL, then "startCoords" is ignored and the default initial font is
-
 
205
 * chosen.
-
 
206
 */
-
 
207
struct MMFP_Parms
-
 
208
{
-
 
209
        short           version;                        /* (in) always 1 */
-
 
210
        short           flags;                          /* (in) option flags, 0 for default Picker dialog */
-
 
211
        Point           where;                          /* (in) dialog's top-left corner, [0,0] for default */
-
 
212
        StringPtr       prompt;                         /* (in) prompt string, NULL for default */
-
 
213
        StringPtr       sample;                         /* (in) sample string, NULL for default */
-
 
214
        short           startFondID;            /* (in) initial font, -1 for none */
-
 
215
        StringPtr       startFamilyName;        /* (in) initial family, NULL for default */
-
 
216
        Fixed           *startCoords;           /* (in) initial axis coordinates, NULL for default */
-
 
217
        short           startSize;                      /* (in) initial sample size, 0 for default */
-
 
218
        MMFPHook        dlgHook;                        /* (in) application dialog hook function, NULL for none */
-
 
219
};
-
 
220
typedef struct MMFP_Parms               MMFP_Parms, *MMFP_ParmsPtr;
-
 
221
 
-
 
222
/*
-
 
223
 * Multiple Master Font Picker Reply
-
 
224
 *
-
 
225
 * All strings are Pascal format.
-
 
226
 *
-
 
227
 * While the user manipulates the Picker or Creator dialog's controls to
-
 
228
 * navigate through the Multiple Master design space, the sample text is
-
 
229
 * continuously rerendered in the font instance with the selected design
-
 
230
 * coordinates.  A temporary instance is created on the fly whenever a
-
 
231
 * permanent instance does not already exist.  Only the permanent instances
-
 
232
 * remain when the dialog is dismissed.  The Creator dialog has only an
-
 
233
 * OK button while the Picker dialog has both OK and Cancel.  (For both
-
 
234
 * dialogs, OK can be retitled Quit using the OK_IS_QUIT flag bit).  The
-
 
235
 * Picker call returns ATM_NOERR (0) for OK, and ATM_PICKER_CANCELLED for
-
 
236
 * Cancel.  Regardless of the way the user dismisses the dialog, any fields
-
 
237
 * specified in MMFP_Reply are filled in to reflect the state in which the
-
 
238
 * user last left the dialog.
-
 
239
 *
-
 
240
 * Any pointer argument specified as NULL is ignored.  The others are always
-
 
241
 * filled in.  Specify "sample" to get a copy of the user's current sample
-
 
242
 * text string.  Specify "familyName" to get the name of the current
-
 
243
 * Multiple Master family.  Specify "coords" to get an array of design
-
 
244
 * coordinates for the current instance.  "Coords" will contain "numAxes"
-
 
245
 * elements.  Use MaxBlendAxes to safely allocate an array long enough for
-
 
246
 * the returned coordinates.  If the font instance corresponding to these
-
 
247
 * design coordinates was a permanent one, its ID is returned in "fondID".
-
 
248
 * If the instance was a temporary one, it no longer exists, so "fondID" is
-
 
249
 * set to -1.  The calling program may make appropriate ATM calls to create
-
 
250
 * a new temporary or permanent instance of that font using the family name
-
 
251
 * and design coordinates.
-
 
252
 */
-
 
253
struct MMFP_Reply
-
 
254
{
-
 
255
        StringPtr       sample;                         /* (out) last sample string (Str255), NULL to ignore */
-
 
256
        short           fondID;                         /* (out) selected font if permanent, else -1 */
-
 
257
        StringPtr       familyName;                     /* (out) selected family (Str32), NULL to ignore */
-
 
258
        short           numAxes;                        /* (out) number of design axes in selected family */
-
 
259
        Fixed           *coords;                        /* (out) coords of selected instance, NULL to ignore */
-
 
260
        short           size;                           /* (out) last sample size */
-
 
261
};
-
 
262
typedef struct MMFP_Reply               MMFP_Reply, *MMFP_ReplyPtr;
-
 
263
 
-
 
264
#if ATM_USE_PROTOTYPES
-
 
265
#       define ATM_PROTO7(a,b,c,d,e,f,g)        (a,b,c,d,e,f,g)
-
 
266
#       define ATM_PROTO6(a,b,c,d,e,f)          (a,b,c,d,e,f)
-
 
267
#       define ATM_PROTO5(a,b,c,d,e)            (a,b,c,d,e)
-
 
268
#       define ATM_PROTO4(a,b,c,d)                      (a,b,c,d)
-
 
269
#       define ATM_PROTO3(a,b,c)                        (a,b,c)
-
 
270
#       define ATM_PROTO2(a,b)                          (a,b)
-
 
271
#       define ATM_PROTO1(a)                            (a)
-
 
272
#else
-
 
273
#       define ATM_PROTO7(a,b,c,d,e,f,g)        ()
-
 
274
#       define ATM_PROTO6(a,b,c,d,e,f)          ()
-
 
275
#       define ATM_PROTO5(a,b,c,d,e)            ()
-
 
276
#       define ATM_PROTO4(a,b,c,d)                      ()
-
 
277
#       define ATM_PROTO3(a,b,c)                        ()
-
 
278
#       define ATM_PROTO2(a,b)                          ()
-
 
279
#       define ATM_PROTO1(a)                            ()
-
 
280
#endif
-
 
281
 
-
 
282
#define ATMProcs3Version 3
-
 
283
typedef struct
-
 
284
        {
-
 
285
        long version;
-
 
286
        short (*fontAvailable) ATM_PROTO2(short family, short style);
-
 
287
        short (*showText) ATM_PROTO3(Byte *text, short length, ATMFixedMatrix *matrix);
-
 
288
        short (*xyshowText) ATM_PROTO4(Byte *text, short length, ATMFixedMatrix *matrix, Fixed *displacements);
-
 
289
        } ATMProcs3;
-
 
290
 
-
 
291
#define ATMProcs4Version 4
-
 
292
typedef struct
-
 
293
        {
-
 
294
        long version;
-
 
295
        short (*fontAvailable) ATM_PROTO2(short family, short style);
-
 
296
        short (*showTextErr) ATM_PROTO4(Byte *text, short length, ATMFixedMatrix *matrix, short *errorCode);
-
 
297
        short (*xyshowTextErr) ATM_PROTO5(Byte *text, short length, ATMFixedMatrix *matrix,
-
 
298
                                        Fixed *displacements, short *errorCode);
-
 
299
        short (*getOutline) ATM_PROTO7(short c, ATMFixedMatrix *matrix, Ptr clientHook,
-
 
300
                                        short (*MoveTo)(Ptr clientHook, ATMPFixedPoint pc),
-
 
301
                                        short (*LineTo)(Ptr clientHook, ATMPFixedPoint pc),
-
 
302
                                        short (*CurveTo)(Ptr clientHook, ATMPFixedPoint pc1, ATMPFixedPoint pc2, ATMPFixedPoint pc3),
-
 
303
                                        short (*ClosePath)(Ptr clientHook));   
-
 
304
        short (*startFill) ATM_PROTO1(void);
-
 
305
        short (*fillMoveTo) ATM_PROTO1(ATMPFixedPoint pc);
-
 
306
        short (*fillLineTo) ATM_PROTO1(ATMPFixedPoint pc);
-
 
307
        short (*fillCurveTo) ATM_PROTO3(ATMPFixedPoint pc1, ATMPFixedPoint pc2, ATMPFixedPoint pc3);
-
 
308
        short (*fillClosePath) ATM_PROTO1(void);
-
 
309
        short (*endFill) ATM_PROTO1(void);
-
 
310
        } ATMProcs4;
-
 
311
 
-
 
312
#define ATMProcs5Version 5
-
 
313
#define ATMProcs8Version 8
-
 
314
/*
-
 
315
 * Note for version 5 and above.
-
 
316
 *
-
 
317
 * All the routines new for version 5 have pascal interfaces.
-
 
318
 * Depending on how the interface is initialized, the older routines may or may not be
-
 
319
 * pascal interface.
-
 
320
 */
-
 
321
typedef struct
-
 
322
        {
-
 
323
        long version;
-
 
324
        ATM_LANG short (*fontAvailable) ATM_PROTO2(short family, short style);
-
 
325
        ATM_LANG short (*showTextErr) ATM_PROTO4(Byte *text, short length, ATMFixedMatrix *matrix, ATMErr *errorCode);
-
 
326
        ATM_LANG short (*xyshowTextErr) ATM_PROTO5(Byte *text, short length, ATMFixedMatrix *matrix,
-
 
327
                                        Fixed *displacements, ATMErr *errorCode);
-
 
328
        ATM_LANG short (*getOutline) ATM_PROTO7(short c, ATMFixedMatrix *matrix, Ptr clientHook,
-
 
329
                                        short (*MoveTo)(Ptr clientHook, ATMPFixedPoint pc),
-
 
330
                                        short (*LineTo)(Ptr clientHook, ATMPFixedPoint pc),
-
 
331
                                        short (*CurveTo)(Ptr clientHook, ATMPFixedPoint pc1, ATMPFixedPoint pc2, ATMPFixedPoint pc3),
-
 
332
                                        short (*ClosePath)(Ptr clientHook));   
-
 
333
        ATM_LANG short (*startFill) ATM_PROTO1(void);
-
 
334
        ATM_LANG short (*fillMoveTo) ATM_PROTO1(ATMPFixedPoint pc);
-
 
335
        ATM_LANG short (*fillLineTo) ATM_PROTO1(ATMPFixedPoint pc);
-
 
336
        ATM_LANG short (*fillCurveTo) ATM_PROTO3(ATMPFixedPoint pc1, ATMPFixedPoint pc2, ATMPFixedPoint pc3);
-
 
337
        ATM_LANG short (*fillClosePath) ATM_PROTO1(void);
-
 
338
        ATM_LANG short (*endFill) ATM_PROTO1(void);
-
 
339
       
-
 
340
        /* New for version 5 -- control functions for use with control panel (&testing). */
-
 
341
        ATM_PASCAL void (*disable) ATM_PROTO1(void);
-
 
342
        ATM_PASCAL void (*reenable) ATM_PROTO1(void);
-
 
343
 
-
 
344
        /* New for version 5 (with blended fonts) */
-
 
345
        ATM_PASCAL short (*getBlendedFontType) ATM_PROTO2(StringPtr fontName, short fondID);
-
 
346
        ATM_PASCAL ATMErr (*encodeBlendedFontName) ATM_PROTO4(StringPtr familyName, short numAxes,
-
 
347
                                        Fixed *coords, StringPtr blendName);
-
 
348
        ATM_PASCAL ATMErr (*decodeBlendedFontName) ATM_PROTO5(StringPtr blendName, StringPtr familyName,
-
 
349
                                        short *numAxes, Fixed *coords, StringPtr displayInstanceStr);
-
 
350
        ATM_PASCAL ATMErr (*addMacStyleToCoords) ATM_PROTO4(Fixed *coords, short macStyle, Fixed *newCoords, short *stylesLeft);
-
 
351
        ATM_PASCAL ATMErr (*convertCoordsToBlend) ATM_PROTO2(Fixed *coords, Fixed *weightVector);
-
 
352
        ATM_PASCAL ATMErr (*normToUserCoords) ATM_PROTO2(Fixed *normalCoords, Fixed *coords);
-
 
353
        ATM_PASCAL ATMErr (*userToNormCoords) ATM_PROTO2(Fixed *coords, Fixed *normalCoords);
-
 
354
        ATM_PASCAL ATMErr (*createTempBlendedFont) ATM_PROTO3(short numAxes, Fixed *coords, short *useFondID);
-
 
355
        ATM_PASCAL ATMErr (*disposeTempBlendedFont) ATM_PROTO1(short fondID);
-
 
356
        ATM_PASCAL ATMErr (*createPermBlendedFont) ATM_PROTO4(StringPtr fontName, short fontSize, short fontFileID, short *retFondID);
-
 
357
        ATM_PASCAL ATMErr (*disposePermBlendedFont) ATM_PROTO1(short fondID);
-
 
358
        ATM_PASCAL ATMErr (*getTempBlendedFontFileID) ATM_PROTO1(short *fileID);
-
 
359
        ATM_PASCAL ATMErr (*getNumAxes) ATM_PROTO1(short *numAxes);
-
 
360
        ATM_PASCAL ATMErr (*getNumMasters) ATM_PROTO1(short *numMasters);
-
 
361
        ATM_PASCAL ATMErr (*getMasterFOND) ATM_PROTO2(short i, short *masterFOND);
-
 
362
        ATM_PASCAL ATMErr (*copyFit) ATM_PROTO6(short method, Fixed TargetWidth, Fixed *beginCoords,
-
 
363
                                        Fixed *baseWidths, Fixed *resultWidth, Fixed *resultCoords);
-
 
364
        ATM_PASCAL ATMErr (*getFontSpecs) ATM_PROTO1(FontSpecs *hints);
-
 
365
        ATM_PASCAL void (*private1) ATM_PROTO1(void);
-
 
366
        ATM_PASCAL void (*private2) ATM_PROTO1(void);
-
 
367
        ATM_PASCAL ATMErr (*showTextDesign) ATM_PROTO7(StringPtr fontFamily, Byte *text, short len, ATMFixedMatrix *matrix,
-
 
368
                                        Fixed *coords, Fixed *displacements, short *lenDisplayed);
-
 
369
        ATM_PASCAL ATMErr (*getAxisBlendInfo) ATM_PROTO6(short axis, short *userMin, short *userMax,
-
 
370
                                        StringPtr type, StringPtr label, StringPtr shortLabel);
-
 
371
        ATM_PASCAL ATMErr (*fontFit) ATM_PROTO7(Fixed *origCoords, short numTargets, short *varyAxes,
-
 
372
                                        Fixed *targetMetrics, Fixed **masterMetrics,
-
 
373
                                        Fixed *retCoords, Fixed *retWeightVector);
-
 
374
        ATM_PASCAL ATMErr (*getNumBlessedFonts) ATM_PROTO1(short *numBlessedFonts);
-
 
375
        ATM_PASCAL ATMErr (*getBlessedFontName) ATM_PROTO3(short i, StringPtr blessedFontName, Fixed *coords);
-
 
376
        ATM_PASCAL ATMErr (*getRegularBlessedFont) ATM_PROTO1(short *regularIndex);
-
 
377
        ATM_PASCAL ATMErr (*flushCache) ATM_PROTO1(void);
-
 
378
        ATM_PASCAL ATMErr (*getFontFamilyFOND) ATM_PROTO2(StringPtr familyName, short *retFondID);
-
 
379
        ATM_PASCAL ATMErr (*MMFontPicker) ATM_PROTO2(MMFP_Parms *parms, MMFP_Reply *reply);
-
 
380
 
-
 
381
        /* New for version 8 (with faux fonts) */
-
 
382
        ATM_PASCAL Boolean (*isSubstFont) ATM_PROTO5(StringPtr fontName, short fondID, short style, FontSpecs ***fontSpecs, Handle *chamName);
-
 
383
        ATM_PASCAL ATMErr (*spare02) ATM_PROTO1(void);          /* expansion */
-
 
384
        ATM_PASCAL ATMErr (*getPSNum) ATM_PROTO3(StringPtr psName, short *retFondID, Boolean doCreate);
-
 
385
        ATM_PASCAL ATMErr (*spare04) ATM_PROTO1(void);          /* expansion */
-
 
386
        ATM_PASCAL ATMErr (*spare05) ATM_PROTO1(void);          /* expansion */
-
 
387
        ATM_PASCAL ATMErr (*spare06) ATM_PROTO1(void);          /* expansion */
-
 
388
        ATM_PASCAL ATMErr (*spare07) ATM_PROTO1(void);          /* expansion */
-
 
389
        ATM_PASCAL ATMErr (*spare08) ATM_PROTO1(void);          /* expansion */
-
 
390
        ATM_PASCAL ATMErr (*spare09) ATM_PROTO1(void);          /* expansion */
-
 
391
        ATM_PASCAL ATMErr (*spare10) ATM_PROTO1(void);          /* expansion */
-
 
392
        ATM_PASCAL ATMErr (*spare11) ATM_PROTO1(void);          /* expansion */
-
 
393
        ATM_PASCAL ATMErr (*spare12) ATM_PROTO1(void);          /* expansion */
-
 
394
        ATM_PASCAL ATMErr (*spare13) ATM_PROTO1(void);          /* expansion */
-
 
395
        ATM_PASCAL ATMErr (*spare14) ATM_PROTO1(void);          /* expansion */
-
 
396
        ATM_PASCAL ATMErr (*spare15) ATM_PROTO1(void);          /* expansion */
-
 
397
        ATM_PASCAL ATMErr (*spare16) ATM_PROTO1(void);          /* expansion */
-
 
398
        ATM_PASCAL ATMErr (*spare17) ATM_PROTO1(void);          /* expansion */
-
 
399
        ATM_PASCAL ATMErr (*spare18) ATM_PROTO1(void);          /* expansion */
-
 
400
        ATM_PASCAL ATMErr (*spare19) ATM_PROTO1(void);          /* expansion */
-
 
401
        ATM_PASCAL ATMErr (*spare20) ATM_PROTO1(void);          /* expansion */
-
 
402
        } ATMProcs5, ATMProcs8;
-
 
403
 
-
 
404
#define LATEST_VERSION ATMProcs8Version
-
 
405
#define LATEST_PROCS ATMProcs8
-
 
406
 
-
 
407
/* **************** The following routines are available under ATMProcs3Version: **************** */
-
 
408
 
-
 
409
#ifdef __cplusplus
-
 
410
extern "C" {
-
 
411
#endif
-
 
412
 
-
 
413
/* Initializes ATMInterface for a given version, returns 1 if and only if that version
-
 
414
        of the ATM interface is available */
-
 
415
short initVersionATM(short);
-
 
416
 
-
 
417
/* Initializes ATMInterface for a given version, returns 1 if and only if that version
-
 
418
        of the ATM interface is available with the Pascal interfaces */
-
 
419
short initPascalVersionATM(short);
-
 
420
 
-
 
421
/* Returns 1 if and only if ATM can image the specified family and style */
-
 
422
short fontAvailableATM(short family, short style);
-
 
423
 
-
 
424
/* Show length characters starting at text transformed by the specified matrix */
-
 
425
/* Returns the number of characters not shown */
-
 
426
/* Matrix maps one point character space to device space, relative to current pen position */
-
 
427
/* Matrix's tx and ty components are updated */
-
 
428
short showTextATM(Byte *text, short length, ATMFixedMatrix *matrix);
-
 
429
 
-
 
430
/* Show length characters starting at text transformed by the specified matrix */
-
 
431
/* Matrix maps one point character space to device space, relative to current pen position */
-
 
432
/* Matrix's tx and ty components are updated */
-
 
433
/* Character x and y widths are specified by displacements */
-
 
434
/* Returns the number of characters not shown */
-
 
435
short xyshowTextATM(Byte *text, short length, ATMFixedMatrix *matrix, ATMFixed *displacements);
-
 
436
 
-
 
437
#ifdef __cplusplus
-
 
438
}
-
 
439
#endif
-
 
440
 
-
 
441
/* ****************************** end of ATMProcs3Version routines ****************************** */
-
 
442
 
-
 
443
/* **************** The following routines are available under ATMProcs4Version: **************** */
-
 
444
 
-
 
445
#ifdef __cplusplus
-
 
446
extern "C" {
-
 
447
#endif
-
 
448
 
-
 
449
/* Initializes ATMInterface for a given version, returns 1 if and only if that version
-
 
450
        of the ATM interface is available */
-
 
451
short initVersionATM(short);
-
 
452
 
-
 
453
/* Returns 1 if and only if ATM can image the specified family and style */
-
 
454
short fontAvailableATM(short family, short style);
-
 
455
 
-
 
456
/* These error codes are returned by the routines below: */
-
 
457
#define ATM_NOERR                       (0)             /* Normal return */
-
 
458
#define ATM_NO_VALID_FONT       (-1)    /* can't find an outline font, or found a bad font - note that
-
 
459
                                                                         * ATMGetOutline requires an outline font
-
 
460
                                                                         * with exactly the current GrafPort's style(s) */
-
 
461
#define ATM_CANTHAPPEN          (-2)    /* Internal ATM error */
-
 
462
#define ATM_BAD_MATRIX          (-3)    /* Matrix inversion undefined or matrix too big */
-
 
463
#define ATM_MEMORY                      (-4)    /* Ran out of memory */
-
 
464
#define ATM_WRONG_VERSION       (-5)    /* currently installed ATM driver doesn't support this interface */
-
 
465
#define ATM_NOT_ON                      (-6)    /* the ATM driver is missing or has been turned off */
-
 
466
#define ATM_FILL_ORDER          (-7)    /* inconsistent fill calls, e.g. ATMFillMoveTo() without ATMStartFill() */
-
 
467
#define ATM_CANCELLED           (-8)    /* the client halted an operation, e.g. a callback from ATMGetOutline returned 0 */
-
 
468
#define ATM_NO_CHAR                     (-9)    /* the font does not have an outline for this character code */
-
 
469
#define ATM_BAD_LENGTH          (-10)   /* ATMShowText() or ATMxyShowText() was called with length argument <= 0 or > 255 */
-
 
470
#define ATM_PIC_SAVE            (-11)
-
 
471
#define ATM_NOT_BLENDED_FONT (-12)      /* This font is not a blended font. */
-
 
472
#define ATM_BASEDESIGN          (-13)   /* This operation is not allowed on a base design (eg. deleting FOND). */
-
 
473
#define ATM_TEMPFONT_PROB       (-14)   /* We had a problem working with a temporary font. */
-
 
474
#define ATM_ILL_OPER            (-15)   /* Can't perform this operation on this font. */
-
 
475
#define ATM_FONTFIT_FAIL        (-16)   /* FontFit() failed (also from CopyFit()!). */
-
 
476
#define ATM_MISS_BASEDESIGN     (-17)   /* Missing base design FOND. */
-
 
477
#define ATM_NO_BLENDED_FONTS (-18)      /* no Multiple Master fonts installed */
-
 
478
#define ATM_PICKER_CANCELLED (-19)      /* user hit Picker/Creator "Cancel" button */
-
 
479
#define ATM_CREATE_FONT_FAIL (-20)      /* general font creation failure */
-
 
480
#define ATM_DISK_FULL           (-21)   /* out of disk space */
-
 
481
#define ATM_WRITE_PROTECTED     (-22)   /* volume or file is locked */
-
 
482
#define ATM_IO_ERROR            (-23)   /* I/O error */
-
 
483
#define ATM_COPY_PROT           (-24)   /* font is copy-protected */
-
 
484
#define ATM_PROT_OUTLINE        (-25)   /* this outline is copy-protected */
-
 
485
 
-
 
486
/* new error code range so ATM error codes don't overrun any more OS error codes */
-
 
487
#define ATM_SUBST_PROT          (-2627) /* font substitution is copy-protected */
-
 
488
#define ATM_SUBST_DISABLED      (-2628) /* font substitution is turned off */
-
 
489
 
-
 
490
/* new error codes for ATM's font substitution database. */
-
 
491
#ifndef DB_FILE_EXPIRED
-
 
492
#define DB_FILE_EXPIRED       -2500     /* Database has expired (beta only) */
-
 
493
#define DB_FILE_DAMAGED       -2501     /* Database has been damaged        */
-
 
494
#define DB_FILE_MISSING       -2502     /* Font database missing            */
-
 
495
#define DB_FILE_BUSY          -2503     /* Font database already in use     */
-
 
496
#define DB_OUT_OF_MEMORY      -2504     /* Not enough memory for task       */
-
 
497
#define DB_FONT_NOT_FOUND     -2505     /* Font not found in database       */
-
 
498
#define DB_BAD_REF_NUM        -2506     /* Illegal ref_num sent to database */
-
 
499
#define DB_BAD_VERSION        -2507     /* Requested version not available  */
-
 
500
#define DB_NOT_A_MM_FONT      -2508     /* Font is not Multiple Master Font */
-
 
501
#endif
-
 
502
 
-
 
503
/* Show length characters starting at text transformed by the specified matrix */
-
 
504
/* Returns the number of characters not shown */
-
 
505
/* Matrix maps one point character space to device space, relative to current pen position */
-
 
506
/* Matrix's tx and ty components are updated */
-
 
507
/* *errorCode is set to ATM_NOERR if all went well, otherwise to one of the above error codes */
-
 
508
short showTextATMErr(Byte *text, short length, ATMFixedMatrix *matrix, short *errorCode);
-
 
509
 
-
 
510
/* Show length characters starting at text transformed by the specified matrix */
-
 
511
/* Matrix maps one point character space to device space, relative to current pen position */
-
 
512
/* Matrix's tx and ty components are updated */
-
 
513
/* Character x and y widths are specified by displacements */
-
 
514
/* Returns the number of characters not shown */
-
 
515
/* *errorCode is set to ATM_NOERR if all went well, otherwise to one of the above error codes */
-
 
516
short xyshowTextATMErr(Byte *text, short length, ATMFixedMatrix *matrix, ATMFixed *displacements, short *errorCode);
-
 
517
 
-
 
518
/* Get, via call-back procs, the PostScript definition of a character outline */
-
 
519
/* The call-backs should return 1 if they wish to continue being called for the remainder */
-
 
520
/* of the current character; they should return 0 if they wish to terminate getOutlineATM */
-
 
521
/* Returns ATM_NOERR if successful, otherwise one of the ATM error codes */
-
 
522
/* Matrix maps one point character space to device space */
-
 
523
short getOutlineATM(short c, ATMFixedMatrix *matrix, Ptr clientHook,
-
 
524
                                        short (*MoveTo)(/* Ptr clientHook, ATMPFixedPoint pc */),
-
 
525
                                        short (*LineTo)(/* Ptr clientHook, ATMPFixedPoint pc */),
-
 
526
                                        short (*CurveTo)(/* Ptr clientHook, ATMPFixedPoint pc1, ATMPFixedPoint pc2, ATMPFixedPoint pc3 */),
-
 
527
                                        short (*ClosePath)(/* Ptr clientHook */));
-
 
528
 
-
 
529
/* Render the specified path according to the graphic state implicit in the current GrafPort */
-
 
530
/* All these routines return ATM_NOERR if successful, otherwise one of the ATM error codes */
-
 
531
 
-
 
532
short startFillATM(void);
-
 
533
short fillMoveToATM(ATMPFixedPoint pc);
-
 
534
short fillLineToATM(ATMPFixedPoint pc);
-
 
535
short fillCurveToATM(ATMPFixedPoint pc1, ATMPFixedPoint pc2, ATMPFixedPoint pc3);
-
 
536
short fillClosePathATM(void);
-
 
537
short endFillATM(void);
-
 
538
 
-
 
539
#ifdef __cplusplus
-
 
540
}
-
 
541
#endif
-
 
542
 
-
 
543
/* ****************************** end of ATMProcs4Version routines ****************************** */
-
 
544
 
-
 
545
 
-
 
546
/* **************** The following routines are available under ATMProcs5Version: **************** */
-
 
547
 
-
 
548
#ifdef __cplusplus
-
 
549
extern "C" {
-
 
550
#endif
-
 
551
 
-
 
552
/* Returns TRUE if the specified font is a multi-master or "blended" font. */
-
 
553
/* Uses the "fontName" if not NULL, otherwise looks at the fondID. */
-
 
554
short getBlendedFontTypeATM(StringPtr fontName, short fondID);
-
 
555
 
-
 
556
/*
-
 
557
 * Given a "familyName" (eg. "Minion") and coordinates in the design space, create
-
 
558
 * a blended font name. This really isn't implemented well as it doesn't add labels (yet).
-
 
559
 */
-
 
560
ATMErr encodeBlendedFontNameATM(StringPtr familyName, short numAxes,
-
 
561
                                Fixed *coords, StringPtr blendName);
-
 
562
 
-
 
563
/*
-
 
564
 * Given a "Blended" fontName (eg. "Minion_67 BLD 2 CND"), return coordinates
-
 
565
 * in the design space and the font's family name. The "family name" is really
-
 
566
 * just the stuff before the '_' (eg. "Minion"), and the display instance string
-
 
567
 * is the stuff afterwards (eg. "67 BLD 2 CND"). The "family name" could be
-
 
568
 * "AdobeSans", "Adobe Sans" or "AdobeSan", as the only criteria is that the
-
 
569
 * PostScript filename ("AdobeSan") can be derived from it according to the
-
 
570
 * 533 rule (use first 5 letters from the first word, and first 3 letters from
-
 
571
 * every word afterwards.
-
 
572
 *
-
 
573
 * You may pass NULL for any of the return parameters.
-
 
574
 *
-
 
575
 */
-
 
576
ATMErr decodeBlendedFontNameATM(StringPtr blendName, StringPtr familyName,
-
 
577
                                short *numAxes, Fixed *coords, StringPtr displayInstanceStr);
-
 
578
 
-
 
579
/*
-
 
580
 * When the BOLD bit is set on a multiple master font, we may add a calculated amount
-
 
581
 * to the WEIGHT axis (if any). This routines returns the new coordinates for any given
-
 
582
 * Mac style for this font. Note that a font designer may not choose to modify the
-
 
583
 * coordinates for the Bold, Condensed or Expanded bits, so these will return unchanged.
-
 
584
 *
-
 
585
 * Whatever styles a blended font design can't handle is returned in "stylesLeft", though
-
 
586
 * these styles might be handled by QuickDraw (like Outline, Shadow, etc).
-
 
587
 */
-
 
588
ATMErr  addMacStyleToCoordsATM(Fixed *coords, short macStyle, Fixed *newCoords, short *stylesLeft);
-
 
589
 
-
 
590
/*
-
 
591
 * Convert the design coordinates for the current font to a blend vector. This is necessary
-
 
592
 * for those who need to output PostScript directlyÑthis is suitable for passing to
-
 
593
 * the PostScript operator "makeBlendedFont".
-
 
594
 */
-
 
595
ATMErr convertCoordsToBlendATM(Fixed *coords, Fixed *weightVector);
-
 
596
 
-
 
597
/*
-
 
598
 * Convert the design coordinates to a range usermin..usermax instead of 0.0..1.0.
-
 
599
 */
-
 
600
ATMErr normToUserCoordsATM(Fixed *normalCoords, Fixed *coords);
-
 
601
 
-
 
602
/*
-
 
603
 * Convert the design coordinates to a range 0.0..1.0 instead of usermin..usermax.
-
 
604
 */
-
 
605
ATMErr userToNormCoordsATM(Fixed *coords, Fixed *normalCoords);
-
 
606
 
-
 
607
/*
-
 
608
 * Create a temporary blended font for user interface purposes (so users can choose a blend).
-
 
609
 * The first time, initialize "*useFondID" to zero and a new fondID will be returned.
-
 
610
 * While displaying various blends, use the returned value in "*useFondID" until the user
-
 
611
 * is satisfied. Then dispose of this font with disposeTempBlendedFontATM().
-
 
612
 * Don't expect the name of the font to be what you gave it, we may change it for internal reasons.
-
 
613
 */
-
 
614
ATMErr createTempBlendedFontATM(short numAxes, Fixed *coords, short *useFondID);
-
 
615
ATMErr disposeTempBlendedFontATM(short fondID);
-
 
616
 
-
 
617
/*
-
 
618
 * Create a permanent blended font, of a given size in the given font file.
-
 
619
 * Note that the zero-sized case is the only one supported, which will create a "dummy"
-
 
620
 * 10 point font.
-
 
621
 */
-
 
622
ATMErr createPermBlendedFontATM(StringPtr fontName, short fontSize, short fontFileID, short *retFondID);
-
 
623
ATMErr disposePermBlendedFontATM(short fondID);
-
 
624
 
-
 
625
/*
-
 
626
 * We store newly created fonts in a temporary file. If you wish to use it (ie, for the
-
 
627
 * above routines), feel free.
-
 
628
 */
-
 
629
ATMErr getTempBlendedFontFileIDATM(short *fileID);
-
 
630
 
-
 
631
/*
-
 
632
 * Given the family name (eg. "Minion") and axis ID, return the number of axes.
-
 
633
 */
-
 
634
ATMErr getNumAxesATM(short *numAxes);
-
 
635
 
-
 
636
/*
-
 
637
 * Get the number of base designs (useful for the "CopyFit" routine, below).
-
 
638
 */
-
 
639
ATMErr getNumMastersATM(short *numMasters);
-
 
640
 
-
 
641
/*
-
 
642
 * Get the i'th base design for the given multiple master font (useful for the "CopyFit"
-
 
643
 * routine, below).
-
 
644
 */
-
 
645
ATMErr getMasterFONDATM(short i, short *masterFOND);
-
 
646
 
-
 
647
/*
-
 
648
 * Used to choose a multiple-master instance that will match the given widths.
-
 
649
 * First, fill in the baseWidths array with the width of the string for each one of
-
 
650
 * the base designs. Then choose a method for us to follow (default, constantStems, varStems).
-
 
651
 * Give us the targetWidth you want your string and the "beginDesign", which says what your
-
 
652
 * original coords were. We will return the best fit we could find in resultDesign, and
-
 
653
 * the actual width in resultWidth.
-
 
654
 */
-
 
655
ATMErr copyFitATM(short method, Fixed TargetWidth, Fixed *beginDesign,
-
 
656
                                        Fixed *baseWidths, Fixed *resultWidth, Fixed *resultDesign);
-
 
657
 
-
 
658
/*
-
 
659
 * This extends previous "ShowText" calls so that we can display strings without ever
-
 
660
 * creating an explicit FOND (eventually). For the moment, "fontFamily" is ignored, and
-
 
661
 * should be passed NULL (this is for future expansion).  Pass NULL for "coords" unless
-
 
662
 * this is a multiple master font. If "displacements" is NULL then we use the widths from
-
 
663
 * the FOND/NFNT; otherwise "displacements" gives us the x and y deltas between each
-
 
664
 * character.
-
 
665
 */
-
 
666
ATMErr showTextDesignATM(StringPtr fontFamily, Byte *text, short len, ATMFixedMatrix *matrix,
-
 
667
                                Fixed *coords, Fixed *displacements, short *lenDisplayed);
-
 
668
 
-
 
669
/*
-
 
670
 * Given the family name (eg. "Minion") and axis ID, return information about the axis.
-
 
671
 * Axis numbers start with 1.
-
 
672
 *              userMin, userMax -      Lowest and highest values allowed on this axis.
-
 
673
 *              axisType -                      Type of axis. Examples are "Weight" for the weight axis and
-
 
674
 *                                                      "Width" for the axis modifying width.
-
 
675
 *              axisLabel -                     What to label the axis (eg. "Weight").
-
 
676
 *              numSubranges -          How many labels for subranges there are (ie. Light, Medium, Bold).
-
 
677
 * NOTE: passing NULL for any of the parameters ignores that parameter. Thus you don't always
-
 
678
 * have to get ALL the information if you only want a little.
-
 
679
 */
-
 
680
ATMErr getAxisBlendInfoATM(short axis, short *userMin, short *userMax, StringPtr axisType,
-
 
681
                                        StringPtr axisLabel, StringPtr axisShortLabel);
-
 
682
 
-
 
683
/*
-
 
684
 * Get the specifications about the current font; this information can be used with
-
 
685
 * fontFitATM(), below.
-
 
686
 */
-
 
687
ATMErr getFontSpecsATM(FontSpecs *specs);
-
 
688
 
-
 
689
/*
-
 
690
 * This routine does some amazing calculations, and is the center of the code for dealing
-
 
691
 * with copyfitting and other of the fancier multiple master operations. The current font
-
 
692
 * and the "origCoords" is given to, for example, adjust a line typed in a multiple master
-
 
693
 * typeface so that it exactly matches a given set of dimensions; here we will use string length
-
 
694
 * and stem width.
-
 
695
 *
-
 
696
 * The numTargets is 2 (one for string length and one for stem width). The first entry in
-
 
697
 * "targetMetrics" is the length you want the text to be (ie. the width of a column), and the
-
 
698
 * second what you want the stem width to be (get this information from getFontSpecsATM(), above).
-
 
699
 * The first entry in masterMetrics is a pointer to the widths of the strings at each master
-
 
700
 * design (loop through the masters using getMasterFONDATM()). The second entry in masterMetrics
-
 
701
 * is the stemwidths for each master design. fontFitATM tries to find the closest match
-
 
702
 * possible by adjusting the axes given in varyAxes, and returns the results in retCoords
-
 
703
 * and retWeightVector--if either argument is NULL, it is ignored. To get the axis id's, use
-
 
704
 * getAxisBlendInfoATM and look for the "axisType". A list of type strings will be given (soon?).
-
 
705
 */
-
 
706
ATMErr fontFitATM(Fixed *origCoords, short numTargets, short *varyAxes,
-
 
707
                                Fixed *targetMetrics, Fixed **masterMetrics,
-
 
708
                                Fixed *retCoords, Fixed *retWeightVector);
-
 
709
 
-
 
710
/*
-
 
711
 * There are a number of font instances for each multiple-master family that have been
-
 
712
 * "blessed" by our Type group to go well together. The font names for this group can be
-
 
713
 * gotten through the following calls: getNumBlessedFonts, getBlessedFontName, and
-
 
714
 * getRegularBlessedFont. Most applications will not need these calls....
-
 
715
 *
-
 
716
 * getNumBlessedFontsATM() finds how many "blessed" fonts exist.
-
 
717
 */
-
 
718
ATMErr getNumBlessedFontsATM(short *numBlessedFonts);
-
 
719
 
-
 
720
/*
-
 
721
 * Get the nth "blessed" font name (see above discussion). "i" is indexed from 1.
-
 
722
 */
-
 
723
ATMErr getBlessedFontNameATM(short i, StringPtr blessedFontName, Fixed *coords);
-
 
724
 
-
 
725
/*
-
 
726
 * When Adobe Illustrator and Adobe Type Reunion display a list of instances for a
-
 
727
 * multiple master family, a "reasonable" choice for the default is chosen. The choice
-
 
728
 * is given by this call. Essentially, this finds the equivalent of "Helvetica Regular"
-
 
729
 * for multiple master fonts.
-
 
730
 *
-
 
731
 * The returned value "regularID" is to be used as input to getBlessedFontName.
-
 
732
 */
-
 
733
ATMErr getRegularBlessedFontATM(short *regularID);
-
 
734
 
-
 
735
/*
-
 
736
 * This flushes ATM's font cache. This is basically the counterpart for System 7's
-
 
737
 * FlushFonts function.
-
 
738
 */
-
 
739
ATMErr flushCacheATM(void);
-
 
740
 
-
 
741
/*
-
 
742
 * When using many of the above calls for working with multiple master fonts, ATM
-
 
743
 * expects the current font to be set to a font in the font family. What happens if
-
 
744
 * you only have a font family name?  This routine will return a fondID that is usable
-
 
745
 * to handle information for that font family.
-
 
746
 */
-
 
747
ATMErr getFontFamilyFONDATM(StringPtr familyName, short *retFondID);
-
 
748
 
-
 
749
/*
-
 
750
 * Multiple Master Font Picker/Creator interface.
-
 
751
 *
-
 
752
 * This call displays a dialog allowing the user to navigate through the
-
 
753
 * design space of any installed Multiple Master font and to pick and/or
-
 
754
 * create an instance within that design space.  The caller receives
-
 
755
 * information about the user's selection, if any.
-
 
756
 *
-
 
757
 * See MMFP_Parms and MMFP_Reply definitions, above, for a full description.
-
 
758
 */
-
 
759
ATMErr MMFontPickerATM( MMFP_Parms *parms, MMFP_Reply *reply );
-
 
760
 
-
 
761
/* Used internally by ATM, don't use.  */
-
 
762
void disableATM(void);
-
 
763
void reenableATM(void);
-
 
764
 
-
 
765
/* ****************************** end of ATMProcs5Version routines ****************************** */
-
 
766
 
-
 
767
/* **************** The following routines are available under ATMProcs8Version: **************** */
-
 
768
/*
-
 
769
 * Returns TRUE if this is a substitute font.
-
 
770
 * If TRUE and fontSpecs != NULL, fontSpecs will return a handle to the
-
 
771
 * fontSpecs record in the file. It is up to the caller to dispose of this
-
 
772
 * handle when done.
-
 
773
 * if TRUE and chamName != NULL, chamName will return a handle containing the
-
 
774
 * PostScript name of the chameleon font used for substitution. It is up to
-
 
775
 * the caller to dispose of this handle when done.
-
 
776
 * If fontName is NULL, we use the "fondID" parameter; otherwise, the fondID
-
 
777
 * parameter is ignored.
-
 
778
 */
-
 
779
Boolean isSubstFontATM(StringPtr fontName, short fondID, short style, FontSpecs ***fontSpecs, Handle *chamName);
-
 
780
 
-
 
781
/*
-
 
782
 * If the PostScript name is in our database then create its FOND if the parameter
-
 
783
 * "doCreate" is TRUE. It's expected that doCreate will generally be TRUE, but we've
-
 
784
 * added the flexibility just in case an application wants to ask permission
-
 
785
 * before creating the file.
-
 
786
 *
-
 
787
 * The application MUST check to see if a matching FOND already exists as this
-
 
788
 * function will create a FOND every time.
-
 
789
 *
-
 
790
 * Note that this function does NOT provide a mapping between PostScript names and
-
 
791
 * their associated FOND id and style--this must be implemented by the application.
-
 
792
 */
-
 
793
ATMErr getPSNumATM(StringPtr psName, short *retFondID, Boolean doCreate);
-
 
794
 
-
 
795
#ifdef __cplusplus
-
 
796
}
-
 
797
#endif
-
 
798
 
-
 
799
/* ****************************** end of ATMProcs8Version routines ****************************** */
-
 
800
 
-
 
801
#endif  /* _H_ATMInterface */
-
 
802