summaryrefslogtreecommitdiff
path: root/src/autohint/ahmodule.c
blob: d16b260b4e03bff01982f64cac7cbab19f4574e1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
/***************************************************************************/
/*                                                                         */
/*  ahmodule.c                                                             */
/*                                                                         */
/*    Auto-hinting module implementation (declaration).                    */
/*                                                                         */
/*  Copyright 2000 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"


  typedef struct  FT_AutoHinterRec_
  {
    FT_ModuleRec  root;
    AH_Hinter*    hinter;

  } FT_AutoHinterRec;


  FT_CALLBACK_DEF( FT_Error )
  ft_autohinter_init( FT_AutoHinter  module )
  {
    return ah_hinter_new( module->root.library, &module->hinter );
  }


  FT_CALLBACK_DEF( void )
  ft_autohinter_done( FT_AutoHinter  module )
  {
    ah_hinter_done( module->hinter );
  }


  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 )
  {
    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 */