1727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease/***************************************************************************/
2727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease/*                                                                         */
3727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease/*  svprop.h                                                               */
4727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease/*                                                                         */
5727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease/*    The FreeType property service (specification).                       */
6727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease/*                                                                         */
7727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease/*  Copyright 2012 by                                                      */
8727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
9727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease/*                                                                         */
10727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease/*  This file is part of the FreeType project, and may only be used,       */
11727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease/*  modified, and distributed under the terms of the FreeType project      */
12727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
13727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease/*  this file you indicate that you have read the license and              */
14727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease/*  understand and accept it fully.                                        */
15727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease/*                                                                         */
16727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease/***************************************************************************/
17727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease
18727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease
19727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease#ifndef __SVPROP_H__
20727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease#define __SVPROP_H__
21727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease
22727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease
23727dee178a392d20eb050d0c446f2fcc29058fa1Victoria LeaseFT_BEGIN_HEADER
24727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease
25727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease
26727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease#define FT_SERVICE_ID_PROPERTIES  "properties"
27727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease
28727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease
29727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease  typedef FT_Error
30727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease  (*FT_Properties_SetFunc)( FT_Module    module,
31727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease                            const char*  property_name,
32727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease                            const void*  value );
33727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease
34727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease  typedef FT_Error
35727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease  (*FT_Properties_GetFunc)( FT_Module    module,
36727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease                            const char*  property_name,
37727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease                            void*        value );
38727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease
39727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease
40727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease  FT_DEFINE_SERVICE( Properties )
41727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease  {
42727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease    FT_Properties_SetFunc  set_property;
43727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease    FT_Properties_GetFunc  get_property;
44727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease  };
45727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease
46727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease
47727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease#ifndef FT_CONFIG_OPTION_PIC
48727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease
49727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease#define FT_DEFINE_SERVICE_PROPERTIESREC( class_,          \
50727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease                                         set_property_,   \
51727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease                                         get_property_ )  \
52727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease  static const FT_Service_PropertiesRec  class_ =         \
53727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease  {                                                       \
54727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease    set_property_,                                        \
55727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease    get_property_                                         \
56727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease  };
57727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease
58727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease#else /* FT_CONFIG_OPTION_PIC */
59727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease
60727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease#define FT_DEFINE_SERVICE_PROPERTIESREC( class_,                \
61727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease                                         set_property_,         \
62727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease                                         get_property_ )        \
63727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease  void                                                          \
64727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease  FT_Init_Class_ ## class_( FT_Service_PropertiesRec*  clazz )  \
65727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease  {                                                             \
66727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease    clazz->set_property = set_property_;                        \
67727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease    clazz->get_property = get_property_;                        \
68727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease  }
69727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease
70727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease#endif /* FT_CONFIG_OPTION_PIC */
71727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease
72727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease  /* */
73727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease
74727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease
75727dee178a392d20eb050d0c446f2fcc29058fa1Victoria LeaseFT_END_HEADER
76727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease
77727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease
78727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease#endif /* __SVPROP_H__ */
79727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease
80727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease
81727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease/* END */
82