1 /***************************************************************************/ 2 /* */ 3 /* afmodule.c */ 4 /* */ 5 /* Auto-fitter module implementation (body). */ 6 /* */ 7 /* Copyright 2003-2006, 2009, 2011 by */ 8 /* David Turner, Robert Wilhelm, and Werner Lemberg. */ 9 /* */ 10 /* This file is part of the FreeType project, and may only be used, */ 11 /* modified, and distributed under the terms of the FreeType project */ 12 /* license, LICENSE.TXT. By continuing to use, modify, or distribute */ 13 /* this file you indicate that you have read the license and */ 14 /* understand and accept it fully. */ 15 /* */ 16 /***************************************************************************/ 17 18 19 #include "afmodule.h" 20 #include "afloader.h" 21 #include "afpic.h" 22 23 #ifdef FT_DEBUG_AUTOFIT 24 int _af_debug_disable_horz_hints; 25 int _af_debug_disable_vert_hints; 26 int _af_debug_disable_blue_hints; 27 void* _af_debug_hints; 28 #endif 29 30 #include FT_INTERNAL_OBJECTS_H 31 32 33 typedef struct FT_AutofitterRec_ 34 { 35 FT_ModuleRec root; 36 AF_LoaderRec loader[1]; 37 38 } FT_AutofitterRec, *FT_Autofitter; 39 40 41 FT_CALLBACK_DEF( FT_Error ) 42 af_autofitter_init( FT_Autofitter module ) 43 { 44 return af_loader_init( module->loader, module->root.library->memory ); 45 } 46 47 48 FT_CALLBACK_DEF( void ) 49 af_autofitter_done( FT_Autofitter module ) 50 { 51 af_loader_done( module->loader ); 52 } 53 54 55 FT_CALLBACK_DEF( FT_Error ) 56 af_autofitter_load_glyph( FT_Autofitter module, 57 FT_GlyphSlot slot, 58 FT_Size size, 59 FT_UInt glyph_index, 60 FT_Int32 load_flags ) 61 { 62 FT_UNUSED( size ); 63 64 return af_loader_load_glyph( module->loader, slot->face, 65 glyph_index, load_flags ); 66 } 67 68 69 FT_DEFINE_AUTOHINTER_SERVICE( 70 af_autofitter_service, 71 NULL, 72 NULL, 73 NULL, 74 (FT_AutoHinter_GlyphLoadFunc)af_autofitter_load_glyph ) 75 76 FT_DEFINE_MODULE( 77 autofit_module_class, 78 79 FT_MODULE_HINTER, 80 sizeof ( FT_AutofitterRec ), 81 82 "autofitter", 83 0x10000L, /* version 1.0 of the autofitter */ 84 0x20000L, /* requires FreeType 2.0 or above */ 85 86 (const void*)&AF_AF_AUTOFITTER_SERVICE_GET, 87 88 (FT_Module_Constructor)af_autofitter_init, 89 (FT_Module_Destructor) af_autofitter_done, 90 (FT_Module_Requester) NULL ) 91 92 93 /* END */ 94