/***************************************************************************/
/*                                                                         */
/*  ahoptim.h                                                              */
/*                                                                         */
/*    FreeType auto hinting outline optimization (declaration).            */
/*                                                                         */
/*  Copyright 2000-2001 Catharon Productions Inc.                          */
/*  Author: David Turner                                                   */
/*                                                                         */
/*  This file is part of the Catharon Typography Project and shall only    */
/*  be used, modified, and distributed under the terms of the Catharon     */
/*  Open Source License that should come with this file under the name     */
/*  `CatharonLicense.txt'.  By continuing to use, modify, or distribute    */
/*  this file you indicate that you have read the license and              */
/*  understand and accept it fully.                                        */
/*                                                                         */
/*  Note that this license is compatible with the FreeType license.        */
/*                                                                         */
/***************************************************************************/


#ifndef __AHOPTIM_H__
#define __AHOPTIM_H__


#include <ft2build.h>
#include "ahtypes.h"


FT_BEGIN_HEADER


  /* the maximal number of stem configurations to record */
  /* during optimization                                 */
#define AH_MAX_CONFIGS  8


  typedef struct  AH_Stem_
  {
    FT_Pos   pos;       /* current position        */
    FT_Pos   velocity;  /* current velocity        */
    FT_Pos   force;     /* sum of current forces   */
    FT_Pos   width;     /* normalized width        */

    FT_Pos   min_pos;   /* minimum grid position */
    FT_Pos   max_pos;   /* maximum grid position */

    AH_Edge  edge1;     /* left/bottom edge */
    AH_Edge  edge2;     /* right/top edge   */

    FT_Pos   opos;      /* original position */
    FT_Pos   owidth;    /* original width    */

    FT_Pos   min_coord; /* minimum coordinate */
    FT_Pos   max_coord; /* maximum coordinate */

  } AH_Stem;


  /* A spring between two stems */
  typedef struct  AH_Spring_
  {
    AH_Stem*  stem1;
    AH_Stem*  stem2;
    FT_Pos    owidth;   /* original width  */
    FT_Pos    tension;  /* current tension */

  } AH_Spring;


  /* A configuration records the position of each stem at a given time  */
  /* as well as the associated distortion                               */
  typedef struct AH_Configuration_
  {
    FT_Pos*  positions;
    FT_Long  distortion;

  } AH_Configuration;


  typedef struct  AH_Optimizer_
  {
    FT_Memory         memory;
    AH_Outline        outline;

    FT_Int            num_hstems;
    AH_Stem*          horz_stems;

    FT_Int            num_vstems;
    AH_Stem*          vert_stems;

    FT_Int            num_hsprings;
    FT_Int            num_vsprings;
    AH_Spring*        horz_springs;
    AH_Spring*        vert_springs;

    FT_Int            num_configs;
    AH_Configuration  configs[AH_MAX_CONFIGS];
    FT_Pos*           positions;

    /* during each pass, use these instead */
    FT_Int            num_stems;
    AH_Stem*          stems;

    FT_Int            num_springs;
    AH_Spring*        springs;
    FT_Bool           vertical;

    FT_Fixed          tension_scale;
    FT_Pos            tension_threshold;

  } AH_Optimizer;


  /* loads the outline into the optimizer */
  int
  AH_Optimizer_Init( AH_Optimizer*  optimizer,
                     AH_Outline     outline,
                     FT_Memory      memory );


  /* compute optimal outline */
  void
  AH_Optimizer_Compute( AH_Optimizer*  optimizer );


  /* release the optimization data */
  void
  AH_Optimizer_Done( AH_Optimizer*  optimizer );


FT_END_HEADER

#endif /* __AHOPTIM_H__ */


/* END */
