1 /***************************************************************************/
   2 /*                                                                         */
   3 /*  svprop.h                                                               */
   4 /*                                                                         */
   5 /*    The FreeType property service (specification).                       */
   6 /*                                                                         */
   7 /*  Copyright 2012-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 SVPROP_H_
  20 #define SVPROP_H_
  21 
  22 
  23 FT_BEGIN_HEADER
  24 
  25 
  26 #define FT_SERVICE_ID_PROPERTIES  "properties"
  27 
  28 
  29   typedef FT_Error
  30   (*FT_Properties_SetFunc)( FT_Module    module,
  31                             const char*  property_name,
  32                             const void*  value,
  33                             FT_Bool      value_is_string );
  34 
  35   typedef FT_Error
  36   (*FT_Properties_GetFunc)( FT_Module    module,
  37                             const char*  property_name,
  38                             void*        value );
  39 
  40 
  41   FT_DEFINE_SERVICE( Properties )
  42   {
  43     FT_Properties_SetFunc  set_property;
  44     FT_Properties_GetFunc  get_property;
  45   };
  46 
  47 
  48 #ifndef FT_CONFIG_OPTION_PIC
  49 
  50 #define FT_DEFINE_SERVICE_PROPERTIESREC( class_,          \
  51                                          set_property_,   \
  52                                          get_property_ )  \
  53   static const FT_Service_PropertiesRec  class_ =         \
  54   {                                                       \
  55     set_property_,                                        \
  56     get_property_                                         \
  57   };
  58 
  59 #else /* FT_CONFIG_OPTION_PIC */
  60 
  61 #define FT_DEFINE_SERVICE_PROPERTIESREC( class_,                \
  62                                          set_property_,         \
  63                                          get_property_ )        \
  64   void                                                          \
  65   FT_Init_Class_ ## class_( FT_Service_PropertiesRec*  clazz )  \
  66   {                                                             \
  67     clazz->set_property = set_property_;                        \
  68     clazz->get_property = get_property_;                        \
  69   }
  70 
  71 #endif /* FT_CONFIG_OPTION_PIC */
  72 
  73   /* */
  74 
  75 
  76 FT_END_HEADER
  77 
  78 
  79 #endif /* SVPROP_H_ */
  80 
  81 
  82 /* END */