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