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