#ifndef __AFTYPES_H__
#define __AFTYPES_H__

#include <ft2build.h>
#include FT_FREETYPE_H
#include FT_OUTLINE_H
#include FT_INTERNAL_OBJECTS_H
#include FT_INTERNAL_DEBUG_H

FT_BEGIN_HEADER

 /**************************************************************************/
 /**************************************************************************/
 /*****                                                                *****/
 /*****                D E B U G G I N G                               *****/
 /*****                                                                *****/
 /**************************************************************************/
 /**************************************************************************/

#define AF_DEBUG

#ifdef AF_DEBUG

#  include <stdio.h>
#  define AF_LOG( x )  printf x

#else

#  define AF_LOG( x )  do ; while ( 0 ) /* nothing */

#endif /* AF_DEBUG */

 /**************************************************************************/
 /**************************************************************************/
 /*****                                                                *****/
 /*****                U T I L I T Y                                   *****/
 /*****                                                                *****/
 /**************************************************************************/
 /**************************************************************************/

  typedef struct AF_WidthRec_
  {
    FT_Pos  org;  /* original position/width in font units              */
    FT_Pos  cur;  /* current/scaled position/width in device sub-pixels */
    FT_Pos  fit;  /* current/fitted position/width in device sub-pixels */

  } AF_WidthRec, *AF_Width;


  FT_LOCAL( void )
  af_sort_pos( FT_UInt   count,
               FT_Pos*   table );

  FT_LOCAL( void )
  af_sort_widths( FT_UInt   count,
                  AF_Width  widths );


 /**************************************************************************/
 /**************************************************************************/
 /*****                                                                *****/
 /*****                A N G L E   T Y P E S                           *****/
 /*****                                                                *****/
 /**************************************************************************/
 /**************************************************************************/

 /*
  *  Angle type. The auto-fitter doesn't need a very high angular accuracy,
  *  and this allows us to speed up some computations considerably with a
  *  light Cordic algorithm (see afangles.c)
  *
  */

  typedef FT_Int    AF_Angle;

