Home | History | Annotate | Download | only in services
      1 /***************************************************************************/
      2 /*                                                                         */
      3 /*  svpsinfo.h                                                             */
      4 /*                                                                         */
      5 /*    The FreeType PostScript info service (specification).                */
      6 /*                                                                         */
      7 /*  Copyright 2003-2018 by                                                 */
      8 /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
      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 SVPSINFO_H_
     20 #define SVPSINFO_H_
     21 
     22 #include FT_INTERNAL_SERVICE_H
     23 #include FT_INTERNAL_TYPE1_TYPES_H
     24 
     25 
     26 FT_BEGIN_HEADER
     27 
     28 
     29 #define FT_SERVICE_ID_POSTSCRIPT_INFO  "postscript-info"
     30 
     31 
     32   typedef FT_Error
     33   (*PS_GetFontInfoFunc)( FT_Face          face,
     34                          PS_FontInfoRec*  afont_info );
     35 
     36   typedef FT_Error
     37   (*PS_GetFontExtraFunc)( FT_Face           face,
     38                           PS_FontExtraRec*  afont_extra );
     39 
     40   typedef FT_Int
     41   (*PS_HasGlyphNamesFunc)( FT_Face  face );
     42 
     43   typedef FT_Error
     44   (*PS_GetFontPrivateFunc)( FT_Face         face,
     45                             PS_PrivateRec*  afont_private );
     46 
     47   typedef FT_Long
     48   (*PS_GetFontValueFunc)( FT_Face       face,
     49                           PS_Dict_Keys  key,
     50                           FT_UInt       idx,
     51                           void         *value,
     52                           FT_Long       value_len );
     53 
     54 
     55   FT_DEFINE_SERVICE( PsInfo )
     56   {
     57     PS_GetFontInfoFunc     ps_get_font_info;
     58     PS_GetFontExtraFunc    ps_get_font_extra;
     59     PS_HasGlyphNamesFunc   ps_has_glyph_names;
     60     PS_GetFontPrivateFunc  ps_get_font_private;
     61     PS_GetFontValueFunc    ps_get_font_value;
     62   };
     63 
     64 
     65 #ifndef FT_CONFIG_OPTION_PIC
     66 
     67 #define FT_DEFINE_SERVICE_PSINFOREC( class_,                     \
     68                                      get_font_info_,             \
     69                                      ps_get_font_extra_,         \
     70                                      has_glyph_names_,           \
     71                                      get_font_private_,          \
     72                                      get_font_value_ )           \
     73   static const FT_Service_PsInfoRec  class_ =                    \
     74   {                                                              \
     75     get_font_info_, ps_get_font_extra_, has_glyph_names_,        \
     76     get_font_private_, get_font_value_                           \
     77   };
     78 
     79 #else /* FT_CONFIG_OPTION_PIC */
     80 
     81 #define FT_DEFINE_SERVICE_PSINFOREC( class_,                     \
     82                                      get_font_info_,             \
     83                                      ps_get_font_extra_,         \
     84                                      has_glyph_names_,           \
     85                                      get_font_private_,          \
     86                                      get_font_value_ )           \
     87   void                                                           \
     88   FT_Init_Class_ ## class_( FT_Library             library,      \
     89                             FT_Service_PsInfoRec*  clazz )       \
     90   {                                                              \
     91     FT_UNUSED( library );                                        \
     92                                                                  \
     93     clazz->ps_get_font_info    = get_font_info_;                 \
     94     clazz->ps_get_font_extra   = ps_get_font_extra_;             \
     95     clazz->ps_has_glyph_names  = has_glyph_names_;               \
     96     clazz->ps_get_font_private = get_font_private_;              \
     97     clazz->ps_get_font_value   = get_font_value_;                \
     98   }
     99 
    100 #endif /* FT_CONFIG_OPTION_PIC */
    101 
    102   /* */
    103 
    104 
    105 FT_END_HEADER
    106 
    107 
    108 #endif /* SVPSINFO_H_ */
    109 
    110 
    111 /* END */
    112