/***************************************************************************/
/*                                                                         */
/*  ttsubpix.h                                                             */
/*                                                                         */
/*    TrueType Subpixel Hinting.                                           */
/*                                                                         */
/*  Copyright 2010-2015 by                                                 */
/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
/*                                                                         */
/*  This file is part of the FreeType project, and may only be used,       */
/*  modified, and distributed under the terms of the FreeType project      */
/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
/*  this file you indicate that you have read the license and              */
/*  understand and accept it fully.                                        */
/*                                                                         */
/***************************************************************************/


#ifndef __TTSUBPIX_H__
#define __TTSUBPIX_H__

#include <ft2build.h>
#include "ttobjs.h"
#include "ttinterp.h"


FT_BEGIN_HEADER


#ifdef TT_CONFIG_OPTION_SUBPIXEL_HINTING

  /*************************************************************************/
  /*                                                                       */
  /* ID flags to identify special functions at FDEF and runtime.           */
  /*                                                                       */
  /*                                                                       */
#define SPH_FDEF_INLINE_DELTA_1       0x0000001
#define SPH_FDEF_INLINE_DELTA_2       0x0000002
#define SPH_FDEF_DIAGONAL_STROKE      0x0000004
#define SPH_FDEF_VACUFORM_ROUND_1     0x0000008
#define SPH_FDEF_TTFAUTOHINT_1        0x0000010
#define SPH_FDEF_SPACING_1            0x0000020
#define SPH_FDEF_SPACING_2            0x0000040
#define SPH_FDEF_TYPEMAN_STROKES      0x0000080
#define SPH_FDEF_TYPEMAN_DIAGENDCTRL  0x0000100


  /*************************************************************************/
  /*                                                                       */
  /* Tweak flags that are set for each glyph by the below rules.           */
  /*                                                                       */
  /*                                                                       */
#define SPH_TWEAK_ALLOW_X_DMOVE                   0x0000001UL
#define SPH_TWEAK_ALWAYS_DO_DELTAP                0x0000002UL
#define SPH_TWEAK_ALWAYS_SKIP_DELTAP              0x0000004UL
#define SPH_TWEAK_COURIER_NEW_2_HACK              0x0000008UL
#define SPH_TWEAK_DEEMBOLDEN                      0x0000010UL
#define SPH_TWEAK_DO_SHPIX                        0x0000020UL
#define SPH_TWEAK_EMBOLDEN                        0x0000040UL
#define SPH_TWEAK_MIAP_HACK                       0x0000080UL
#define SPH_TWEAK_NORMAL_ROUND                    0x0000100UL
#define SPH_TWEAK_NO_ALIGNRP_AFTER_IUP            0x0000200UL
#define SPH_TWEAK_NO_CALL_AFTER_IUP               0x0000400UL
#define SPH_TWEAK_NO_DELTAP_AFTER_IUP             0x0000800UL
#define SPH_TWEAK_PIXEL_HINTING                   0x0001000UL
#define SPH_TWEAK_RASTERIZER_35                   0x0002000UL
#define SPH_TWEAK_ROUND_NONPIXEL_Y_MOVES          0x0004000UL
#define SPH_TWEAK_SKIP_IUP                        0x0008000UL
#define SPH_TWEAK_SKIP_NONPIXEL_Y_MOVES           0x0010000UL
#define SPH_TWEAK_SKIP_OFFPIXEL_Y_MOVES           0x0020000UL
#define SPH_TWEAK_TIMES_NEW_ROMAN_HACK            0x0040000UL
#define SPH_TWEAK_SKIP_NONPIXEL_Y_MOVES_DELTAP    0x0080000UL


  FT_LOCAL( FT_Bool )
  sph_test_tweak( TT_Face               face,
                  const FT_String*      family,
                  FT_UInt               ppem,
                  const FT_String*      style,
                  FT_UInt               glyph_index,
                  const SPH_TweakRule*  rule,
                  FT_UInt               num_rules );

  FT_LOCAL( FT_UInt )
  sph_test_tweak_x_scaling( TT_Face           face,
                            const FT_String*  family,
                            FT_UInt           ppem,
                            const FT_String*  style,
                            FT_UInt           glyph_index );

  FT_LOCAL( void )
  sph_set_tweaks( TT_Loader  loader,
                  FT_UInt    glyph_index );


  /* These macros are defined absent a method for setting them */
#define SPH_OPTION_BITMAP_WIDTHS           FALSE
#define SPH_OPTION_SET_SUBPIXEL            TRUE
#define SPH_OPTION_SET_GRAYSCALE           FALSE
#define SPH_OPTION_SET_COMPATIBLE_WIDTHS   FALSE
#define SPH_OPTION_SET_RASTERIZER_VERSION  38

#endif /* TT_CONFIG_OPTION_SUBPIXEL_HINTING */


FT_END_HEADER

#endif /* __TTSUBPIX_H__ */

/* END */
