Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
4759 | right-hear | 1 | /***************************************************************************/ |
2 | /* */ |
||
3 | /* ftrender.h */ |
||
4 | /* */ |
||
5 | /* FreeType renderer modules public interface (specification). */ |
||
6 | /* */ |
||
7 | /* Copyright 1996-2001, 2005, 2006, 2010 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 __FTRENDER_H__ |
||
20 | #define __FTRENDER_H__ |
||
21 | |||
22 | |||
23 | #include |
||
24 | #include FT_MODULE_H |
||
25 | #include FT_GLYPH_H |
||
26 | |||
27 | |||
28 | FT_BEGIN_HEADER |
||
29 | |||
30 | |||
31 | /*************************************************************************/ |
||
32 | /* */ |
||
33 | /* |
||
34 | /* module_management */ |
||
35 | /* */ |
||
36 | /*************************************************************************/ |
||
37 | |||
38 | |||
39 | /* create a new glyph object */ |
||
40 | typedef FT_Error |
||
41 | (*FT_Glyph_InitFunc)( FT_Glyph glyph, |
||
42 | FT_GlyphSlot slot ); |
||
43 | |||
44 | /* destroys a given glyph object */ |
||
45 | typedef void |
||
46 | (*FT_Glyph_DoneFunc)( FT_Glyph glyph ); |
||
47 | |||
48 | typedef void |
||
49 | (*FT_Glyph_TransformFunc)( FT_Glyph glyph, |
||
50 | const FT_Matrix* matrix, |
||
51 | const FT_Vector* delta ); |
||
52 | |||
53 | typedef void |
||
54 | (*FT_Glyph_GetBBoxFunc)( FT_Glyph glyph, |
||
55 | FT_BBox* abbox ); |
||
56 | |||
57 | typedef FT_Error |
||
58 | (*FT_Glyph_CopyFunc)( FT_Glyph source, |
||
59 | FT_Glyph target ); |
||
60 | |||
61 | typedef FT_Error |
||
62 | (*FT_Glyph_PrepareFunc)( FT_Glyph glyph, |
||
63 | FT_GlyphSlot slot ); |
||
64 | |||
65 | /* deprecated */ |
||
66 | #define FT_Glyph_Init_Func FT_Glyph_InitFunc |
||
67 | #define FT_Glyph_Done_Func FT_Glyph_DoneFunc |
||
68 | #define FT_Glyph_Transform_Func FT_Glyph_TransformFunc |
||
69 | #define FT_Glyph_BBox_Func FT_Glyph_GetBBoxFunc |
||
70 | #define FT_Glyph_Copy_Func FT_Glyph_CopyFunc |
||
71 | #define FT_Glyph_Prepare_Func FT_Glyph_PrepareFunc |
||
72 | |||
73 | |||
74 | struct FT_Glyph_Class_ |
||
75 | { |
||
76 | FT_Long glyph_size; |
||
77 | FT_Glyph_Format glyph_format; |
||
78 | FT_Glyph_InitFunc glyph_init; |
||
79 | FT_Glyph_DoneFunc glyph_done; |
||
80 | FT_Glyph_CopyFunc glyph_copy; |
||
81 | FT_Glyph_TransformFunc glyph_transform; |
||
82 | FT_Glyph_GetBBoxFunc glyph_bbox; |
||
83 | FT_Glyph_PrepareFunc glyph_prepare; |
||
84 | }; |
||
85 | |||
86 | |||
87 | typedef FT_Error |
||
88 | (*FT_Renderer_RenderFunc)( FT_Renderer renderer, |
||
89 | FT_GlyphSlot slot, |
||
90 | FT_UInt mode, |
||
91 | const FT_Vector* origin ); |
||
92 | |||
93 | typedef FT_Error |
||
94 | (*FT_Renderer_TransformFunc)( FT_Renderer renderer, |
||
95 | FT_GlyphSlot slot, |
||
96 | const FT_Matrix* matrix, |
||
97 | const FT_Vector* delta ); |
||
98 | |||
99 | |||
100 | typedef void |
||
101 | (*FT_Renderer_GetCBoxFunc)( FT_Renderer renderer, |
||
102 | FT_GlyphSlot slot, |
||
103 | FT_BBox* cbox ); |
||
104 | |||
105 | |||
106 | typedef FT_Error |
||
107 | (*FT_Renderer_SetModeFunc)( FT_Renderer renderer, |
||
108 | FT_ULong mode_tag, |
||
109 | FT_Pointer mode_ptr ); |
||
110 | |||
111 | /* deprecated identifiers */ |
||
112 | #define FTRenderer_render FT_Renderer_RenderFunc |
||
113 | #define FTRenderer_transform FT_Renderer_TransformFunc |
||
114 | #define FTRenderer_getCBox FT_Renderer_GetCBoxFunc |
||
115 | #define FTRenderer_setMode FT_Renderer_SetModeFunc |
||
116 | |||
117 | |||
118 | /*************************************************************************/ |
||
119 | /* */ |
||
120 | /* |
||
121 | /* FT_Renderer_Class */ |
||
122 | /* */ |
||
123 | /* |
||
124 | /* The renderer module class descriptor. */ |
||
125 | /* */ |
||
126 | /* |
||
127 | /* root :: The root @FT_Module_Class fields. */ |
||
128 | /* */ |
||
129 | /* glyph_format :: The glyph image format this renderer handles. */ |
||
130 | /* */ |
||
131 | /* render_glyph :: A method used to render the image that is in a */ |
||
132 | /* given glyph slot into a bitmap. */ |
||
133 | /* */ |
||
134 | /* transform_glyph :: A method used to transform the image that is in */ |
||
135 | /* a given glyph slot. */ |
||
136 | /* */ |
||
137 | /* get_glyph_cbox :: A method used to access the glyph's cbox. */ |
||
138 | /* */ |
||
139 | /* set_mode :: A method used to pass additional parameters. */ |
||
140 | /* */ |
||
141 | /* raster_class :: For @FT_GLYPH_FORMAT_OUTLINE renderers only. */ |
||
142 | /* This is a pointer to its raster's class. */ |
||
143 | /* */ |
||
144 | typedef struct FT_Renderer_Class_ |
||
145 | { |
||
146 | FT_Module_Class root; |
||
147 | |||
148 | FT_Glyph_Format glyph_format; |
||
149 | |||
150 | FT_Renderer_RenderFunc render_glyph; |
||
151 | FT_Renderer_TransformFunc transform_glyph; |
||
152 | FT_Renderer_GetCBoxFunc get_glyph_cbox; |
||
153 | FT_Renderer_SetModeFunc set_mode; |
||
154 | |||
155 | FT_Raster_Funcs* raster_class; |
||
156 | |||
157 | } FT_Renderer_Class; |
||
158 | |||
159 | |||
160 | /*************************************************************************/ |
||
161 | /* */ |
||
162 | /* |
||
163 | /* FT_Get_Renderer */ |
||
164 | /* */ |
||
165 | /* |
||
166 | /* Retrieve the current renderer for a given glyph format. */ |
||
167 | /* */ |
||
168 | /* */ |
||
169 | /* library :: A handle to the library object. */ |
||
170 | /* */ |
||
171 | /* format :: The glyph format. */ |
||
172 | /* */ |
||
173 | /* |
||
174 | /* A renderer handle. 0~if none found. */ |
||
175 | /* */ |
||
176 | /* |
||
177 | /* An error will be returned if a module already exists by that name, */ |
||
178 | /* or if the module requires a version of FreeType that is too great. */ |
||
179 | /* */ |
||
180 | /* To add a new renderer, simply use @FT_Add_Module. To retrieve a */ |
||
181 | /* renderer by its name, use @FT_Get_Module. */ |
||
182 | /* */ |
||
183 | FT_EXPORT( FT_Renderer ) |
||
184 | FT_Get_Renderer( FT_Library library, |
||
185 | FT_Glyph_Format format ); |
||
186 | |||
187 | |||
188 | /*************************************************************************/ |
||
189 | /* */ |
||
190 | /* |
||
191 | /* FT_Set_Renderer */ |
||
192 | /* */ |
||
193 | /* |
||
194 | /* Set the current renderer to use, and set additional mode. */ |
||
195 | /* */ |
||
196 | /* |
||
197 | /* library :: A handle to the library object. */ |
||
198 | /* */ |
||
199 | /* */ |
||
200 | /* renderer :: A handle to the renderer object. */ |
||
201 | /* */ |
||
202 | /* num_params :: The number of additional parameters. */ |
||
203 | /* */ |
||
204 | /* parameters :: Additional parameters. */ |
||
205 | /* */ |
||
206 | /* |
||
207 | /* FreeType error code. 0~means success. */ |
||
208 | /* */ |
||
209 | /* |
||
210 | /* In case of success, the renderer will be used to convert glyph */ |
||
211 | /* images in the renderer's known format into bitmaps. */ |
||
212 | /* */ |
||
213 | /* This doesn't change the current renderer for other formats. */ |
||
214 | /* */ |
||
215 | FT_EXPORT( FT_Error ) |
||
216 | FT_Set_Renderer( FT_Library library, |
||
217 | FT_Renderer renderer, |
||
218 | FT_UInt num_params, |
||
219 | FT_Parameter* parameters ); |
||
220 | |||
221 | |||
222 | /* */ |
||
223 | |||
224 | |||
225 | FT_END_HEADER |
||
226 | |||
227 | #endif /* __FTRENDER_H__ */ |
||
228 | |||
229 | |||
230 | /* END */ |