ref: 826935a381e0c3d36be6ac301b3c94c52d46e556
parent: 3cc7d630bdccc1f2ae4bbf97ba7fddcddeb470c5
author: David Turner <[email protected]>
date: Wed Sep 27 05:12:43 EDT 2006
another missing file
--- /dev/null
+++ b/include/freetype/ftlcdfil.h
@@ -1,0 +1,89 @@
+#ifndef __FT_LCD_FILTER_H__
+#define __FT_LCD_FILTER_H__
+
+#include <ft2build.h>
+#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__ */