ReactOS 0.4.16-dev-1019-g2c2cdfd
ftsmooth.c File Reference
#include <ft2build.h>
#include "ftsmooth.h"
#include "ftgrays.h"
#include "ftsmerrs.h"
Include dependency graph for ftsmooth.c:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

static FT_Error ft_smooth_init (FT_Renderer render)
 
static FT_Error ft_smooth_set_mode (FT_Renderer render, FT_ULong mode_tag, FT_Pointer data)
 
static FT_Error ft_smooth_transform (FT_Renderer render, FT_GlyphSlot slot, const FT_Matrix *matrix, const FT_Vector *delta)
 
static void ft_smooth_get_cbox (FT_Renderer render, FT_GlyphSlot slot, FT_BBox *cbox)
 
static FT_Error ft_smooth_render_generic (FT_Renderer render, FT_GlyphSlot slot, FT_Render_Mode mode, const FT_Vector *origin, FT_Render_Mode required_mode)
 
static FT_Error ft_smooth_render (FT_Renderer render, FT_GlyphSlot slot, FT_Render_Mode mode, const FT_Vector *origin)
 
static FT_Error ft_smooth_render_lcd (FT_Renderer render, FT_GlyphSlot slot, FT_Render_Mode mode, const FT_Vector *origin)
 
