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 FT_DEFINE_SERVICE(Properties)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 */ 83