/src/compiler/android-ndk/jni/freetype/include/freetype/ftlcdfil.h

http://ftk.googlecode.com/ · C++ Header · 172 lines · 23 code · 19 blank · 130 comment · 0 complexity · cce5953a15d6a91a6426140c931ed12b MD5 · raw file

  1. /***************************************************************************/
  2. /* */
  3. /* ftlcdfil.h */
  4. /* */
  5. /* FreeType API for color filtering of subpixel bitmap glyphs */
  6. /* (specification). */
  7. /* */
  8. /* Copyright 2006, 2007, 2008 by */
  9. /* David Turner, Robert Wilhelm, and Werner Lemberg. */
  10. /* */
  11. /* This file is part of the FreeType project, and may only be used, */
  12. /* modified, and distributed under the terms of the FreeType project */
  13. /* license, LICENSE.TXT. By continuing to use, modify, or distribute */
  14. /* this file you indicate that you have read the license and */
  15. /* understand and accept it fully. */
  16. /* */
  17. /***************************************************************************/
  18. #ifndef __FT_LCD_FILTER_H__
  19. #define __FT_LCD_FILTER_H__
  20. #include <ft2build.h>
  21. #include FT_FREETYPE_H
  22. #ifdef FREETYPE_H
  23. #error "freetype.h of FreeType 1 has been loaded!"
  24. #error "Please fix the directory search order for header files"
  25. #error "so that freetype.h of FreeType 2 is found first."
  26. #endif
  27. FT_BEGIN_HEADER
  28. /***************************************************************************
  29. *
  30. * @section:
  31. * lcd_filtering
  32. *
  33. * @title:
  34. * LCD Filtering
  35. *
  36. * @abstract:
  37. * Reduce color fringes of LCD-optimized bitmaps.
  38. *
  39. * @description:
  40. * The @FT_Library_SetLcdFilter API can be used to specify a low-pass
  41. * filter which is then applied to LCD-optimized bitmaps generated
  42. * through @FT_Render_Glyph. This is useful to reduce color fringes
  43. * which would occur with unfiltered rendering.
  44. *
  45. * Note that no filter is active by default, and that this function is
  46. * *not* implemented in default builds of the library. You need to
  47. * #define FT_CONFIG_OPTION_SUBPIXEL_RENDERING in your `ftoption.h' file
  48. * in order to activate it.
  49. */
  50. /****************************************************************************
  51. *
  52. * @func:
  53. * FT_LcdFilter
  54. *
  55. * @description:
  56. * A list of values to identify various types of LCD filters.
  57. *
  58. * @values:
  59. * FT_LCD_FILTER_NONE ::
  60. * Do not perform filtering. When used with subpixel rendering, this
  61. * results in sometimes severe color fringes.
  62. *
  63. * FT_LCD_FILTER_DEFAULT ::
  64. * The default filter reduces color fringes considerably, at the cost
  65. * of a slight blurriness in the output.
  66. *
  67. * FT_LCD_FILTER_LIGHT ::
  68. * The light filter is a variant that produces less blurriness at the
  69. * cost of slightly more color fringes than the default one. It might
  70. * be better, depending on taste, your monitor, or your personal vision.
  71. *
  72. * FT_LCD_FILTER_LEGACY ::
  73. * This filter corresponds to the original libXft color filter. It
  74. * provides high contrast output but can exhibit really bad color
  75. * fringes if glyphs are not extremely well hinted to the pixel grid.
  76. * In other words, it only works well if the TrueType bytecode
  77. * interpreter is enabled *and* high-quality hinted fonts are used.
  78. *
  79. * This filter is only provided for comparison purposes, and might be
  80. * disabled or stay unsupported in the future.
  81. *
  82. * @since:
  83. * 2.3.0
  84. */
  85. typedef enum FT_LcdFilter_
  86. {
  87. FT_LCD_FILTER_NONE = 0,
  88. FT_LCD_FILTER_DEFAULT = 1,
  89. FT_LCD_FILTER_LIGHT = 2,
  90. FT_LCD_FILTER_LEGACY = 16,
  91. FT_LCD_FILTER_MAX /* do not remove */
  92. } FT_LcdFilter;
  93. /**************************************************************************
  94. *
  95. * @func:
  96. * FT_Library_SetLcdFilter
  97. *
  98. * @description:
  99. * This function is used to apply color filtering to LCD decimated
  100. * bitmaps, like the ones used when calling @FT_Render_Glyph with
  101. * @FT_RENDER_MODE_LCD or @FT_RENDER_MODE_LCD_V.
  102. *
  103. * @input:
  104. * library ::
  105. * A handle to the target library instance.
  106. *
  107. * filter ::
  108. * The filter type.
  109. *
  110. * You can use @FT_LCD_FILTER_NONE here to disable this feature, or
  111. * @FT_LCD_FILTER_DEFAULT to use a default filter that should work
  112. * well on most LCD screens.
  113. *
  114. * @return:
  115. * FreeType error code. 0~means success.
  116. *
  117. * @note:
  118. * This feature is always disabled by default. Clients must make an
  119. * explicit call to this function with a `filter' value other than
  120. * @FT_LCD_FILTER_NONE in order to enable it.
  121. *
  122. * Due to *PATENTS* covering subpixel rendering, this function doesn't
  123. * do anything except returning `FT_Err_Unimplemented_Feature' if the
  124. * configuration macro FT_CONFIG_OPTION_SUBPIXEL_RENDERING is not
  125. * defined in your build of the library, which should correspond to all
  126. * default builds of FreeType.
  127. *
  128. * The filter affects glyph bitmaps rendered through @FT_Render_Glyph,
  129. * @FT_Outline_Get_Bitmap, @FT_Load_Glyph, and @FT_Load_Char.
  130. *
  131. * It does _not_ affect the output of @FT_Outline_Render and
  132. * @FT_Outline_Get_Bitmap.
  133. *
  134. * If this feature is activated, the dimensions of LCD glyph bitmaps are
  135. * either larger or taller than the dimensions of the corresponding
  136. * outline with regards to the pixel grid. For example, for
  137. * @FT_RENDER_MODE_LCD, the filter adds up to 3~pixels to the left, and
  138. * up to 3~pixels to the right.
  139. *
  140. * The bitmap offset values are adjusted correctly, so clients shouldn't
  141. * need to modify their layout and glyph positioning code when enabling
  142. * the filter.
  143. *
  144. * @since:
  145. * 2.3.0
  146. */
  147. FT_EXPORT( FT_Error )
  148. FT_Library_SetLcdFilter( FT_Library library,
  149. FT_LcdFilter filter );
  150. /* */
  151. FT_END_HEADER
  152. #endif /* __FT_LCD_FILTER_H__ */
  153. /* END */