1 /***************************************************************************/
5 /* FreeType renderer modules public interface (specification). */
7 /* Copyright 1996-2001 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 /***************************************************************************/
19 #ifndef __FTRENDER_H__
20 #define __FTRENDER_H__
31 /*************************************************************************/
34 /* module_management */
36 /*************************************************************************/
39 /* create a new glyph object */
41 (*FT_Glyph_InitFunc)( FT_Glyph glyph,
44 /* destroys a given glyph object */
46 (*FT_Glyph_DoneFunc)( FT_Glyph glyph );
49 (*FT_Glyph_TransformFunc)( FT_Glyph glyph,
54 (*FT_Glyph_GetBBoxFunc)( FT_Glyph glyph,
58 (*FT_Glyph_CopyFunc)( FT_Glyph source,
62 (*FT_Glyph_PrepareFunc)( FT_Glyph glyph,
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
74 struct FT_Glyph_Class_
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;
88 (*FT_Renderer_RenderFunc)( FT_Renderer renderer,
94 (*FT_Renderer_TransformFunc)( FT_Renderer renderer,
101 (*FT_Renderer_GetCBoxFunc)( FT_Renderer renderer,
107 (*FT_Renderer_SetModeFunc)( FT_Renderer renderer,
109 FT_Pointer mode_ptr );
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
118 /*************************************************************************/
121 /* FT_Renderer_Class */
124 /* The renderer module class descriptor. */
127 /* root :: The root FT_Module_Class fields. */
129 /* glyph_format :: The glyph image format this renderer handles. */
131 /* render_glyph :: A method used to render the image that is in a */
132 /* given glyph slot into a bitmap. */
134 /* set_mode :: A method used to pass additional parameters. */
136 /* raster_class :: For `FT_GLYPH_FORMAT_OUTLINE' renderers only, this */
137 /* is a pointer to its raster's class. */
139 /* raster :: For `FT_GLYPH_FORMAT_OUTLINE' renderers only. this */
140 /* is a pointer to the corresponding raster object, */
143 typedef struct FT_Renderer_Class_
145 FT_Module_Class root;
147 FT_Glyph_Format glyph_format;
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;
154 FT_Raster_Funcs* raster_class;
159 /*************************************************************************/
162 /* FT_Get_Renderer */
165 /* Retrieves the current renderer for a given glyph format. */
168 /* library :: A handle to the library object. */
170 /* format :: The glyph format. */
173 /* A renderer handle. 0 if none found. */
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. */
179 /* To add a new renderer, simply use FT_Add_Module(). To retrieve a */
180 /* renderer by its name, use FT_Get_Module(). */
182 FT_EXPORT( FT_Renderer )
183 FT_Get_Renderer( FT_Library library,
184 FT_Glyph_Format format );
187 /*************************************************************************/
190 /* FT_Set_Renderer */
193 /* Sets the current renderer to use, and set additional mode. */
196 /* library :: A handle to the library object. */
199 /* renderer :: A handle to the renderer object. */
201 /* num_params :: The number of additional parameters. */
203 /* parameters :: Additional parameters. */
206 /* FreeType error code. 0 means success. */
209 /* In case of success, the renderer will be used to convert glyph */
210 /* images in the renderer's known format into bitmaps. */
212 /* This doesn't change the current renderer for other formats. */
214 FT_EXPORT( FT_Error )
215 FT_Set_Renderer( FT_Library library,
216 FT_Renderer renderer,
218 FT_Parameter* parameters );
226 #endif /* __FTRENDER_H__ */