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