/***************************************************************************/ /* */ /* ahmodule.c */ /* */ /* Auto-hinting module implementation (declaration). */ /* */ /* Copyright 2000-2001, 2002 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 #include FT_MODULE_H #include "ahhint.h" #ifdef DEBUG_HINTER AH_Hinter ah_debug_hinter = NULL; FT_Bool ah_debug_disable_horz = 0; 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_glyph( FT_AutoHinter module, FT_GlyphSlot slot, FT_Size size, FT_UInt glyph_index, FT_Int32 load_flags ) { return ah_hinter_load_glyph( module->hinter, slot, size, glyph_index, load_flags ); } FT_CALLBACK_DEF( void ) ft_autohinter_reset_globals( 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_ServiceRec ft_autohinter_service = { ft_autohinter_reset_globals, ft_autohinter_get_globals, ft_autohinter_done_globals, ft_autohinter_load_glyph }; 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*) &ft_autohinter_service, (FT_Module_Constructor)ft_autohinter_init, (FT_Module_Destructor) ft_autohinter_done, (FT_Module_Requester) 0 }; /* END */