#define  AF_ANGLE_PI     128
#define  AF_ANGLE_2PI    (AF_ANGLE_PI*2)
#define  AF_ANGLE_PI2    (AF_ANGLE_PI/2)
#define  AF_ANGLE_PI4    (AF_ANGLE_PI/4)

 /*
  *  compute the angle of a given 2-D vector
  *
  */
  FT_LOCAL( AF_Angle )
  af_angle_atan( FT_Pos  dx,
                 FT_Pos  dy );


 /*
  *  computes "angle2 - angle1", the result is always within
  *  the range [ -AF_ANGLE_PI .. AF_ANGLE_PI-1 ]
  *
  */
  FT_LOCAL( AF_Angle )
  af_angle_diff( AF_Angle  angle1,
                 AF_Angle  angle2 );


 /**************************************************************************/
 /**************************************************************************/
 /*****                                                                *****/
 /*****                O U T L I N E S                                 *****/
 /*****                                                                *****/
 /**************************************************************************/
 /**************************************************************************/

 /* opaque handle to glyph-specific hints. see "afhints.h" for more
  * details
  */
  typedef struct AF_GlyphHintsRec_*     AF_GlyphHints;

 /* this structure is used to model an input glyph outline to
  * the auto-hinter. The latter will set the "hints" field
  * depending on the glyph's script
  */
  typedef struct AF_OutlineRec_
  {
    FT_Face          face;
    FT_Outline       outline;
    FT_UInt          outline_resolution;

    FT_Int           advance;
    FT_UInt          metrics_resolution;

    AF_GlyphHints    hints;

  } AF_OutlineRec;


 /**************************************************************************/
 /**************************************************************************/
 /*****                                                                *****/
 /*****                S C A L E R S                                   *****/
 /*****                                                                *****/
 /**************************************************************************/
 /**************************************************************************/

 /*
  *  A scaler models the target pixel device that will receive the
  *  auto-hinted glyph image
  *
  */

  typedef enum
  {
    AF_SCALER_FLAG_NO_HORIZONTAL = 1,  /* disable horizontal hinting */
    AF_SCALER_FLAG_NO_VERTICAL   = 2,  /* disable vertical hinting   */
    AF_SCALER_FLAG_NO_ADVANCE    = 4   /* disable advance hinting    */

  } AF_ScalerFlags;


  typedef struct AF_ScalerRec_
  {
    FT_Face         face;         /* source font face                        */
    FT_Fixed        x_scale;      /* from font units to 1/64th device pixels */
    FT_Fixed        y_scale;      /* from font units to 1/64th device pixels */
    FT_Pos          x_delta;      /* in 1/64th device pixels                 */
    FT_Pos          y_delta;      /* in 1/64th device pixels                 */
    FT_Render_Mode  render_mode;  /* monochrome, anti-aliased, LCD, etc..    */
    FT_UInt32       flags;        /* additionnal control flags, see above    */

  } AF_ScalerRec, *AF_Scaler;



 /**************************************************************************/
 /**************************************************************************/
 /*****                                                                *****/
 /*****                S C R I P T S                                   *****/
 /*****                                                                *****/
 /**************************************************************************/
 /**************************************************************************/

 /*
  *  the list of know scripts. Each different script correspond to the
  *  following information:
  *
  *   - a set of Unicode ranges to test weither the face supports the
  *     script
  *
  *   - a specific global analyzer that will compute global metrics
  *     specific to the script.
  *
  *   - a specific glyph analyzer that will compute segments and
  *     edges for each glyph covered by the script
  *
  *   - a specific grid-fitting algorithm that will distort the
  *     scaled glyph outline according to the results of the glyph
  *     analyzer
  *
  *  note that a given analyzer and/or grid-fitting algorithm can be
  *  used by more than one script
  */
  typedef enum
  {
    AF_SCRIPT_NONE  = 0,
    AF_SCRIPT_LATIN = 1,
    /* add new scripts here. don't forget to update the list in "afglobal.c" */

    AF_SCRIPT_MAX   /* do not remove */

  } AF_Script;



  typedef struct AF_ScriptClassRec_ const*  AF_ScriptClass;

  typedef struct AF_ScriptMetricsRec_
  {
    AF_ScriptClass    clazz;
    AF_ScalerRec      scaler;

  } AF_ScriptMetricsRec, *AF_ScriptMetrics;


 /* this function parses a FT_Face to compute global metrics for
  * a specific script
  */
  typedef FT_Error  (*AF_Script_InitMetricsFunc)( AF_ScriptMetrics   metrics,
                                                  FT_Face            face );

  typedef void      (*AF_Script_ScaleMetricsFunc)( AF_ScriptMetrics  metrics,
                                                   AF_Scaler         scaler );

  typedef void      (*AF_Script_DoneMetricsFunc)( AF_ScriptMetrics   metrics );


  typedef FT_Error  (*AF_Script_InitHintsFunc)( AF_GlyphHints     hints,
                                                FT_Outline*       outline,
                                                AF_ScriptMetrics  metrics );

  typedef void      (*AF_Script_ApplyHintsFunc)( AF_GlyphHints     hints,
                                                 FT_Outline*       outline,
                                                 AF_ScriptMetrics  metrics );


  typedef struct AF_Script_UniRangeRec_
  {
    FT_UInt32    first;
    FT_UInt32    last;

  } AF_Script_UniRangeRec;

  typedef const AF_Script_UniRangeRec *  AF_Script_UniRange;

  typedef struct AF_ScriptClassRec_
  {
    AF_Script                   script;
    AF_Script_UniRange          script_uni_ranges;  /* last must be { 0, 0 } */

    FT_UInt                     script_metrics_size;
    AF_Script_InitMetricsFunc   script_metrics_init;
    AF_Script_ScaleMetricsFunc  script_metrics_scale;
    AF_Script_DoneMetricsFunc   script_metrics_done;

    AF_Script_InitHintsFunc     script_hints_init;
    AF_Script_ApplyHintsFunc    script_hints_apply;

  } AF_ScriptClassRec;


/* */

FT_END_HEADER

#endif /* __AFTYPES_H__ */
