Home | History | Annotate | Download | only in sfnt
      1 /***************************************************************************/
      2 /*                                                                         */
      3 /*  sfntpic.h                                                              */
      4 /*                                                                         */
      5 /*    The FreeType position independent code services for sfnt module.     */
      6 /*                                                                         */
      7 /*  Copyright 2009, 2012 by                                                */
      8 /*  Oran Agra and Mickey Gabel.                                            */
      9 /*                                                                         */
     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      */
     12 /*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
     13 /*  this file you indicate that you have read the license and              */
     14 /*  understand and accept it fully.                                        */
     15 /*                                                                         */
     16 /***************************************************************************/
     17 
     18 
     19 #ifndef __SFNTPIC_H__
     20 #define __SFNTPIC_H__
     21 
     22 
     23 FT_BEGIN_HEADER
     24 
     25 #include FT_INTERNAL_PIC_H
     26 
     27 
     28 #ifndef FT_CONFIG_OPTION_PIC
     29 
     30 #define SFNT_SERVICES_GET            sfnt_services
     31 #define SFNT_SERVICE_GLYPH_DICT_GET  sfnt_service_glyph_dict
     32 #define SFNT_SERVICE_PS_NAME_GET     sfnt_service_ps_name
     33 #define TT_SERVICE_CMAP_INFO_GET     tt_service_get_cmap_info
     34 #define SFNT_SERVICES_GET            sfnt_services
     35 #define TT_CMAP_CLASSES_GET          tt_cmap_classes
     36 #define SFNT_SERVICE_SFNT_TABLE_GET  sfnt_service_sfnt_table
     37 #define SFNT_SERVICE_BDF_GET         sfnt_service_bdf
     38 #define SFNT_INTERFACE_GET           sfnt_interface
     39 
     40 #else /* FT_CONFIG_OPTION_PIC */
     41 
     42   /* some include files required for members of sfntModulePIC */
     43 #include FT_SERVICE_GLYPH_DICT_H
     44 #include FT_SERVICE_POSTSCRIPT_NAME_H
     45 #include FT_SERVICE_SFNT_H
     46 #include FT_SERVICE_TT_CMAP_H
     47 
     48 #ifdef TT_CONFIG_OPTION_BDF
     49 #include "ttbdf.h"
     50 #include FT_SERVICE_BDF_H
     51 #endif
     52 
     53 #include FT_INTERNAL_DEBUG_H
     54 #include FT_INTERNAL_STREAM_H
     55 #include FT_INTERNAL_SFNT_H
     56 #include "ttcmap.h"
     57 
     58 
     59   typedef struct  sfntModulePIC_
     60   {
     61     FT_ServiceDescRec*        sfnt_services;
     62     FT_Service_GlyphDictRec   sfnt_service_glyph_dict;
     63     FT_Service_PsFontNameRec  sfnt_service_ps_name;
     64     FT_Service_TTCMapsRec     tt_service_get_cmap_info;
     65     TT_CMap_Class*            tt_cmap_classes;
     66     FT_Service_SFNT_TableRec  sfnt_service_sfnt_table;
     67 #ifdef TT_CONFIG_OPTION_BDF
     68     FT_Service_BDFRec         sfnt_service_bdf;
     69 #endif
     70     SFNT_Interface            sfnt_interface;
     71 
     72   } sfntModulePIC;
     73 
     74 
     75 #define GET_PIC( lib )                                      \
     76           ( (sfntModulePIC*)( (lib)->pic_container.sfnt ) )
     77 
     78 #define SFNT_SERVICES_GET                       \
     79           ( GET_PIC( library )->sfnt_services )
     80 #define SFNT_SERVICE_GLYPH_DICT_GET                       \
     81           ( GET_PIC( library )->sfnt_service_glyph_dict )
     82 #define SFNT_SERVICE_PS_NAME_GET                       \
     83           ( GET_PIC( library )->sfnt_service_ps_name )
     84 #define TT_SERVICE_CMAP_INFO_GET                           \
     85           ( GET_PIC( library )->tt_service_get_cmap_info )
     86 #define SFNT_SERVICES_GET                       \
     87           ( GET_PIC( library )->sfnt_services )
     88 #define TT_CMAP_CLASSES_GET                       \
     89           ( GET_PIC( library )->tt_cmap_classes )
     90 #define SFNT_SERVICE_SFNT_TABLE_GET                       \
     91           ( GET_PIC( library )->sfnt_service_sfnt_table )
     92 #define SFNT_SERVICE_BDF_GET                       \
     93           ( GET_PIC( library )->sfnt_service_bdf )
     94 #define SFNT_INTERFACE_GET                       \
     95           ( GET_PIC( library )->sfnt_interface )
     96 
     97 
     98   /* see sfntpic.c for the implementation */
     99   void
    100   sfnt_module_class_pic_free( FT_Library  library );
    101 
    102   FT_Error
    103   sfnt_module_class_pic_init( FT_Library  library );
    104 
    105 #endif /* FT_CONFIG_OPTION_PIC */
    106 
    107   /* */
    108 
    109 FT_END_HEADER
    110 
    111 #endif /* __SFNTPIC_H__ */
    112 
    113 
    114 /* END */
    115