OLD | NEW |
1 /***************************************************************************/ | 1 /***************************************************************************/ |
2 /* */ | 2 /* */ |
3 /* ftserv.h */ | 3 /* ftserv.h */ |
4 /* */ | 4 /* */ |
5 /* The FreeType services (specification only). */ | 5 /* The FreeType services (specification only). */ |
6 /* */ | 6 /* */ |
7 /* Copyright 2003-2007, 2009, 2012 by */ | 7 /* Copyright 2003-2007, 2009, 2012, 2013 by */ |
8 /* David Turner, Robert Wilhelm, and Werner Lemberg. */ | 8 /* David Turner, Robert Wilhelm, and Werner Lemberg. */ |
9 /* */ | 9 /* */ |
10 /* This file is part of the FreeType project, and may only be used, */ | 10 /* This file is part of the FreeType project, and may only be used, */ |
11 /* modified, and distributed under the terms of the FreeType project */ | 11 /* modified, and distributed under the terms of the FreeType project */ |
12 /* license, LICENSE.TXT. By continuing to use, modify, or distribute */ | 12 /* license, LICENSE.TXT. By continuing to use, modify, or distribute */ |
13 /* this file you indicate that you have read the license and */ | 13 /* this file you indicate that you have read the license and */ |
14 /* understand and accept it fully. */ | 14 /* understand and accept it fully. */ |
15 /* */ | 15 /* */ |
16 /***************************************************************************/ | 16 /***************************************************************************/ |
17 | 17 |
18 /*************************************************************************/ | 18 /*************************************************************************/ |
19 /* */ | 19 /* */ |
20 /* Each module can export one or more `services'. Each service is */ | 20 /* Each module can export one or more `services'. Each service is */ |
21 /* identified by a constant string and modeled by a pointer; the latter */ | 21 /* identified by a constant string and modeled by a pointer; the latter */ |
22 /* generally corresponds to a structure containing function pointers. */ | 22 /* generally corresponds to a structure containing function pointers. */ |
23 /* */ | 23 /* */ |
24 /* Note that a service's data cannot be a mere function pointer because */ | 24 /* Note that a service's data cannot be a mere function pointer because */ |
25 /* in C it is possible that function pointers might be implemented */ | 25 /* in C it is possible that function pointers might be implemented */ |
26 /* differently than data pointers (e.g. 48 bits instead of 32). */ | 26 /* differently than data pointers (e.g. 48 bits instead of 32). */ |
27 /* */ | 27 /* */ |
28 /*************************************************************************/ | 28 /*************************************************************************/ |
29 | 29 |
30 | 30 |
31 #ifndef __FTSERV_H__ | 31 #ifndef __FTSERV_H__ |
32 #define __FTSERV_H__ | 32 #define __FTSERV_H__ |
33 | 33 |
34 | 34 |
35 FT_BEGIN_HEADER | 35 FT_BEGIN_HEADER |
36 | 36 |
37 #if defined( _MSC_VER ) /* Visual C++ (and Intel C++) */ | 37 #if defined( _MSC_VER ) /* Visual C++ (and Intel C++) */ |
38 | 38 /* We disable the warning `conditional expression is */ |
39 /* we disable the warning `conditional expression is constant' here */ | 39 /* constant' in order to compile cleanly with the maximum */ |
40 /* in order to compile cleanly with the maximum level of warnings */ | 40 /* level of warnings. */ |
| 41 #pragma warning( push ) |
41 #pragma warning( disable : 4127 ) | 42 #pragma warning( disable : 4127 ) |
42 | |
43 #endif /* _MSC_VER */ | 43 #endif /* _MSC_VER */ |
44 | 44 |
45 /* | 45 /* |
46 * @macro: | 46 * @macro: |
47 * FT_FACE_FIND_SERVICE | 47 * FT_FACE_FIND_SERVICE |
48 * | 48 * |
49 * @description: | 49 * @description: |
50 * This macro is used to look up a service from a face's driver module. | 50 * This macro is used to look up a service from a face's driver module. |
51 * | 51 * |
52 * @input: | 52 * @input: |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
85 FT_Module module = FT_MODULE( FT_FACE( face )->driver ); \ | 85 FT_Module module = FT_MODULE( FT_FACE( face )->driver ); \ |
86 FT_Pointer _tmp_ = NULL; \ | 86 FT_Pointer _tmp_ = NULL; \ |
87 \ | 87 \ |
88 if ( module->clazz->get_interface ) \ | 88 if ( module->clazz->get_interface ) \ |
89 _tmp_ = module->clazz->get_interface( module, FT_SERVICE_ID_ ## id ); \ | 89 _tmp_ = module->clazz->get_interface( module, FT_SERVICE_ID_ ## id ); \ |
90 ptr = _tmp_; \ | 90 ptr = _tmp_; \ |
91 FT_END_STMNT | 91 FT_END_STMNT |
92 | 92 |
93 #endif /* !C++ */ | 93 #endif /* !C++ */ |
94 | 94 |
| 95 |
95 /* | 96 /* |
96 * @macro: | 97 * @macro: |
97 * FT_FACE_FIND_GLOBAL_SERVICE | 98 * FT_FACE_FIND_GLOBAL_SERVICE |
98 * | 99 * |
99 * @description: | 100 * @description: |
100 * This macro is used to look up a service from all modules. | 101 * This macro is used to look up a service from all modules. |
101 * | 102 * |
102 * @input: | 103 * @input: |
103 * face :: | 104 * face :: |
104 * The source face handle. | 105 * The source face handle. |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
160 const void* serv_data; /* service pointer/data */ | 161 const void* serv_data; /* service pointer/data */ |
161 | 162 |
162 } FT_ServiceDescRec; | 163 } FT_ServiceDescRec; |
163 | 164 |
164 typedef const FT_ServiceDescRec* FT_ServiceDesc; | 165 typedef const FT_ServiceDescRec* FT_ServiceDesc; |
165 | 166 |
166 | 167 |
167 /*************************************************************************/ | 168 /*************************************************************************/ |
168 /* */ | 169 /* */ |
169 /* <Macro> */ | 170 /* <Macro> */ |
170 /* FT_DEFINE_SERVICEDESCREC1 .. FT_DEFINE_SERVICEDESCREC6 */ | 171 /* FT_DEFINE_SERVICEDESCREC1 */ |
| 172 /* FT_DEFINE_SERVICEDESCREC2 */ |
| 173 /* FT_DEFINE_SERVICEDESCREC3 */ |
| 174 /* FT_DEFINE_SERVICEDESCREC4 */ |
| 175 /* FT_DEFINE_SERVICEDESCREC5 */ |
| 176 /* FT_DEFINE_SERVICEDESCREC6 */ |
| 177 /* FT_DEFINE_SERVICEDESCREC7 */ |
171 /* */ | 178 /* */ |
172 /* <Description> */ | 179 /* <Description> */ |
173 /* Used to initialize an array of FT_ServiceDescRec structures. */ | 180 /* Used to initialize an array of FT_ServiceDescRec structures. */ |
174 /* */ | 181 /* */ |
175 /* When FT_CONFIG_OPTION_PIC is defined a `create' function needs to */ | 182 /* When FT_CONFIG_OPTION_PIC is defined a `create' function needs to */ |
176 /* be called with a pointer to return an allocated array. As soon as */ | 183 /* be called with a pointer to return an allocated array. As soon as */ |
177 /* it is no longer needed, a `destroy' function needs to be called to */ | 184 /* it is no longer needed, a `destroy' function needs to be called to */ |
178 /* release that allocation. */ | 185 /* release that allocation. */ |
179 /* */ | 186 /* */ |
180 /* These functions should be manually called from the `pic_init' and */ | 187 /* These functions should be manually called from the `pic_init' and */ |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
257 { \ | 264 { \ |
258 { serv_id_1, serv_data_1 }, \ | 265 { serv_id_1, serv_data_1 }, \ |
259 { serv_id_2, serv_data_2 }, \ | 266 { serv_id_2, serv_data_2 }, \ |
260 { serv_id_3, serv_data_3 }, \ | 267 { serv_id_3, serv_data_3 }, \ |
261 { serv_id_4, serv_data_4 }, \ | 268 { serv_id_4, serv_data_4 }, \ |
262 { serv_id_5, serv_data_5 }, \ | 269 { serv_id_5, serv_data_5 }, \ |
263 { serv_id_6, serv_data_6 }, \ | 270 { serv_id_6, serv_data_6 }, \ |
264 { NULL, NULL } \ | 271 { NULL, NULL } \ |
265 }; | 272 }; |
266 | 273 |
| 274 #define FT_DEFINE_SERVICEDESCREC7( class_, \ |
| 275 serv_id_1, serv_data_1, \ |
| 276 serv_id_2, serv_data_2, \ |
| 277 serv_id_3, serv_data_3, \ |
| 278 serv_id_4, serv_data_4, \ |
| 279 serv_id_5, serv_data_5, \ |
| 280 serv_id_6, serv_data_6, \ |
| 281 serv_id_7, serv_data_7 ) \ |
| 282 static const FT_ServiceDescRec class_[] = \ |
| 283 { \ |
| 284 { serv_id_1, serv_data_1 }, \ |
| 285 { serv_id_2, serv_data_2 }, \ |
| 286 { serv_id_3, serv_data_3 }, \ |
| 287 { serv_id_4, serv_data_4 }, \ |
| 288 { serv_id_5, serv_data_5 }, \ |
| 289 { serv_id_6, serv_data_6 }, \ |
| 290 { serv_id_7, serv_data_7 }, \ |
| 291 { NULL, NULL } \ |
| 292 }; |
| 293 |
267 #else /* FT_CONFIG_OPTION_PIC */ | 294 #else /* FT_CONFIG_OPTION_PIC */ |
268 | 295 |
269 #define FT_DEFINE_SERVICEDESCREC1( class_, \ | 296 #define FT_DEFINE_SERVICEDESCREC1( class_, \ |
270 serv_id_1, serv_data_1 ) \ | 297 serv_id_1, serv_data_1 ) \ |
271 void \ | 298 void \ |
272 FT_Destroy_Class_ ## class_( FT_Library library, \ | 299 FT_Destroy_Class_ ## class_( FT_Library library, \ |
273 FT_ServiceDescRec* clazz ) \ | 300 FT_ServiceDescRec* clazz ) \ |
274 { \ | 301 { \ |
275 FT_Memory memory = library->memory; \ | 302 FT_Memory memory = library->memory; \ |
276 \ | 303 \ |
277 \ | 304 \ |
278 if ( clazz ) \ | 305 if ( clazz ) \ |
279 FT_FREE( clazz ); \ | 306 FT_FREE( clazz ); \ |
280 } \ | 307 } \ |
281 \ | 308 \ |
282 FT_Error \ | 309 FT_Error \ |
283 FT_Create_Class_ ## class_( FT_Library library, \ | 310 FT_Create_Class_ ## class_( FT_Library library, \ |
284 FT_ServiceDescRec** output_class ) \ | 311 FT_ServiceDescRec** output_class ) \ |
285 { \ | 312 { \ |
286 FT_ServiceDescRec* clazz; \ | 313 FT_ServiceDescRec* clazz = NULL; \ |
287 FT_Error error; \ | 314 FT_Error error; \ |
288 FT_Memory memory = library->memory; \ | 315 FT_Memory memory = library->memory; \ |
289 \ | 316 \ |
290 \ | 317 \ |
291 if ( FT_ALLOC( clazz, sizeof ( *clazz ) * 2 ) ) \ | 318 if ( FT_ALLOC( clazz, sizeof ( *clazz ) * 2 ) ) \ |
292 return error; \ | 319 return error; \ |
293 \ | 320 \ |
294 clazz[0].serv_id = serv_id_1; \ | 321 clazz[0].serv_id = serv_id_1; \ |
295 clazz[0].serv_data = serv_data_1; \ | 322 clazz[0].serv_data = serv_data_1; \ |
296 clazz[1].serv_id = NULL; \ | 323 clazz[1].serv_id = NULL; \ |
(...skipping 15 matching lines...) Expand all Loading... |
312 \ | 339 \ |
313 \ | 340 \ |
314 if ( clazz ) \ | 341 if ( clazz ) \ |
315 FT_FREE( clazz ); \ | 342 FT_FREE( clazz ); \ |
316 } \ | 343 } \ |
317 \ | 344 \ |
318 FT_Error \ | 345 FT_Error \ |
319 FT_Create_Class_ ## class_( FT_Library library, \ | 346 FT_Create_Class_ ## class_( FT_Library library, \ |
320 FT_ServiceDescRec** output_class ) \ | 347 FT_ServiceDescRec** output_class ) \ |
321 { \ | 348 { \ |
322 FT_ServiceDescRec* clazz; \ | 349 FT_ServiceDescRec* clazz = NULL; \ |
323 FT_Error error; \ | 350 FT_Error error; \ |
324 FT_Memory memory = library->memory; \ | 351 FT_Memory memory = library->memory; \ |
325 \ | 352 \ |
326 \ | 353 \ |
327 if ( FT_ALLOC( clazz, sizeof ( *clazz ) * 3 ) ) \ | 354 if ( FT_ALLOC( clazz, sizeof ( *clazz ) * 3 ) ) \ |
328 return error; \ | 355 return error; \ |
329 \ | 356 \ |
330 clazz[0].serv_id = serv_id_1; \ | 357 clazz[0].serv_id = serv_id_1; \ |
331 clazz[0].serv_data = serv_data_1; \ | 358 clazz[0].serv_data = serv_data_1; \ |
332 clazz[1].serv_id = serv_id_2; \ | 359 clazz[1].serv_id = serv_id_2; \ |
(...skipping 18 matching lines...) Expand all Loading... |
351 \ | 378 \ |
352 \ | 379 \ |
353 if ( clazz ) \ | 380 if ( clazz ) \ |
354 FT_FREE( clazz ); \ | 381 FT_FREE( clazz ); \ |
355 } \ | 382 } \ |
356 \ | 383 \ |
357 FT_Error \ | 384 FT_Error \ |
358 FT_Create_Class_ ## class_( FT_Library library, \ | 385 FT_Create_Class_ ## class_( FT_Library library, \ |
359 FT_ServiceDescRec** output_class ) \ | 386 FT_ServiceDescRec** output_class ) \ |
360 { \ | 387 { \ |
361 FT_ServiceDescRec* clazz; \ | 388 FT_ServiceDescRec* clazz = NULL; \ |
362 FT_Error error; \ | 389 FT_Error error; \ |
363 FT_Memory memory = library->memory; \ | 390 FT_Memory memory = library->memory; \ |
364 \ | 391 \ |
365 \ | 392 \ |
366 if ( FT_ALLOC( clazz, sizeof ( *clazz ) * 4 ) ) \ | 393 if ( FT_ALLOC( clazz, sizeof ( *clazz ) * 4 ) ) \ |
367 return error; \ | 394 return error; \ |
368 \ | 395 \ |
369 clazz[0].serv_id = serv_id_1; \ | 396 clazz[0].serv_id = serv_id_1; \ |
370 clazz[0].serv_data = serv_data_1; \ | 397 clazz[0].serv_data = serv_data_1; \ |
371 clazz[1].serv_id = serv_id_2; \ | 398 clazz[1].serv_id = serv_id_2; \ |
(...skipping 21 matching lines...) Expand all Loading... |
393 \ | 420 \ |
394 \ | 421 \ |
395 if ( clazz ) \ | 422 if ( clazz ) \ |
396 FT_FREE( clazz ); \ | 423 FT_FREE( clazz ); \ |
397 } \ | 424 } \ |
398 \ | 425 \ |
399 FT_Error \ | 426 FT_Error \ |
400 FT_Create_Class_ ## class_( FT_Library library, \ | 427 FT_Create_Class_ ## class_( FT_Library library, \ |
401 FT_ServiceDescRec** output_class ) \ | 428 FT_ServiceDescRec** output_class ) \ |
402 { \ | 429 { \ |
403 FT_ServiceDescRec* clazz; \ | 430 FT_ServiceDescRec* clazz = NULL; \ |
404 FT_Error error; \ | 431 FT_Error error; \ |
405 FT_Memory memory = library->memory; \ | 432 FT_Memory memory = library->memory; \ |
406 \ | 433 \ |
407 \ | 434 \ |
408 if ( FT_ALLOC( clazz, sizeof ( *clazz ) * 5 ) ) \ | 435 if ( FT_ALLOC( clazz, sizeof ( *clazz ) * 5 ) ) \ |
409 return error; \ | 436 return error; \ |
410 \ | 437 \ |
411 clazz[0].serv_id = serv_id_1; \ | 438 clazz[0].serv_id = serv_id_1; \ |
412 clazz[0].serv_data = serv_data_1; \ | 439 clazz[0].serv_data = serv_data_1; \ |
413 clazz[1].serv_id = serv_id_2; \ | 440 clazz[1].serv_id = serv_id_2; \ |
(...skipping 24 matching lines...) Expand all Loading... |
438 \ | 465 \ |
439 \ | 466 \ |
440 if ( clazz ) \ | 467 if ( clazz ) \ |
441 FT_FREE( clazz ); \ | 468 FT_FREE( clazz ); \ |
442 } \ | 469 } \ |
443 \ | 470 \ |
444 FT_Error \ | 471 FT_Error \ |
445 FT_Create_Class_ ## class_( FT_Library library, \ | 472 FT_Create_Class_ ## class_( FT_Library library, \ |
446 FT_ServiceDescRec** output_class ) \ | 473 FT_ServiceDescRec** output_class ) \ |
447 { \ | 474 { \ |
448 FT_ServiceDescRec* clazz; \ | 475 FT_ServiceDescRec* clazz = NULL; \ |
449 FT_Error error; \ | 476 FT_Error error; \ |
450 FT_Memory memory = library->memory; \ | 477 FT_Memory memory = library->memory; \ |
451 \ | 478 \ |
452 \ | 479 \ |
453 if ( FT_ALLOC( clazz, sizeof ( *clazz ) * 6 ) ) \ | 480 if ( FT_ALLOC( clazz, sizeof ( *clazz ) * 6 ) ) \ |
454 return error; \ | 481 return error; \ |
455 \ | 482 \ |
456 clazz[0].serv_id = serv_id_1; \ | 483 clazz[0].serv_id = serv_id_1; \ |
457 clazz[0].serv_data = serv_data_1; \ | 484 clazz[0].serv_data = serv_data_1; \ |
458 clazz[1].serv_id = serv_id_2; \ | 485 clazz[1].serv_id = serv_id_2; \ |
(...skipping 27 matching lines...) Expand all Loading... |
486 \ | 513 \ |
487 \ | 514 \ |
488 if ( clazz ) \ | 515 if ( clazz ) \ |
489 FT_FREE( clazz ); \ | 516 FT_FREE( clazz ); \ |
490 } \ | 517 } \ |
491 \ | 518 \ |
492 FT_Error \ | 519 FT_Error \ |
493 FT_Create_Class_ ## class_( FT_Library library, \ | 520 FT_Create_Class_ ## class_( FT_Library library, \ |
494 FT_ServiceDescRec** output_class) \ | 521 FT_ServiceDescRec** output_class) \ |
495 { \ | 522 { \ |
496 FT_ServiceDescRec* clazz; \ | 523 FT_ServiceDescRec* clazz = NULL; \ |
497 FT_Error error; \ | 524 FT_Error error; \ |
498 FT_Memory memory = library->memory; \ | 525 FT_Memory memory = library->memory; \ |
499 \ | 526 \ |
500 \ | 527 \ |
501 if ( FT_ALLOC( clazz, sizeof ( *clazz ) * 7 ) ) \ | 528 if ( FT_ALLOC( clazz, sizeof ( *clazz ) * 7 ) ) \ |
502 return error; \ | 529 return error; \ |
503 \ | 530 \ |
504 clazz[0].serv_id = serv_id_1; \ | 531 clazz[0].serv_id = serv_id_1; \ |
505 clazz[0].serv_data = serv_data_1; \ | 532 clazz[0].serv_data = serv_data_1; \ |
506 clazz[1].serv_id = serv_id_2; \ | 533 clazz[1].serv_id = serv_id_2; \ |
507 clazz[1].serv_data = serv_data_2; \ | 534 clazz[1].serv_data = serv_data_2; \ |
508 clazz[2].serv_id = serv_id_3; \ | 535 clazz[2].serv_id = serv_id_3; \ |
509 clazz[2].serv_data = serv_data_3; \ | 536 clazz[2].serv_data = serv_data_3; \ |
510 clazz[3].serv_id = serv_id_4; \ | 537 clazz[3].serv_id = serv_id_4; \ |
511 clazz[3].serv_data = serv_data_4; \ | 538 clazz[3].serv_data = serv_data_4; \ |
512 clazz[4].serv_id = serv_id_5; \ | 539 clazz[4].serv_id = serv_id_5; \ |
513 clazz[4].serv_data = serv_data_5; \ | 540 clazz[4].serv_data = serv_data_5; \ |
514 clazz[5].serv_id = serv_id_6; \ | 541 clazz[5].serv_id = serv_id_6; \ |
515 clazz[5].serv_data = serv_data_6; \ | 542 clazz[5].serv_data = serv_data_6; \ |
516 clazz[6].serv_id = NULL; \ | 543 clazz[6].serv_id = NULL; \ |
517 clazz[6].serv_data = NULL; \ | 544 clazz[6].serv_data = NULL; \ |
518 \ | 545 \ |
519 *output_class = clazz; \ | 546 *output_class = clazz; \ |
520 \ | 547 \ |
521 return FT_Err_Ok; \ | 548 return FT_Err_Ok; \ |
522 } | 549 } |
523 | 550 |
| 551 #define FT_DEFINE_SERVICEDESCREC7( class_, \ |
| 552 serv_id_1, serv_data_1, \ |
| 553 serv_id_2, serv_data_2, \ |
| 554 serv_id_3, serv_data_3, \ |
| 555 serv_id_4, serv_data_4, \ |
| 556 serv_id_5, serv_data_5, \ |
| 557 serv_id_6, serv_data_6, \ |
| 558 serv_id_7, serv_data_7 ) \ |
| 559 void \ |
| 560 FT_Destroy_Class_ ## class_( FT_Library library, \ |
| 561 FT_ServiceDescRec* clazz ) \ |
| 562 { \ |
| 563 FT_Memory memory = library->memory; \ |
| 564 \ |
| 565 \ |
| 566 if ( clazz ) \ |
| 567 FT_FREE( clazz ); \ |
| 568 } \ |
| 569 \ |
| 570 FT_Error \ |
| 571 FT_Create_Class_ ## class_( FT_Library library, \ |
| 572 FT_ServiceDescRec** output_class) \ |
| 573 { \ |
| 574 FT_ServiceDescRec* clazz = NULL; \ |
| 575 FT_Error error; \ |
| 576 FT_Memory memory = library->memory; \ |
| 577 \ |
| 578 \ |
| 579 if ( FT_ALLOC( clazz, sizeof ( *clazz ) * 8 ) ) \ |
| 580 return error; \ |
| 581 \ |
| 582 clazz[0].serv_id = serv_id_1; \ |
| 583 clazz[0].serv_data = serv_data_1; \ |
| 584 clazz[1].serv_id = serv_id_2; \ |
| 585 clazz[1].serv_data = serv_data_2; \ |
| 586 clazz[2].serv_id = serv_id_3; \ |
| 587 clazz[2].serv_data = serv_data_3; \ |
| 588 clazz[3].serv_id = serv_id_4; \ |
| 589 clazz[3].serv_data = serv_data_4; \ |
| 590 clazz[4].serv_id = serv_id_5; \ |
| 591 clazz[4].serv_data = serv_data_5; \ |
| 592 clazz[5].serv_id = serv_id_6; \ |
| 593 clazz[5].serv_data = serv_data_6; \ |
| 594 clazz[6].serv_id = serv_id_7; \ |
| 595 clazz[6].serv_data = serv_data_7; \ |
| 596 clazz[7].serv_id = NULL; \ |
| 597 clazz[7].serv_data = NULL; \ |
| 598 \ |
| 599 *output_class = clazz; \ |
| 600 \ |
| 601 return FT_Err_Ok; \ |
| 602 } |
| 603 |
524 #endif /* FT_CONFIG_OPTION_PIC */ | 604 #endif /* FT_CONFIG_OPTION_PIC */ |
525 | 605 |
526 | 606 |
527 /* | 607 /* |
528 * Parse a list of FT_ServiceDescRec descriptors and look for | 608 * Parse a list of FT_ServiceDescRec descriptors and look for |
529 * a specific service by ID. Note that the last element in the | 609 * a specific service by ID. Note that the last element in the |
530 * array must be { NULL, NULL }, and that the function should | 610 * array must be { NULL, NULL }, and that the function should |
531 * return NULL if the service isn't available. | 611 * return NULL if the service isn't available. |
532 * | 612 * |
533 * This function can be used by modules to implement their | 613 * This function can be used by modules to implement their |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
566 FT_Pointer service_GLYPH_DICT; | 646 FT_Pointer service_GLYPH_DICT; |
567 FT_Pointer service_PFR_METRICS; | 647 FT_Pointer service_PFR_METRICS; |
568 FT_Pointer service_WINFNT; | 648 FT_Pointer service_WINFNT; |
569 | 649 |
570 } FT_ServiceCacheRec, *FT_ServiceCache; | 650 } FT_ServiceCacheRec, *FT_ServiceCache; |
571 | 651 |
572 | 652 |
573 /* | 653 /* |
574 * A magic number used within the services cache. | 654 * A magic number used within the services cache. |
575 */ | 655 */ |
576 #define FT_SERVICE_UNAVAILABLE ((FT_Pointer)-2) /* magic number */ | 656 |
| 657 /* ensure that value `1' has the same width as a pointer */ |
| 658 #define FT_SERVICE_UNAVAILABLE ((FT_Pointer)~(FT_PtrDist)1) |
577 | 659 |
578 | 660 |
579 /* | 661 /* |
580 * @macro: | 662 * @macro: |
581 * FT_FACE_LOOKUP_SERVICE | 663 * FT_FACE_LOOKUP_SERVICE |
582 * | 664 * |
583 * @description: | 665 * @description: |
584 * This macro is used to lookup a service from a face's driver module | 666 * This macro is used to lookup a service from a face's driver module |
585 * using its cache. | 667 * using its cache. |
586 * | 668 * |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
664 #define FT_SERVICE_CID_H <freetype/internal/services/svcid.h> | 746 #define FT_SERVICE_CID_H <freetype/internal/services/svcid.h> |
665 #define FT_SERVICE_GLYPH_DICT_H <freetype/internal/services/svgldict.h> | 747 #define FT_SERVICE_GLYPH_DICT_H <freetype/internal/services/svgldict.h> |
666 #define FT_SERVICE_GX_VALIDATE_H <freetype/internal/services/svgxval.h> | 748 #define FT_SERVICE_GX_VALIDATE_H <freetype/internal/services/svgxval.h> |
667 #define FT_SERVICE_KERNING_H <freetype/internal/services/svkern.h> | 749 #define FT_SERVICE_KERNING_H <freetype/internal/services/svkern.h> |
668 #define FT_SERVICE_MULTIPLE_MASTERS_H <freetype/internal/services/svmm.h> | 750 #define FT_SERVICE_MULTIPLE_MASTERS_H <freetype/internal/services/svmm.h> |
669 #define FT_SERVICE_OPENTYPE_VALIDATE_H <freetype/internal/services/svotval.h> | 751 #define FT_SERVICE_OPENTYPE_VALIDATE_H <freetype/internal/services/svotval.h> |
670 #define FT_SERVICE_PFR_H <freetype/internal/services/svpfr.h> | 752 #define FT_SERVICE_PFR_H <freetype/internal/services/svpfr.h> |
671 #define FT_SERVICE_POSTSCRIPT_CMAPS_H <freetype/internal/services/svpscmap.h> | 753 #define FT_SERVICE_POSTSCRIPT_CMAPS_H <freetype/internal/services/svpscmap.h> |
672 #define FT_SERVICE_POSTSCRIPT_INFO_H <freetype/internal/services/svpsinfo.h> | 754 #define FT_SERVICE_POSTSCRIPT_INFO_H <freetype/internal/services/svpsinfo.h> |
673 #define FT_SERVICE_POSTSCRIPT_NAME_H <freetype/internal/services/svpostnm.h> | 755 #define FT_SERVICE_POSTSCRIPT_NAME_H <freetype/internal/services/svpostnm.h> |
| 756 #define FT_SERVICE_PROPERTIES_H <freetype/internal/services/svprop.h> |
674 #define FT_SERVICE_SFNT_H <freetype/internal/services/svsfnt.h> | 757 #define FT_SERVICE_SFNT_H <freetype/internal/services/svsfnt.h> |
675 #define FT_SERVICE_TRUETYPE_ENGINE_H <freetype/internal/services/svtteng.h> | 758 #define FT_SERVICE_TRUETYPE_ENGINE_H <freetype/internal/services/svtteng.h> |
676 #define FT_SERVICE_TT_CMAP_H <freetype/internal/services/svttcmap.h> | 759 #define FT_SERVICE_TT_CMAP_H <freetype/internal/services/svttcmap.h> |
677 #define FT_SERVICE_WINFNT_H <freetype/internal/services/svwinfnt.h> | 760 #define FT_SERVICE_WINFNT_H <freetype/internal/services/svwinfnt.h> |
678 #define FT_SERVICE_XFREE86_NAME_H <freetype/internal/services/svxf86nm.h> | 761 #define FT_SERVICE_XFREE86_NAME_H <freetype/internal/services/svxf86nm.h> |
679 #define FT_SERVICE_TRUETYPE_GLYF_H <freetype/internal/services/svttglyf.h> | 762 #define FT_SERVICE_TRUETYPE_GLYF_H <freetype/internal/services/svttglyf.h> |
680 | 763 |
681 /* */ | 764 /* */ |
682 | 765 |
| 766 #if defined( _MSC_VER ) |
| 767 #pragma warning( pop ) |
| 768 #endif |
| 769 |
683 FT_END_HEADER | 770 FT_END_HEADER |
684 | 771 |
685 #endif /* __FTSERV_H__ */ | 772 #endif /* __FTSERV_H__ */ |
686 | 773 |
687 | 774 |
688 /* END */ | 775 /* END */ |
OLD | NEW |