[FREETYPE] Update to v2.7.1. Patch by Katayama Hirofumi MZ, verified by me. CORE...
[reactos.git] / reactos / sdk / lib / 3rdparty / freetype / include / freetype / internal / services / svmm.h
1 /***************************************************************************/
2 /* */
3 /* svmm.h */
4 /* */
5 /* The FreeType Multiple Masters and GX var services (specification). */
6 /* */
7 /* Copyright 2003-2016 by */
8 /* David Turner, Robert Wilhelm, and Werner Lemberg. */
9 /* */
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. */
15 /* */
16 /***************************************************************************/
17
18
19 #ifndef SVMM_H_
20 #define SVMM_H_
21
22 #include FT_INTERNAL_SERVICE_H
23
24
25 FT_BEGIN_HEADER
26
27
28 /*
29 * A service used to manage multiple-masters data in a given face.
30 *
31 * See the related APIs in `ftmm.h' (FT_MULTIPLE_MASTERS_H).
32 *
33 */
34
35 #define FT_SERVICE_ID_MULTI_MASTERS "multi-masters"
36
37
38 typedef FT_Error
39 (*FT_Get_MM_Func)( FT_Face face,
40 FT_Multi_Master* master );
41
42 typedef FT_Error
43 (*FT_Get_MM_Var_Func)( FT_Face face,
44 FT_MM_Var* *master );
45
46 typedef FT_Error
47 (*FT_Set_MM_Design_Func)( FT_Face face,
48 FT_UInt num_coords,
49 FT_Long* coords );
50
51 typedef FT_Error
52 (*FT_Set_Var_Design_Func)( FT_Face face,
53 FT_UInt num_coords,
54 FT_Fixed* coords );
55
56 typedef FT_Error
57 (*FT_Set_MM_Blend_Func)( FT_Face face,
58 FT_UInt num_coords,
59 FT_Long* coords );
60
61 typedef FT_Error
62 (*FT_Get_Var_Design_Func)( FT_Face face,
63 FT_UInt num_coords,
64 FT_Fixed* coords );
65
66 typedef FT_Error
67 (*FT_Get_MM_Blend_Func)( FT_Face face,
68 FT_UInt num_coords,
69 FT_Long* coords );
70
71 typedef FT_Error
72 (*FT_Get_Var_Blend_Func)( FT_Face face,
73 FT_UInt *num_coords,
74 FT_Fixed* *coords,
75 FT_MM_Var* *mm_var );
76
77 typedef void
78 (*FT_Done_Blend_Func)( FT_Face );
79
80
81 FT_DEFINE_SERVICE( MultiMasters )
82 {
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;
90
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;
94 };
95
96
97 #ifndef FT_CONFIG_OPTION_PIC
98
99 #define FT_DEFINE_SERVICE_MULTIMASTERSREC( class_, \
100 get_mm_, \
101 set_mm_design_, \
102 set_mm_blend_, \
103 get_mm_blend_, \
104 get_mm_var_, \
105 set_var_design_, \
106 get_var_design_, \
107 get_var_blend_, \
108 done_blend_ ) \
109 static const FT_Service_MultiMastersRec class_ = \
110 { \
111 get_mm_, \
112 set_mm_design_, \
113 set_mm_blend_, \
114 get_mm_blend_, \
115 get_mm_var_, \
116 set_var_design_, \
117 get_var_design_, \
118 get_var_blend_, \
119 done_blend_ \
120 };
121
122 #else /* FT_CONFIG_OPTION_PIC */
123
124 #define FT_DEFINE_SERVICE_MULTIMASTERSREC( class_, \
125 get_mm_, \
126 set_mm_design_, \
127 set_mm_blend_, \
128 get_mm_blend_, \
129 get_mm_var_, \
130 set_var_design_, \
131 get_var_design_, \
132 get_var_blend_, \
133 done_blend_ ) \
134 void \
135 FT_Init_Class_ ## class_( FT_Service_MultiMastersRec* clazz ) \
136 { \
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_; \
146 }
147
148 #endif /* FT_CONFIG_OPTION_PIC */
149
150 /* */
151
152
153 FT_END_HEADER
154
155 #endif /* SVMM_H_ */
156
157
158 /* END */