afmodule.c revision 049d6fea481044fcc000e7782e5bc7046fc70844
1049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/***************************************************************************/ 2049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* */ 3049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* afmodule.c */ 4049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* */ 5049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* Auto-fitter module implementation (body). */ 6049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* */ 7049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* Copyright 2003, 2004, 2005, 2006 by */ 8049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* David Turner, Robert Wilhelm, and Werner Lemberg. */ 9049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* */ 10049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* This file is part of the FreeType project, and may only be used, */ 11049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* modified, and distributed under the terms of the FreeType project */ 12049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ 13049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* this file you indicate that you have read the license and */ 14049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* understand and accept it fully. */ 15049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* */ 16049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/***************************************************************************/ 17049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 18049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 19049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include "afmodule.h" 20049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include "afloader.h" 21049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 22049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifdef AF_DEBUG 23049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project int _af_debug; 24049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project int _af_debug_disable_horz_hints; 25049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project int _af_debug_disable_vert_hints; 26049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project int _af_debug_disable_blue_hints; 27049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project void* _af_debug_hints; 28049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 29049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 30049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include FT_INTERNAL_OBJECTS_H 31049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 32049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 33049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct FT_AutofitterRec_ 34049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 35049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ModuleRec root; 36049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project AF_LoaderRec loader[1]; 37049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 38049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } FT_AutofitterRec, *FT_Autofitter; 39049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 40049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 41049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_CALLBACK_DEF( FT_Error ) 42049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project af_autofitter_init( FT_Autofitter module ) 43049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 44049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project return af_loader_init( module->loader, module->root.library->memory ); 45049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } 46049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 47049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 48049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_CALLBACK_DEF( void ) 49049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project af_autofitter_done( FT_Autofitter module ) 50049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 51049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project af_loader_done( module->loader ); 52049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } 53049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 54049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 55049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_CALLBACK_DEF( FT_Error ) 56049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project af_autofitter_load_glyph( FT_Autofitter module, 57049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_GlyphSlot slot, 58049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Size size, 59049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UInt glyph_index, 60049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Int32 load_flags ) 61049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 62049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UNUSED( size ); 63049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 64049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project return af_loader_load_glyph( module->loader, slot->face, 65049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project glyph_index, load_flags ); 66049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } 67049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 68049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 69049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_CALLBACK_TABLE_DEF 70049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project const FT_AutoHinter_ServiceRec af_autofitter_service = 71049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 72049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project NULL, 73049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project NULL, 74049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project NULL, 75049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (FT_AutoHinter_GlyphLoadFunc)af_autofitter_load_glyph 76049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project }; 77049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 78049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 79049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_CALLBACK_TABLE_DEF 80049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project const FT_Module_Class autofit_module_class = 81049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 82049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_MODULE_HINTER, 83049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project sizeof ( FT_AutofitterRec ), 84049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 85049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project "autofitter", 86049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 0x10000L, /* version 1.0 of the autofitter */ 87049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 0x20000L, /* requires FreeType 2.0 or above */ 88049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 89049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (const void*)&af_autofitter_service, 90049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 91049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (FT_Module_Constructor)af_autofitter_init, 92049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (FT_Module_Destructor) af_autofitter_done, 93049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (FT_Module_Requester) NULL 94049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project }; 95049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 96049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 97049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* END */ 98