static FT_Error ft_smooth_render_lcd_v (FT_Renderer render, FT_GlyphSlot slot, FT_Render_Mode mode, const FT_Vector *origin)
 
 FT_DEFINE_RENDERER (ft_smooth_renderer_class, FT_MODULE_RENDERER, sizeof(FT_RendererRec), "smooth", 0x10000L, 0x20000L, NULL,(FT_Module_Constructor) ft_smooth_init,(FT_Module_Destructor) NULL,(FT_Module_Requester) NULL, FT_GLYPH_FORMAT_OUTLINE,(FT_Renderer_RenderFunc) ft_smooth_render,(FT_Renderer_TransformFunc) ft_smooth_transform,(FT_Renderer_GetCBoxFunc) ft_smooth_get_cbox,(FT_Renderer_SetModeFunc) ft_smooth_set_mode,(FT_Raster_Funcs *)&ft_grays_raster) FT_DEFINE_RENDERER(ft_smooth_lcd_renderer_class
 
 sizeof (FT_RendererRec)
 

Variables

 FT_MODULE_RENDERER
 
smooth lcd
 
smooth NULL
 
smooth FT_Module_Constructor ft_smooth_init
 
smooth FT_Module_Constructor FT_Module_Destructor FT_Module_Requester FT_GLYPH_FORMAT_OUTLINE
 
smooth FT_Module_Constructor FT_Module_Destructor FT_Module_Requester FT_Renderer_RenderFunc ft_smooth_render_lcd
 
smooth FT_Module_Constructor FT_Module_Destructor FT_Module_Requester FT_Renderer_RenderFunc FT_Renderer_TransformFunc ft_smooth_transform
 
smooth FT_Module_Constructor FT_Module_Destructor FT_Module_Requester FT_Renderer_RenderFunc FT_Renderer_TransformFunc FT_Renderer_GetCBoxFunc ft_smooth_get_cbox
 
smooth FT_Module_Constructor FT_Module_Destructor FT_Module_Requester FT_Renderer_RenderFunc FT_Renderer_TransformFunc FT_Renderer_GetCBoxFunc FT_Renderer_SetModeFunc ft_smooth_set_mode
 

Function Documentation

◆ FT_DEFINE_RENDERER()

FT_DEFINE_RENDERER ( ft_smooth_renderer_class  ,
FT_MODULE_RENDERER  ,
sizeof(FT_RendererRec ,
"smooth"  ,
0x10000L  ,
0x20000L  ,
NULL  ,
(FT_Module_Constructor ft_smooth_init,
(FT_Module_Destructor NULL,
(FT_Module_Requester NULL,
FT_GLYPH_FORMAT_OUTLINE  ,
(FT_Renderer_RenderFunc ft_smooth_render,
(FT_Renderer_TransformFunc ft_smooth_transform,
(FT_Renderer_GetCBoxFunc ft_smooth_get_cbox,
(FT_Renderer_SetModeFunc ft_smooth_set_mode,
(FT_Raster_Funcs *)&  ft_grays_raster 
)

◆ ft_smooth_get_cbox()

static void ft_smooth_get_cbox ( FT_Renderer  render,
FT_GlyphSlot  slot,
FT_BBox cbox 
)
static

Definition at line 100 of file ftsmooth.c.

103 {
104 FT_ZERO( cbox );
105
106 if ( slot->format == render->glyph_format )
107 FT_Outline_Get_CBox( &slot->outline, cbox );
108 }
#define FT_ZERO(p)
Definition: ftmemory.h:237
FT_Outline_Get_CBox(const FT_Outline *outline, FT_BBox *acbox)
Definition: ftoutln.c:459
static void render(void)
Definition: ssstars.c:272
Definition: vfat.h:185

◆ ft_smooth_init()

static FT_Error ft_smooth_init ( FT_Renderer  render)
static

Definition at line 31 of file ftsmooth.c.

32 {
33
34#ifndef FT_CONFIG_OPTION_SUBPIXEL_RENDERING
35
36 FT_Vector* sub = render->root.library->lcd_geometry;
37
38
39 /* set up default subpixel geometry for striped RGB panels. */
40 sub[0].x = -21;
41 sub[0].y = 0;
42 sub[1].x = 0;
43 sub[1].y = 0;
44 sub[2].x = 21;
45 sub[2].y = 0;
46
47#elif 0 /* or else, once ClearType patents expire */
48
50
51#endif
52
53 render->clazz->raster_class->raster_reset( render->raster, NULL, 0 );
54
55 return 0;
56 }
@ FT_LCD_FILTER_DEFAULT
Definition: ftlcdfil.h:164
FT_Library_SetLcdFilter(FT_Library library, FT_LcdFilter filter)
Definition: ftlcdfil.c:408
smooth NULL
Definition: ftsmooth.c:456
FT_Pos x
Definition: ftimage.h:78
FT_Pos y
Definition: ftimage.h:79

◆ ft_smooth_render()

static FT_Error ft_smooth_render ( FT_Renderer  render,
FT_GlyphSlot  slot,
FT_Render_Mode  mode,
const FT_Vector origin 
)
static

Definition at line 385 of file ftsmooth.c.

389 {
390 if ( mode == FT_RENDER_MODE_LIGHT )
392
395 }
@ FT_RENDER_MODE_NORMAL
Definition: freetype.h:3256
@ FT_RENDER_MODE_LIGHT
Definition: freetype.h:3257
static FT_Error ft_smooth_render_generic(FT_Renderer render, FT_GlyphSlot slot, FT_Render_Mode mode, const FT_Vector *origin, FT_Render_Mode required_mode)
Definition: ftsmooth.c:113
GLenum mode
Definition: glext.h:6217
voidpf uLong int origin
Definition: ioapi.h:144

◆ ft_smooth_render_generic()

static FT_Error ft_smooth_render_generic ( FT_Renderer  render,
FT_GlyphSlot  slot,
FT_Render_Mode  mode,
const FT_Vector origin,
FT_Render_Mode  required_mode 
)
static

Definition at line 113 of file ftsmooth.c.

118 {
120 FT_Outline* outline = &slot->outline;
121 FT_Bitmap* bitmap = &slot->bitmap;
122 FT_Memory memory = render->root.memory;
123 FT_Pos x_shift = 0;
124 FT_Pos y_shift = 0;
125 FT_Int hmul = ( mode == FT_RENDER_MODE_LCD );
126 FT_Int vmul = ( mode == FT_RENDER_MODE_LCD_V );
127
129
130
131 /* check glyph image format */
132 if ( slot->format != render->glyph_format )
133 {
134 error = FT_THROW( Invalid_Argument );
135 goto Exit;
136 }
137
138 /* check mode */
139 if ( mode != required_mode )
140 {
141 error = FT_THROW( Cannot_Render_Glyph );
142 goto Exit;
143 }
144
145 /* release old bitmap buffer */
146 if ( slot->internal->flags & FT_GLYPH_OWN_BITMAP )
147 {
148 FT_FREE( bitmap->buffer );
149 slot->internal->flags &= ~FT_GLYPH_OWN_BITMAP;
150 }
151
153 {
154 error = FT_THROW( Raster_Overflow );
155 goto Exit;
156 }
157
158 /* allocate new one */
159 if ( FT_ALLOC_MULT( bitmap->buffer, bitmap->rows, bitmap->pitch ) )
160 goto Exit;
161
162 slot->internal->flags |= FT_GLYPH_OWN_BITMAP;
163
164 x_shift = 64 * -slot->bitmap_left;
165 y_shift = 64 * -slot->bitmap_top;
166 if ( bitmap->pixel_mode == FT_PIXEL_MODE_LCD_V )
167 y_shift += 64 * (FT_Int)bitmap->rows / 3;
168 else
169 y_shift += 64 * (FT_Int)bitmap->rows;
170
171 if ( origin )
172 {
173 x_shift += origin->x;
174 y_shift += origin->y;
175 }
176
177 /* translate outline to render it into the bitmap */
178 if ( x_shift || y_shift )
179 FT_Outline_Translate( outline, x_shift, y_shift );
180
181 /* set up parameters */
182 params.target = bitmap;
183 params.source = outline;
185
186#ifdef FT_CONFIG_OPTION_SUBPIXEL_RENDERING
187
188 /* implode outline if needed */
189 {
190 FT_Vector* points = outline->points;
191 FT_Vector* points_end = points + outline->n_points;
192 FT_Vector* vec;
193
194
195 if ( hmul )
196 for ( vec = points; vec < points_end; vec++ )
197 vec->x *= 3;
198
199 if ( vmul )
200 for ( vec = points; vec < points_end; vec++ )
201 vec->y *= 3;
202 }
203
204 /* render outline into the bitmap */
205 error = render->raster_render( render->raster, &params );
206
207 /* deflate outline if needed */
208 {
209 FT_Vector* points = outline->points;
210 FT_Vector* points_end = points + outline->n_points;
211 FT_Vector* vec;
212
213
214 if ( hmul )
215 for ( vec = points; vec < points_end; vec++ )
216 vec->x /= 3;
217
218 if ( vmul )
219 for ( vec = points; vec < points_end; vec++ )
220 vec->y /= 3;
221 }
222
223 if ( error )
224 goto Exit;
225
226 /* finally apply filtering */
227 if ( hmul || vmul )
228 {
229 FT_Byte* lcd_weights;
230 FT_Bitmap_LcdFilterFunc lcd_filter_func;
231
232
233 /* Per-face LCD filtering takes priority if set up. */
234 if ( slot->face && slot->face->internal->lcd_filter_func )
235 {
236 lcd_weights = slot->face->internal->lcd_weights;
237 lcd_filter_func = slot->face->internal->lcd_filter_func;
238 }
239 else
240 {
241 lcd_weights = slot->library->lcd_weights;
242 lcd_filter_func = slot->library->lcd_filter_func;
243 }
244
245 if ( lcd_filter_func )
246 lcd_filter_func( bitmap, mode, lcd_weights );
247 }
248
249#else /* !FT_CONFIG_OPTION_SUBPIXEL_RENDERING */
250
251 if ( hmul ) /* lcd */
252 {
253 FT_Byte* line;
254 FT_Byte* temp = NULL;
255 FT_UInt i, j;
256
257 unsigned int height = bitmap->rows;
258 unsigned int width = bitmap->width;
259 int pitch = bitmap->pitch;
260
261 FT_Vector* sub = slot->library->lcd_geometry;
262
263
264 /* Render 3 separate monochrome bitmaps, shifting the outline. */
265 width /= 3;
266
268 -sub[0].x,
269 -sub[0].y );
270 error = render->raster_render( render->raster, &params );
271 if ( error )
272 goto Exit;
273
274 bitmap->buffer += width;
276 sub[0].x - sub[1].x,
277 sub[0].y - sub[1].y );
278 error = render->raster_render( render->raster, &params );
279 bitmap->buffer -= width;
280 if ( error )
281 goto Exit;
282
283 bitmap->buffer += 2 * width;
285 sub[1].x - sub[2].x,
286 sub[1].y - sub[2].y );
287 error = render->raster_render( render->raster, &params );
288 bitmap->buffer -= 2 * width;
289 if ( error )
290 goto Exit;
291
292 x_shift -= sub[2].x;
293 y_shift -= sub[2].y;
294
295 /* XXX: Rearrange the bytes according to FT_PIXEL_MODE_LCD. */
296 /* XXX: It is more efficient to render every third byte above. */
297
298 if ( FT_ALLOC( temp, (FT_ULong)pitch ) )
299 goto Exit;
300
301 for ( i = 0; i < height; i++ )
302 {
303 line = bitmap->buffer + i * (FT_ULong)pitch;
304 for ( j = 0; j < width; j++ )
305 {
306 temp[3 * j ] = line[j];
307 temp[3 * j + 1] = line[j + width];
308 temp[3 * j + 2] = line[j + width + width];
309 }
310 FT_MEM_COPY( line, temp, pitch );
311 }
312
313 FT_FREE( temp );
314 }
315 else if ( vmul ) /* lcd_v */
316 {
317 int pitch = bitmap->pitch;
318
319 FT_Vector* sub = slot->library->lcd_geometry;
320
321
322 /* Render 3 separate monochrome bitmaps, shifting the outline. */
323 /* Notice that the subpixel geometry vectors are rotated. */
324 /* Triple the pitch to render on each third row. */
325 bitmap->pitch *= 3;
326 bitmap->rows /= 3;
327
329 -sub[0].y,
330 sub[0].x );
331 error = render->raster_render( render->raster, &params );
332 if ( error )
333 goto Exit;
334
335 bitmap->buffer += pitch;
337 sub[0].y - sub[1].y,
338 sub[1].x - sub[0].x );
339 error = render->raster_render( render->raster, &params );
340 bitmap->buffer -= pitch;
341 if ( error )
342 goto Exit;
343
344 bitmap->buffer += 2 * pitch;
346 sub[1].y - sub[2].y,
347 sub[2].x - sub[1].x );
348 error = render->raster_render( render->raster, &params );
349 bitmap->buffer -= 2 * pitch;
350 if ( error )
351 goto Exit;
352
353 x_shift -= sub[2].y;
354 y_shift += sub[2].x;
355
356 bitmap->pitch /= 3;
357 bitmap->rows *= 3;
358 }
359 else /* grayscale */
360 error = render->raster_render( render->raster, &params );
361
362#endif /* !FT_CONFIG_OPTION_SUBPIXEL_RENDERING */
363
364 Exit:
365 if ( !error )
366 {
367 /* everything is fine; the glyph is now officially a bitmap */
368 slot->format = FT_GLYPH_FORMAT_BITMAP;
369 }
370 else if ( slot->internal->flags & FT_GLYPH_OWN_BITMAP )
371 {
372 FT_FREE( bitmap->buffer );
373 slot->internal->flags &= ~FT_GLYPH_OWN_BITMAP;
374 }
375
376 if ( x_shift || y_shift )
377 FT_Outline_Translate( outline, -x_shift, -y_shift );
378
379 return error;
380 }
@ FT_RENDER_MODE_LCD_V
Definition: freetype.h:3260
@ FT_RENDER_MODE_LCD
Definition: freetype.h:3259
FT_Vector * vec
Definition: ftbbox.c:470
return FT_Err_Ok
Definition: ftbbox.c:527
#define FT_THROW(e)
Definition: ftdebug.h:241
#define FT_RASTER_FLAG_AA
Definition: ftimage.h:963
@ FT_PIXEL_MODE_LCD_V
Definition: ftimage.h:189
FT_BEGIN_HEADER typedef signed long FT_Pos
Definition: ftimage.h:58
#define FT_ALLOC_MULT(ptr, count, item_size)
Definition: ftmemory.h:308
#define FT_ALLOC(ptr, size)
Definition: ftmemory.h:302
#define FT_FREE(ptr)
Definition: ftmemory.h:328
#define FT_MEM_COPY(dest, source, count)
Definition: ftmemory.h:228
ft_glyphslot_preset_bitmap(FT_GlyphSlot slot, FT_Render_Mode mode, const FT_Vector *origin)
Definition: ftobjs.c:348
#define FT_GLYPH_OWN_BITMAP
Definition: ftobjs.h:423
FT_Outline_Translate(const FT_Outline *outline, FT_Pos xOffset, FT_Pos yOffset)
Definition: ftoutln.c:509
typedefFT_BEGIN_HEADER struct FT_MemoryRec_ * FT_Memory
Definition: ftsystem.h:65
unsigned long FT_ULong
Definition: fttypes.h:253
unsigned char FT_Byte
Definition: fttypes.h:154
int FT_Error
Definition: fttypes.h:299
unsigned int FT_UInt
Definition: fttypes.h:231
signed int FT_Int
Definition: fttypes.h:220
GLint GLint GLint GLint GLint x
Definition: gl.h:1548
GLint GLint GLint GLint GLint GLint y
Definition: gl.h:1548
GLint GLint GLsizei GLsizei height
Definition: gl.h:1546
GLint GLint GLsizei width
Definition: gl.h:1546
GLenum const GLfloat * params
Definition: glext.h:5645
GLsizei const GLfloat * points
Definition: glext.h:8112
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
Definition: glfuncs.h:250
if(dx< 0)
Definition: linetemp.h:194
#define error(str)
Definition: mkdosfs.c:1605
static char memory[1024 *256]
Definition: process.c:116
static calc_node_t temp
Definition: rpn_ieee.c:38
static void Exit(void)
Definition: sock.c:1330
Definition: uimain.c:89
uint32 width
Definition: uimain.c:91
Definition: parser.c:49
Definition: mesh.c:5330

Referenced by ft_smooth_render(), ft_smooth_render_lcd(), and ft_smooth_render_lcd_v().

◆ ft_smooth_render_lcd()

static FT_Error ft_smooth_render_lcd ( FT_Renderer  render,
FT_GlyphSlot  slot,
FT_Render_Mode  mode,
const FT_Vector origin 
)
static

Definition at line 400 of file ftsmooth.c.

404 {
407 }

◆ ft_smooth_render_lcd_v()

static FT_Error ft_smooth_render_lcd_v ( FT_Renderer  render,
FT_GlyphSlot  slot,
FT_Render_Mode  mode,
const FT_Vector origin 
)
static

Definition at line 412 of file ftsmooth.c.

◆ ft_smooth_set_mode()

static FT_Error ft_smooth_set_mode ( FT_Renderer  render,
FT_ULong  mode_tag,
FT_Pointer  data 
)
static

Definition at line 61 of file ftsmooth.c.

64 {
65 /* we simply pass it to the raster */
66 return render->clazz->raster_class->raster_set_mode( render->raster,
67 mode_tag,
68 data );
69 }
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950

◆ ft_smooth_transform()

static FT_Error ft_smooth_transform ( FT_Renderer  render,
FT_GlyphSlot  slot,
const FT_Matrix matrix,
const FT_Vector delta 
)
static

Definition at line 73 of file ftsmooth.c.

77 {
79
80
81 if ( slot->format != render->glyph_format )
82 {
83 error = FT_THROW( Invalid_Argument );
84 goto Exit;
85 }
86
87 if ( matrix )
88 FT_Outline_Transform( &slot->outline, matrix );
89
90 if ( delta )
91 FT_Outline_Translate( &slot->outline, delta->x, delta->y );
92
93 Exit:
94 return error;
95 }
FT_Outline_Transform(const FT_Outline *outline, const FT_Matrix *matrix)
Definition: ftoutln.c:698
GLuint GLenum matrix
Definition: glext.h:9407

◆ sizeof()

sizeof ( FT_RendererRec  )

Variable Documentation

◆ FT_GLYPH_FORMAT_OUTLINE

◆ FT_MODULE_RENDERER

FT_MODULE_RENDERER

Definition at line 452 of file ftsmooth.c.

◆ ft_smooth_get_cbox

◆ ft_smooth_init

smooth FT_Module_Constructor ft_smooth_init

Definition at line 461 of file ftsmooth.c.

◆ ft_smooth_render_lcd

◆ ft_smooth_set_mode

◆ ft_smooth_transform

◆ lcd

smooth lcd

Definition at line 455 of file ftsmooth.c.

◆ NULL