1 | /***************************************************************************/
|
---|
2 | /* */
|
---|
3 | /* ftrender.h */
|
---|
4 | /* */
|
---|
5 | /* FreeType renderer modules public interface (specification). */
|
---|
6 | /* */
|
---|
7 | /* Copyright 1996-2001, 2005 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 <ft2build.h>
|
---|
24 | #include FT_MODULE_H
|
---|
25 | #include FT_GLYPH_H
|
---|
26 |
|
---|
27 |
|
---|
28 | FT_BEGIN_HEADER
|
---|
29 |
|
---|
30 |
|
---|
31 | /*************************************************************************/
|
---|
32 | /* */
|
---|
33 | /* <Section> */
|
---|
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 | /* <Struct> */
|
---|
121 | /* FT_Renderer_Class */
|
---|
122 | /* */
|
---|
123 | /* <Description> */
|
---|
124 | /* The renderer module class descriptor. */
|
---|
125 | /* */
|
---|
126 | /* <Fields> */
|
---|
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 | /* set_mode :: A method used to pass additional parameters. */
|
---|
135 | /* */
|
---|
136 | /* raster_class :: For `FT_GLYPH_FORMAT_OUTLINE' renderers only, this */
|
---|
137 | /* is a pointer to its raster's class. */
|
---|
138 | /* */
|
---|
139 | /* raster :: For `FT_GLYPH_FORMAT_OUTLINE' renderers only. this */
|
---|
140 | /* is a pointer to the corresponding raster object, */
|
---|
141 | /* if any. */
|
---|
142 | /* */
|
---|
143 | typedef struct FT_Renderer_Class_
|
---|
144 | {
|
---|
145 | FT_Module_Class root;
|
---|
146 |
|
---|
147 | FT_Glyph_Format glyph_format;
|
---|
148 |
|
---|
149 | FT_Renderer_RenderFunc render_glyph;
|
---|
150 | FT_Renderer_TransformFunc transform_glyph;
|
---|
151 | FT_Renderer_GetCBoxFunc get_glyph_cbox;
|
---|
152 | FT_Renderer_SetModeFunc set_mode;
|
---|
153 |
|
---|
154 | FT_Raster_Funcs* raster_class;
|
---|
155 |
|
---|
156 | } FT_Renderer_Class;
|
---|
157 |
|
---|
158 |
|
---|
159 | /*************************************************************************/
|
---|
160 | /* */
|
---|
161 | /* <Function> */
|
---|
162 | /* FT_Get_Renderer */
|
---|
163 | /* */
|
---|
164 | /* <Description> */
|
---|
165 | /* Retrieves the current renderer for a given glyph format. */
|
---|
166 | /* */
|
---|
167 | /* <Input> */
|
---|
168 | /* library :: A handle to the library object. */
|
---|
169 | /* */
|
---|
170 | /* format :: The glyph format. */
|
---|
171 | /* */
|
---|
172 | /* <Return> */
|
---|
173 | /* A renderer handle. 0 if none found. */
|
---|
174 | /* */
|
---|
175 | /* <Note> */
|
---|
176 | /* An error will be returned if a module already exists by that name, */
|
---|
177 | /* or if the module requires a version of FreeType that is too great. */
|
---|
178 | /* */
|
---|
179 | /* To add a new renderer, simply use FT_Add_Module(). To retrieve a */
|
---|
180 | /* renderer by its name, use FT_Get_Module(). */
|
---|
181 | /* */
|
---|
182 | FT_EXPORT( FT_Renderer )
|
---|
183 | FT_Get_Renderer( FT_Library library,
|
---|
184 | FT_Glyph_Format format );
|
---|
185 |
|
---|
186 |
|
---|
187 | /*************************************************************************/
|
---|
188 | /* */
|
---|
189 | /* <Function> */
|
---|
190 | /* FT_Set_Renderer */
|
---|
191 | /* */
|
---|
192 | /* <Description> */
|
---|
193 | /* Sets the current renderer to use, and set additional mode. */
|
---|
194 | /* */
|
---|
195 | /* <InOut> */
|
---|
196 | /* library :: A handle to the library object. */
|
---|
197 | /* */
|
---|
198 | /* <Input> */
|
---|
199 | /* renderer :: A handle to the renderer object. */
|
---|
200 | /* */
|
---|
201 | /* num_params :: The number of additional parameters. */
|
---|
202 | /* */
|
---|
203 | /* parameters :: Additional parameters. */
|
---|
204 | /* */
|
---|
205 | /* <Return> */
|
---|
206 | /* FreeType error code. 0 means success. */
|
---|
207 | /* */
|
---|
208 | /* <Note> */
|
---|
209 | /* In case of success, the renderer will be used to convert glyph */
|
---|
210 | /* images in the renderer's known format into bitmaps. */
|
---|
211 | /* */
|
---|
212 | /* This doesn't change the current renderer for other formats. */
|
---|
213 | /* */
|
---|
214 | FT_EXPORT( FT_Error )
|
---|
215 | FT_Set_Renderer( FT_Library library,
|
---|
216 | FT_Renderer renderer,
|
---|
217 | FT_UInt num_params,
|
---|
218 | FT_Parameter* parameters );
|
---|
219 |
|
---|
220 |
|
---|
221 | /* */
|
---|
222 |
|
---|
223 |
|
---|
224 | FT_END_HEADER
|
---|
225 |
|
---|
226 | #endif /* __FTRENDER_H__ */
|
---|
227 |
|
---|
228 |
|
---|
229 | /* END */
|
---|