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