1 /***************************************************************************/
5 /* The FreeType Multiple Masters and GX var services (specification). */
7 /* Copyright 2003, 2004, 2009, 2012 by */
8 /* David Turner, Robert Wilhelm, and Werner Lemberg. */
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. */
16 /***************************************************************************/
22 #include FT_INTERNAL_SERVICE_H
29 * A service used to manage multiple-masters data in a given face.
31 * See the related APIs in `ftmm.h' (FT_MULTIPLE_MASTERS_H).
35 #define FT_SERVICE_ID_MULTI_MASTERS "multi-masters"
39 (*FT_Get_MM_Func)( FT_Face face,
40 FT_Multi_Master* master );
43 (*FT_Get_MM_Var_Func)( FT_Face face,
47 (*FT_Set_MM_Design_Func)( FT_Face face,
52 (*FT_Set_Var_Design_Func)( FT_Face face,
57 (*FT_Set_MM_Blend_Func)( FT_Face face,
62 FT_DEFINE_SERVICE( MultiMasters )
64 FT_Get_MM_Func get_mm;
65 FT_Set_MM_Design_Func set_mm_design;
66 FT_Set_MM_Blend_Func set_mm_blend;
67 FT_Get_MM_Var_Func get_mm_var;
68 FT_Set_Var_Design_Func set_var_design;
72 #ifndef FT_CONFIG_OPTION_PIC
74 #define FT_DEFINE_SERVICE_MULTIMASTERSREC( class_, \
80 static const FT_Service_MultiMastersRec class_ = \
82 get_mm_, set_mm_design_, set_mm_blend_, get_mm_var_, set_var_design_ \
85 #else /* FT_CONFIG_OPTION_PIC */
87 #define FT_DEFINE_SERVICE_MULTIMASTERSREC( class_, \
94 FT_Init_Class_ ## class_( FT_Service_MultiMastersRec* clazz ) \
96 clazz->get_mm = get_mm_; \
97 clazz->set_mm_design = set_mm_design_; \
98 clazz->set_mm_blend = set_mm_blend_; \
99 clazz->get_mm_var = get_mm_var_; \
100 clazz->set_var_design = set_var_design_; \
103 #endif /* FT_CONFIG_OPTION_PIC */
110 #endif /* __SVMM_H__ */