1f13516c8321b386227414be01e707563e852fc0dWerner Lemberg/***************************************************************************/
2f13516c8321b386227414be01e707563e852fc0dWerner Lemberg/*                                                                         */
3f13516c8321b386227414be01e707563e852fc0dWerner Lemberg/*  afloader.h                                                             */
4f13516c8321b386227414be01e707563e852fc0dWerner Lemberg/*                                                                         */
5f13516c8321b386227414be01e707563e852fc0dWerner Lemberg/*    Auto-fitter glyph loading routines (specification).                  */
6f13516c8321b386227414be01e707563e852fc0dWerner Lemberg/*                                                                         */
70a0c22569deab933df21127e75db5c81f724f292Werner Lemberg/*  Copyright 2003-2018 by                                                 */
8f13516c8321b386227414be01e707563e852fc0dWerner Lemberg/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
9f13516c8321b386227414be01e707563e852fc0dWerner Lemberg/*                                                                         */
10f13516c8321b386227414be01e707563e852fc0dWerner Lemberg/*  This file is part of the FreeType project, and may only be used,       */
11f13516c8321b386227414be01e707563e852fc0dWerner Lemberg/*  modified, and distributed under the terms of the FreeType project      */
12f13516c8321b386227414be01e707563e852fc0dWerner Lemberg/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
13f13516c8321b386227414be01e707563e852fc0dWerner Lemberg/*  this file you indicate that you have read the license and              */
14f13516c8321b386227414be01e707563e852fc0dWerner Lemberg/*  understand and accept it fully.                                        */
15f13516c8321b386227414be01e707563e852fc0dWerner Lemberg/*                                                                         */
16f13516c8321b386227414be01e707563e852fc0dWerner Lemberg/***************************************************************************/
17f13516c8321b386227414be01e707563e852fc0dWerner Lemberg
18f13516c8321b386227414be01e707563e852fc0dWerner Lemberg
1937412ff9f42212bcf4dd29d9762f3c35b5735768Werner Lemberg#ifndef AFLOADER_H_
2037412ff9f42212bcf4dd29d9762f3c35b5735768Werner Lemberg#define AFLOADER_H_
216b3d00e1a0bc5033aeeab51912eda0aff6ed6e8bWerner Lemberg
226b3d00e1a0bc5033aeeab51912eda0aff6ed6e8bWerner Lemberg#include "afhints.h"
2389bc8d4de7bf93336e182bd42507851f5b46f66fBehdad Esfahbod#include "afmodule.h"
246b3d00e1a0bc5033aeeab51912eda0aff6ed6e8bWerner Lemberg#include "afglobal.h"
256b3d00e1a0bc5033aeeab51912eda0aff6ed6e8bWerner Lemberg
26f13516c8321b386227414be01e707563e852fc0dWerner Lemberg
276b3d00e1a0bc5033aeeab51912eda0aff6ed6e8bWerner LembergFT_BEGIN_HEADER
286b3d00e1a0bc5033aeeab51912eda0aff6ed6e8bWerner Lemberg
2944481daf4335de767872b3e64bcc231e6ee567bcWerner Lemberg  /*
3095dae1c47a441b815d3a70c051cdfd9d8ad747d7Werner Lemberg   *  The autofitter module's (global) data structure to communicate with
3195dae1c47a441b815d3a70c051cdfd9d8ad747d7Werner Lemberg   *  actual fonts.  If necessary, `local' data like the current face, the
3295dae1c47a441b815d3a70c051cdfd9d8ad747d7Werner Lemberg   *  current face's auto-hint data, or the current glyph's parameters
3395dae1c47a441b815d3a70c051cdfd9d8ad747d7Werner Lemberg   *  relevant to auto-hinting are `swapped in'.  Cf. functions like
3495dae1c47a441b815d3a70c051cdfd9d8ad747d7Werner Lemberg   *  `af_loader_reset' and `af_loader_load_g'.
3544481daf4335de767872b3e64bcc231e6ee567bcWerner Lemberg   */
3644481daf4335de767872b3e64bcc231e6ee567bcWerner Lemberg
3744481daf4335de767872b3e64bcc231e6ee567bcWerner Lemberg  typedef struct  AF_LoaderRec_
386b3d00e1a0bc5033aeeab51912eda0aff6ed6e8bWerner Lemberg  {
3944481daf4335de767872b3e64bcc231e6ee567bcWerner Lemberg    /* current face data */
4044481daf4335de767872b3e64bcc231e6ee567bcWerner Lemberg    FT_Face           face;
4144481daf4335de767872b3e64bcc231e6ee567bcWerner Lemberg    AF_FaceGlobals    globals;
4244481daf4335de767872b3e64bcc231e6ee567bcWerner Lemberg
4344481daf4335de767872b3e64bcc231e6ee567bcWerner Lemberg    /* current glyph data */
44c27336567bf9ec18734506f68fc03e328c479bc9Behdad Esfahbod    AF_GlyphHints     hints;
453f91cb338b860307b4db874e703bbdf96a8750c6Werner Lemberg    AF_StyleMetrics   metrics;
466b3d00e1a0bc5033aeeab51912eda0aff6ed6e8bWerner Lemberg    FT_Bool           transformed;
476b3d00e1a0bc5033aeeab51912eda0aff6ed6e8bWerner Lemberg    FT_Matrix         trans_matrix;
486b3d00e1a0bc5033aeeab51912eda0aff6ed6e8bWerner Lemberg    FT_Vector         trans_delta;
496b3d00e1a0bc5033aeeab51912eda0aff6ed6e8bWerner Lemberg    FT_Vector         pp1;
506b3d00e1a0bc5033aeeab51912eda0aff6ed6e8bWerner Lemberg    FT_Vector         pp2;
518bb07e6386ef47f9f9d2bd28a36dda8784530727Werner Lemberg    /* we don't handle vertical phantom points */
526b3d00e1a0bc5033aeeab51912eda0aff6ed6e8bWerner Lemberg
536b3d00e1a0bc5033aeeab51912eda0aff6ed6e8bWerner Lemberg  } AF_LoaderRec, *AF_Loader;
546b3d00e1a0bc5033aeeab51912eda0aff6ed6e8bWerner Lemberg
556b3d00e1a0bc5033aeeab51912eda0aff6ed6e8bWerner Lemberg
56a4117fbda7399e201d4e438d301ab588d28dcea7Behdad Esfahbod  FT_LOCAL( void )
57c27336567bf9ec18734506f68fc03e328c479bc9Behdad Esfahbod  af_loader_init( AF_Loader      loader,
58c27336567bf9ec18734506f68fc03e328c479bc9Behdad Esfahbod                  AF_GlyphHints  hints );
596b3d00e1a0bc5033aeeab51912eda0aff6ed6e8bWerner Lemberg
606b3d00e1a0bc5033aeeab51912eda0aff6ed6e8bWerner Lemberg
616b3d00e1a0bc5033aeeab51912eda0aff6ed6e8bWerner Lemberg  FT_LOCAL( FT_Error )
6289bc8d4de7bf93336e182bd42507851f5b46f66fBehdad Esfahbod  af_loader_reset( AF_Loader  loader,
6389bc8d4de7bf93336e182bd42507851f5b46f66fBehdad Esfahbod                   AF_Module  module,
646b3d00e1a0bc5033aeeab51912eda0aff6ed6e8bWerner Lemberg                   FT_Face    face );
656b3d00e1a0bc5033aeeab51912eda0aff6ed6e8bWerner Lemberg
666b3d00e1a0bc5033aeeab51912eda0aff6ed6e8bWerner Lemberg
676b3d00e1a0bc5033aeeab51912eda0aff6ed6e8bWerner Lemberg  FT_LOCAL( void )
6889bc8d4de7bf93336e182bd42507851f5b46f66fBehdad Esfahbod  af_loader_done( AF_Loader  loader );
696b3d00e1a0bc5033aeeab51912eda0aff6ed6e8bWerner Lemberg
706b3d00e1a0bc5033aeeab51912eda0aff6ed6e8bWerner Lemberg
716b3d00e1a0bc5033aeeab51912eda0aff6ed6e8bWerner Lemberg  FT_LOCAL( FT_Error )
7289bc8d4de7bf93336e182bd42507851f5b46f66fBehdad Esfahbod  af_loader_load_glyph( AF_Loader  loader,
7389bc8d4de7bf93336e182bd42507851f5b46f66fBehdad Esfahbod                        AF_Module  module,
746b3d00e1a0bc5033aeeab51912eda0aff6ed6e8bWerner Lemberg                        FT_Face    face,
756b3d00e1a0bc5033aeeab51912eda0aff6ed6e8bWerner Lemberg                        FT_UInt    gindex,
76e343e87d4f2914cf1a9f55c07d79530c4c85e322Werner Lemberg                        FT_Int32   load_flags );
776b3d00e1a0bc5033aeeab51912eda0aff6ed6e8bWerner Lemberg
78bf2ba9e3d43ae4dacbdd4e1ab5648cbbb81cb885Nikolaus Waxweiler  FT_LOCAL_DEF( FT_Int32 )
79bf2ba9e3d43ae4dacbdd4e1ab5648cbbb81cb885Nikolaus Waxweiler  af_loader_compute_darkening( AF_Loader  loader,
80bf2ba9e3d43ae4dacbdd4e1ab5648cbbb81cb885Nikolaus Waxweiler                               FT_Face    face,
81bf2ba9e3d43ae4dacbdd4e1ab5648cbbb81cb885Nikolaus Waxweiler                               FT_Pos     standard_width );
82bf2ba9e3d43ae4dacbdd4e1ab5648cbbb81cb885Nikolaus Waxweiler
836b3d00e1a0bc5033aeeab51912eda0aff6ed6e8bWerner Lemberg/* */
846b3d00e1a0bc5033aeeab51912eda0aff6ed6e8bWerner Lemberg
85f13516c8321b386227414be01e707563e852fc0dWerner Lemberg
866b3d00e1a0bc5033aeeab51912eda0aff6ed6e8bWerner LembergFT_END_HEADER
876b3d00e1a0bc5033aeeab51912eda0aff6ed6e8bWerner Lemberg
8837412ff9f42212bcf4dd29d9762f3c35b5735768Werner Lemberg#endif /* AFLOADER_H_ */
89f13516c8321b386227414be01e707563e852fc0dWerner Lemberg
90f13516c8321b386227414be01e707563e852fc0dWerner Lemberg
91f13516c8321b386227414be01e707563e852fc0dWerner Lemberg/* END */
92