From 826935a381e0c3d36be6ac301b3c94c52d46e556 Mon Sep 17 00:00:00 2001 From: David Turner Date: Wed, 27 Sep 2006 09:12:43 +0000 Subject: [PATCH] another missing file --- include/freetype/ftlcdfil.h | 89 +++++++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 include/freetype/ftlcdfil.h diff --git a/include/freetype/ftlcdfil.h b/include/freetype/ftlcdfil.h new file mode 100644 index 000000000..59cb87525 --- /dev/null +++ b/include/freetype/ftlcdfil.h @@ -0,0 +1,89 @@ +#ifndef __FT_LCD_FILTER_H__ +#define __FT_LCD_FILTER_H__ + +#include +#include FT_FREETYPE_H + +FT_BEGIN_HEADER + + /** + * @func: FT_Library_SetLcdFilter + * + * @description: + * this function is used to apply color filtering to LCD decimated + * bitmaps, like the ones used when calling @FT_Render_Glyph with + * @FT_RENDER_MODE_LCD or @FT_RENDER_MODE_LCD_V. + * + * @input: + * library :: handle to target library instance + * + * filter_weights :: a pointer to an array of 5 bytes corresponding + * to the weights of a 5-tap FIR filter. Each + * weight must be positive, and their sum should + * be at least 256 to avoid loss of darkness + * in the rendered glyphs. The sum can be greater + * than 256 to darken the glyphs (el-cheapo gamma) + * + * you can use @FT_LCD_FILTER_NONE here to disable + * this feature, or @FT_LCD_FILTER_DEFAULT to use + * a default filter that should work well on most + * LCD screens. + * + * @return: + * error code. 0 means success + * + * @note: + * this feature is always disabled by default. Clients must make an + * explicit call to this function with a 'filter_weights' value other + * than @FT_LCD_FILTER_NONE in order to enable it. + * + * due to *PATENTS* covering subpixel rendering, this function will + * not do anything except return @FT_Err_Unimplemented_Feature if the + * configuration macro FT_CONFIG_OPTION_SUBPIXEL_RENDERING is not + * defined in your build of the library, which should correspond + * to all default builds of the library + * + * the filter affects glyph bitmaps rendered through + * @FT_Render_Glyph, @FT_Glyph_Get_Bitmap, @FT_Load_Glyph and + * @FT_Load_Char. + * + * It does *not* affect the output of @FT_Outline_Render + * and @FT_Outline_Get_Bitmap. + * + * if this feature is activated, the dimensions of LCD glyph bitmaps + * will be either larger or taller than the dimensions of the corresponding + * outline with regards to the pixel grid. For example, for @FT_RENDER_MODE_LCD, + * the filter adds up to 3 pixels to the left, and up to 3 pixels to the right. + * + * the bitmap offset values are adjusted correctly, so clients shouldn't need + * to modify thei layout / glyph positioning code when enabling the filter. + */ + FT_EXPORT( FT_Error ) + FT_Library_SetLcdFilter( FT_Library library, + const FT_Byte* filter_weights ); + + + /** + * @enum: FT_LCD_FILTER_XXX + * + * @desc: a list of constants correspond to useful lcd filter settings to + * be used when calling @FT_Library_SetLcdFilter + * + * @values: + * FT_LCD_FILTER_NONE :: the value NULL is reserved to indicate that + * LCD color filtering should be disabled. + * + * FT_LCD_FILTER_DEFAULT :: + * this value is reserved to indicate a default FIR filter that + * should work well on most LCD screen. For the really curious, + * it corresponds to the array 0x10, 0x40, 0x70, 0x40, 0x10 + */ +#define FT_LCD_FILTER_NONE ((const FT_Byte*)NULL ) + +#define FT_LCD_FILTER_DEFAULT ((const FT_Byte*)(void*)(ft_ptrdiff_t)1) + +/* */ + +FT_END_HEADER + +#endif /* __FT_LCD_FILTER_H__ */