rev |
line source |
nuclear@0
|
1 /***************************************************************************/
|
nuclear@0
|
2 /* */
|
nuclear@0
|
3 /* svmm.h */
|
nuclear@0
|
4 /* */
|
nuclear@0
|
5 /* The FreeType Multiple Masters and GX var services (specification). */
|
nuclear@0
|
6 /* */
|
nuclear@0
|
7 /* Copyright 2003, 2004 by */
|
nuclear@0
|
8 /* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
nuclear@0
|
9 /* */
|
nuclear@0
|
10 /* This file is part of the FreeType project, and may only be used, */
|
nuclear@0
|
11 /* modified, and distributed under the terms of the FreeType project */
|
nuclear@0
|
12 /* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
nuclear@0
|
13 /* this file you indicate that you have read the license and */
|
nuclear@0
|
14 /* understand and accept it fully. */
|
nuclear@0
|
15 /* */
|
nuclear@0
|
16 /***************************************************************************/
|
nuclear@0
|
17
|
nuclear@0
|
18
|
nuclear@0
|
19 #ifndef __SVMM_H__
|
nuclear@0
|
20 #define __SVMM_H__
|
nuclear@0
|
21
|
nuclear@0
|
22 #include FT_INTERNAL_SERVICE_H
|
nuclear@0
|
23
|
nuclear@0
|
24
|
nuclear@0
|
25 FT_BEGIN_HEADER
|
nuclear@0
|
26
|
nuclear@0
|
27
|
nuclear@0
|
28 /*
|
nuclear@0
|
29 * A service used to manage multiple-masters data in a given face.
|
nuclear@0
|
30 *
|
nuclear@0
|
31 * See the related APIs in `ftmm.h' (FT_MULTIPLE_MASTERS_H).
|
nuclear@0
|
32 *
|
nuclear@0
|
33 */
|
nuclear@0
|
34
|
nuclear@0
|
35 #define FT_SERVICE_ID_MULTI_MASTERS "multi-masters"
|
nuclear@0
|
36
|
nuclear@0
|
37
|
nuclear@0
|
38 typedef FT_Error
|
nuclear@0
|
39 (*FT_Get_MM_Func)( FT_Face face,
|
nuclear@0
|
40 FT_Multi_Master* master );
|
nuclear@0
|
41
|
nuclear@0
|
42 typedef FT_Error
|
nuclear@0
|
43 (*FT_Get_MM_Var_Func)( FT_Face face,
|
nuclear@0
|
44 FT_MM_Var* *master );
|
nuclear@0
|
45
|
nuclear@0
|
46 typedef FT_Error
|
nuclear@0
|
47 (*FT_Set_MM_Design_Func)( FT_Face face,
|
nuclear@0
|
48 FT_UInt num_coords,
|
nuclear@0
|
49 FT_Long* coords );
|
nuclear@0
|
50
|
nuclear@0
|
51 typedef FT_Error
|
nuclear@0
|
52 (*FT_Set_Var_Design_Func)( FT_Face face,
|
nuclear@0
|
53 FT_UInt num_coords,
|
nuclear@0
|
54 FT_Fixed* coords );
|
nuclear@0
|
55
|
nuclear@0
|
56 typedef FT_Error
|
nuclear@0
|
57 (*FT_Set_MM_Blend_Func)( FT_Face face,
|
nuclear@0
|
58 FT_UInt num_coords,
|
nuclear@0
|
59 FT_Long* coords );
|
nuclear@0
|
60
|
nuclear@0
|
61
|
nuclear@0
|
62 FT_DEFINE_SERVICE( MultiMasters )
|
nuclear@0
|
63 {
|
nuclear@0
|
64 FT_Get_MM_Func get_mm;
|
nuclear@0
|
65 FT_Set_MM_Design_Func set_mm_design;
|
nuclear@0
|
66 FT_Set_MM_Blend_Func set_mm_blend;
|
nuclear@0
|
67 FT_Get_MM_Var_Func get_mm_var;
|
nuclear@0
|
68 FT_Set_Var_Design_Func set_var_design;
|
nuclear@0
|
69 };
|
nuclear@0
|
70
|
nuclear@0
|
71 #ifndef FT_CONFIG_OPTION_PIC
|
nuclear@0
|
72
|
nuclear@0
|
73 #define FT_DEFINE_SERVICE_MULTIMASTERSREC(class_, get_mm_, set_mm_design_, \
|
nuclear@0
|
74 set_mm_blend_, get_mm_var_, set_var_design_) \
|
nuclear@0
|
75 static const FT_Service_MultiMastersRec class_ = \
|
nuclear@0
|
76 { \
|
nuclear@0
|
77 get_mm_, set_mm_design_, set_mm_blend_, get_mm_var_, set_var_design_ \
|
nuclear@0
|
78 };
|
nuclear@0
|
79
|
nuclear@0
|
80 #else /* FT_CONFIG_OPTION_PIC */
|
nuclear@0
|
81
|
nuclear@0
|
82 #define FT_DEFINE_SERVICE_MULTIMASTERSREC(class_, get_mm_, set_mm_design_, \
|
nuclear@0
|
83 set_mm_blend_, get_mm_var_, set_var_design_) \
|
nuclear@0
|
84 void \
|
nuclear@0
|
85 FT_Init_Class_##class_( FT_Service_MultiMastersRec* clazz ) \
|
nuclear@0
|
86 { \
|
nuclear@0
|
87 clazz->get_mm = get_mm_; \
|
nuclear@0
|
88 clazz->set_mm_design = set_mm_design_; \
|
nuclear@0
|
89 clazz->set_mm_blend = set_mm_blend_; \
|
nuclear@0
|
90 clazz->get_mm_var = get_mm_var_; \
|
nuclear@0
|
91 clazz->set_var_design = set_var_design_; \
|
nuclear@0
|
92 }
|
nuclear@0
|
93
|
nuclear@0
|
94 #endif /* FT_CONFIG_OPTION_PIC */
|
nuclear@0
|
95
|
nuclear@0
|
96 /* */
|
nuclear@0
|
97
|
nuclear@0
|
98
|
nuclear@0
|
99 FT_END_HEADER
|
nuclear@0
|
100
|
nuclear@0
|
101 #endif /* __SVMM_H__ */
|
nuclear@0
|
102
|
nuclear@0
|
103
|
nuclear@0
|
104 /* END */
|