1 /***************************************************************************/
5 /* The FreeType Multiple Masters and GX var services (specification). */
7 /* Copyright 2003-2016 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_Get_Var_Design_Func
)( FT_Face face
,
67 (*FT_Get_MM_Blend_Func
)( FT_Face face
,
72 (*FT_Get_Var_Blend_Func
)( FT_Face face
,
78 (*FT_Done_Blend_Func
)( FT_Face
);
81 FT_DEFINE_SERVICE( MultiMasters
)
83 FT_Get_MM_Func get_mm
;
84 FT_Set_MM_Design_Func set_mm_design
;
85 FT_Set_MM_Blend_Func set_mm_blend
;
86 FT_Get_MM_Blend_Func get_mm_blend
;
87 FT_Get_MM_Var_Func get_mm_var
;
88 FT_Set_Var_Design_Func set_var_design
;
89 FT_Get_Var_Design_Func get_var_design
;
91 /* for internal use; only needed for code sharing between modules */
92 FT_Get_Var_Blend_Func get_var_blend
;
93 FT_Done_Blend_Func done_blend
;
97 #ifndef FT_CONFIG_OPTION_PIC
99 #define FT_DEFINE_SERVICE_MULTIMASTERSREC( class_, \
109 static const FT_Service_MultiMastersRec class_ = \
122 #else /* FT_CONFIG_OPTION_PIC */
124 #define FT_DEFINE_SERVICE_MULTIMASTERSREC( class_, \
135 FT_Init_Class_ ## class_( FT_Service_MultiMastersRec* clazz ) \
137 clazz->get_mm = get_mm_; \
138 clazz->set_mm_design = set_mm_design_; \
139 clazz->set_mm_blend = set_mm_blend_; \
140 clazz->get_mm_blend = get_mm_blend_; \
141 clazz->get_mm_var = get_mm_var_; \
142 clazz->set_var_design = set_var_design_; \
143 clazz->get_var_design = get_var_design_; \
144 clazz->get_var_blend = get_var_blend_; \
145 clazz->done_blend = done_blend_; \
148 #endif /* FT_CONFIG_OPTION_PIC */