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