ref: acfea4ddd9ba75cf207a922146b5fbef7fddb71b
dir: /src/autohint/ahmodule.c/
/***************************************************************************/ /* */ /* ahmodule.c */ /* */ /* Auto-hinting module implementation (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. */ /* */ /***************************************************************************/ #include <ft2build.h> #include FT_MODULE_H #include "ahhint.h" #ifdef DEBUG_HINTER extern AH_Hinter* ah_debug_hinter = NULL; extern FT_Bool ah_debug_disable_horz = 0; extern FT_Bool ah_debug_disable_vert = 0; #endif typedef struct FT_AutoHinterRec_ { FT_ModuleRec root; AH_Hinter* hinter; } FT_AutoHinterRec; FT_CALLBACK_DEF( FT_Error ) ft_autohinter_init( FT_AutoHinter module ) { FT_Error error; error = ah_hinter_new( module->root.library, &module->hinter ); #ifdef DEBUG_HINTER if ( !error ) ah_debug_hinter = module->hinter; #endif return error; } FT_CALLBACK_DEF( void ) ft_autohinter_done( FT_AutoHinter module ) { ah_hinter_done( module->hinter ); #ifdef DEBUG_HINTER ah_debug_hinter = NULL; #endif } FT_CALLBACK_DEF( FT_Error ) ft_autohinter_load( FT_AutoHinter module, FT_GlyphSlot slot, FT_Size size, FT_UInt glyph_index, FT_ULong load_flags ) { return ah_hinter_load_glyph( module->hinter, slot, size, glyph_index, load_flags ); } FT_CALLBACK_DEF( void ) ft_autohinter_reset( FT_AutoHinter module, FT_Face face ) { FT_UNUSED( module ); if ( face->autohint.data ) ah_hinter_done_face_globals( (AH_Face_Globals*)(face->autohint.data) ); } FT_CALLBACK_DEF( void ) ft_autohinter_get_globals( FT_AutoHinter module, FT_Face face, void** global_hints, long* global_len ) { ah_hinter_get_global_hints( module->hinter, face, global_hints, global_len ); } FT_CALLBACK_DEF( void ) ft_autohinter_done_globals( FT_AutoHinter module, void* global_hints ) { ah_hinter_done_global_hints( module->hinter, global_hints ); } FT_CALLBACK_TABLE_DEF const FT_AutoHinter_Interface autohinter_interface = { ft_autohinter_reset, ft_autohinter_load, ft_autohinter_get_globals, ft_autohinter_done_globals }; FT_CALLBACK_TABLE_DEF const FT_Module_Class autohint_module_class = { ft_module_hinter, sizeof ( FT_AutoHinterRec ), "autohinter", 0x10000L, /* version 1.0 of the autohinter */ 0x20000L, /* requires FreeType 2.0 or above */ (const void*)&autohinter_interface, (FT_Module_Constructor)ft_autohinter_init, (FT_Module_Destructor) ft_autohinter_done, (FT_Module_Requester) 0 }; /* END */