• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 )
af_autofitter_init(FT_Autofitter module)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 )
af_autofitter_done(FT_Autofitter module)49   af_autofitter_done( FT_Autofitter  module )
50   {
51     af_loader_done( module->loader );
52   }
53 
54 
55   FT_CALLBACK_DEF( FT_Error )
af_autofitter_load_glyph(FT_Autofitter module,FT_GlyphSlot slot,FT_Size size,FT_UInt glyph_index,FT_Int32 load_flags)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