1ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/***************************************************************************/ 2ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* */ 3ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* svprop.h */ 4ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* */ 5ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* The FreeType property service (specification). */ 6ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* */ 7ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* Copyright 2012 by */ 8ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* David Turner, Robert Wilhelm, and Werner Lemberg. */ 9ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* */ 10ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* This file is part of the FreeType project, and may only be used, */ 11ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* modified, and distributed under the terms of the FreeType project */ 12ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ 13ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* this file you indicate that you have read the license and */ 14ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* understand and accept it fully. */ 15ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* */ 16ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/***************************************************************************/ 17ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 18ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 19ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifndef __SVPROP_H__ 20ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define __SVPROP_H__ 21ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 22ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 23ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFT_BEGIN_HEADER 24ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 25ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 26ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_SERVICE_ID_PROPERTIES "properties" 27ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 28ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 29ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef FT_Error 30ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov (*FT_Properties_SetFunc)( FT_Module module, 31ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov const char* property_name, 32ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov const void* value ); 33ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 34ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef FT_Error 35ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov (*FT_Properties_GetFunc)( FT_Module module, 36ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov const char* property_name, 37ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void* value ); 38ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 39ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 40ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_DEFINE_SERVICE( Properties ) 41ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 42ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Properties_SetFunc set_property; 43ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Properties_GetFunc get_property; 44ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov }; 45ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 46ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 47ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifndef FT_CONFIG_OPTION_PIC 48ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 49ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_DEFINE_SERVICE_PROPERTIESREC( class_, \ 50ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov set_property_, \ 51ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov get_property_ ) \ 52ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov static const FT_Service_PropertiesRec class_ = \ 53ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { \ 54ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov set_property_, \ 55ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov get_property_ \ 56ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov }; 57ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 58ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#else /* FT_CONFIG_OPTION_PIC */ 59ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 60ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_DEFINE_SERVICE_PROPERTIESREC( class_, \ 61ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov set_property_, \ 62ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov get_property_ ) \ 63ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void \ 64ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Init_Class_ ## class_( FT_Service_PropertiesRec* clazz ) \ 65ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { \ 66ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov clazz->set_property = set_property_; \ 67ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov clazz->get_property = get_property_; \ 68ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 69ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 70ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif /* FT_CONFIG_OPTION_PIC */ 71ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 72ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 73ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 74ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 75ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFT_END_HEADER 76ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 77ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 78ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif /* __SVPROP_H__ */ 79ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 80ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 81ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* END */ 82