| OLD | NEW |
| (Empty) |
| 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 <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 /* 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 /* <Function> */ | |
| 163 /* FT_Get_Renderer */ | |
| 164 /* */ | |
| 165 /* <Description> */ | |
| 166 /* Retrieve the current renderer for a given glyph format. */ | |
| 167 /* */ | |
| 168 /* <Input> */ | |
| 169 /* library :: A handle to the library object. */ | |
| 170 /* */ | |
| 171 /* format :: The glyph format. */ | |
| 172 /* */ | |
| 173 /* <Return> */ | |
| 174 /* A renderer handle. 0~if none found. */ | |
| 175 /* */ | |
| 176 /* <Note> */ | |
| 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 /* <Function> */ | |
| 191 /* FT_Set_Renderer */ | |
| 192 /* */ | |
| 193 /* <Description> */ | |
| 194 /* Set the current renderer to use, and set additional mode. */ | |
| 195 /* */ | |
| 196 /* <InOut> */ | |
| 197 /* library :: A handle to the library object. */ | |
| 198 /* */ | |
| 199 /* <Input> */ | |
| 200 /* renderer :: A handle to the renderer object. */ | |
| 201 /* */ | |
| 202 /* num_params :: The number of additional parameters. */ | |
| 203 /* */ | |
| 204 /* parameters :: Additional parameters. */ | |
| 205 /* */ | |
| 206 /* <Return> */ | |
| 207 /* FreeType error code. 0~means success. */ | |
| 208 /* */ | |
| 209 /* <Note> */ | |
| 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 /* Currently, only the B/W renderer, if compiled with */ | |
| 216 /* FT_RASTER_OPTION_ANTI_ALIASING (providing a 5-levels */ | |
| 217 /* anti-aliasing mode; this option must be set directly in */ | |
| 218 /* `ftraster.c' and is undefined by default) accepts a single tag */ | |
| 219 /* `pal5' to set its gray palette as a character string with */ | |
| 220 /* 5~elements. Consequently, the third and fourth argument are zero */ | |
| 221 /* normally. */ | |
| 222 /* */ | |
| 223 FT_EXPORT( FT_Error ) | |
| 224 FT_Set_Renderer( FT_Library library, | |
| 225 FT_Renderer renderer, | |
| 226 FT_UInt num_params, | |
| 227 FT_Parameter* parameters ); | |
| 228 | |
| 229 /* */ | |
| 230 | |
| 231 | |
| 232 FT_END_HEADER | |
| 233 | |
| 234 #endif /* __FTRENDER_H__ */ | |
| 235 | |
| 236 | |
| 237 /* END */ | |
| OLD | NEW |