1ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/***************************************************************************/
2ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*                                                                         */
3ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*  ftmodapi.h                                                             */
4ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*                                                                         */
5ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*    FreeType modules public interface (specification).                   */
6ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*                                                                         */
7ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*  Copyright 1996-2003, 2006, 2008-2010, 2012, 2013 by                    */
8ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
9ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*                                                                         */
10ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*  This file is part of the FreeType project, and may only be used,       */
11ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*  modified, and distributed under the terms of the FreeType project      */
12ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
13ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*  this file you indicate that you have read the license and              */
14ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*  understand and accept it fully.                                        */
15ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*                                                                         */
16ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/***************************************************************************/
17ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
18ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
19ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifndef __FTMODAPI_H__
20ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define __FTMODAPI_H__
21ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
22ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
23e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#include <ft2build.h>
24e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#include FT_FREETYPE_H
25ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
26ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifdef FREETYPE_H
27ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#error "freetype.h of FreeType 1 has been loaded!"
28ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#error "Please fix the directory search order for header files"
29ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#error "so that freetype.h of FreeType 2 is found first."
30ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif
31ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
32ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
33ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFT_BEGIN_HEADER
34ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
35ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
36ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*************************************************************************/
37ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
38ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Section>                                                             */
39ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    module_management                                                  */
40ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
41ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Title>                                                               */
42ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    Module Management                                                  */
43ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
44ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Abstract>                                                            */
45ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    How to add, upgrade, remove, and control modules from FreeType.    */
46ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
47ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Description>                                                         */
48ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    The definitions below are used to manage modules within FreeType.  */
49ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    Modules can be added, upgraded, and removed at runtime.            */
50ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    Additionally, some module properties can be controlled also.       */
51ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
52ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    Here is a list of possible values of the `module_name' field in    */
53ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    the @FT_Module_Class structure.                                    */
54ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
55ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    {                                                                  */
56ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*      autofitter                                                       */
57ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*      bdf                                                              */
58ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*      cff                                                              */
59ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*      gxvalid                                                          */
60ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*      otvalid                                                          */
61ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*      pcf                                                              */
62ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*      pfr                                                              */
63ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*      psaux                                                            */
64ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*      pshinter                                                         */
65ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*      psnames                                                          */
66ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*      raster1, raster5                                                 */
67ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*      sfnt                                                             */
68ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*      smooth, smooth-lcd, smooth-lcdv                                  */
69ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*      truetype                                                         */
70ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*      type1                                                            */
71ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*      type42                                                           */
72ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*      t1cid                                                            */
73ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*      winfonts                                                         */
74ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    }                                                                  */
75ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
76ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    Note that the FreeType Cache sub-system is not a FreeType module.  */
77ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
78e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /* <Order>                                                               */
79e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    FT_Module                                                          */
80e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    FT_Module_Constructor                                              */
81e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    FT_Module_Destructor                                               */
82e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    FT_Module_Requester                                                */
83e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    FT_Module_Class                                                    */
84e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*                                                                       */
85e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    FT_Add_Module                                                      */
86e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    FT_Get_Module                                                      */
87e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    FT_Remove_Module                                                   */
88e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    FT_Add_Default_Modules                                             */
89e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*                                                                       */
90e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    FT_Property_Set                                                    */
91e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    FT_Property_Get                                                    */
92e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*                                                                       */
93e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    FT_New_Library                                                     */
94e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    FT_Done_Library                                                    */
95e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    FT_Reference_Library                                               */
96e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*                                                                       */
97e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    FT_Renderer                                                        */
98e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    FT_Renderer_Class                                                  */
99e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*                                                                       */
100e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    FT_Get_Renderer                                                    */
101e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    FT_Set_Renderer                                                    */
102e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*                                                                       */
103e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    FT_Set_Debug_Hook                                                  */
104e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*                                                                       */
105ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*************************************************************************/
106ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
107ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
108ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* module bit flags */
109ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_MODULE_FONT_DRIVER         1  /* this module is a font driver  */
110ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_MODULE_RENDERER            2  /* this module is a renderer     */
111ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_MODULE_HINTER              4  /* this module is a glyph hinter */
112ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_MODULE_STYLER              8  /* this module is a styler       */
113ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
114ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_MODULE_DRIVER_SCALABLE     0x100   /* the driver supports      */
115ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                              /* scalable fonts           */
116ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_MODULE_DRIVER_NO_OUTLINES  0x200   /* the driver does not      */
117ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                              /* support vector outlines  */
118ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_MODULE_DRIVER_HAS_HINTER   0x400   /* the driver provides its  */
119ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                              /* own hinter               */
120ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
121ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
122ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* deprecated values */
123ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define ft_module_font_driver         FT_MODULE_FONT_DRIVER
124ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define ft_module_renderer            FT_MODULE_RENDERER
125ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define ft_module_hinter              FT_MODULE_HINTER
126ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define ft_module_styler              FT_MODULE_STYLER
127ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
128ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define ft_module_driver_scalable     FT_MODULE_DRIVER_SCALABLE
129ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define ft_module_driver_no_outlines  FT_MODULE_DRIVER_NO_OUTLINES
130ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define ft_module_driver_has_hinter   FT_MODULE_DRIVER_HAS_HINTER
131ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
132ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
133ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  typedef FT_Pointer  FT_Module_Interface;
134ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
135ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
136ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*************************************************************************/
137ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
138ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <FuncType>                                                            */
139ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    FT_Module_Constructor                                              */
140ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
141ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Description>                                                         */
142ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    A function used to initialize (not create) a new module object.    */
143ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
144ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Input>                                                               */
145ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    module :: The module to initialize.                                */
146ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
147ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  typedef FT_Error
148ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  (*FT_Module_Constructor)( FT_Module  module );
149ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
150ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
151ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*************************************************************************/
152ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
153ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <FuncType>                                                            */
154ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    FT_Module_Destructor                                               */
155ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
156ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Description>                                                         */
157ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    A function used to finalize (not destroy) a given module object.   */
158ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
159ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Input>                                                               */
160ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    module :: The module to finalize.                                  */
161ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
162ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  typedef void
163ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  (*FT_Module_Destructor)( FT_Module  module );
164ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
165ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
166ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*************************************************************************/
167ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
168ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <FuncType>                                                            */
169ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    FT_Module_Requester                                                */
170ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
171ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Description>                                                         */
172ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    A function used to query a given module for a specific interface.  */
173ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
174ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Input>                                                               */
175ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    module :: The module to be searched.                               */
176ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
177ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    name ::   The name of the interface in the module.                 */
178ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
179ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  typedef FT_Module_Interface
180ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  (*FT_Module_Requester)( FT_Module    module,
181ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                          const char*  name );
182ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
183ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
184ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*************************************************************************/
185ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
186ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Struct>                                                              */
187ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    FT_Module_Class                                                    */
188ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
189ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Description>                                                         */
190ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    The module class descriptor.                                       */
191ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
192ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Fields>                                                              */
193ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    module_flags    :: Bit flags describing the module.                */
194ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
195ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    module_size     :: The size of one module object/instance in       */
196ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                       bytes.                                          */
197ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
198ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    module_name     :: The name of the module.                         */
199ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
200ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    module_version  :: The version, as a 16.16 fixed number            */
201ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                       (major.minor).                                  */
202ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
203ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    module_requires :: The version of FreeType this module requires,   */
204ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                       as a 16.16 fixed number (major.minor).  Starts  */
205ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                       at version 2.0, i.e., 0x20000.                  */
206ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
207ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    module_init     :: The initializing function.                      */
208ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
209ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    module_done     :: The finalizing function.                        */
210ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
211ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    get_interface   :: The interface requesting function.              */
212ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
213ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  typedef struct  FT_Module_Class_
214ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  {
215ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_ULong               module_flags;
216ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_Long                module_size;
217ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    const FT_String*       module_name;
218ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_Fixed               module_version;
219ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_Fixed               module_requires;
220ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
221ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    const void*            module_interface;
222ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
223ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_Module_Constructor  module_init;
224ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_Module_Destructor   module_done;
225ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_Module_Requester    get_interface;
226ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
227ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  } FT_Module_Class;
228ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
229ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
230ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*************************************************************************/
231ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
232ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Function>                                                            */
233ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    FT_Add_Module                                                      */
234ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
235ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Description>                                                         */
236ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    Add a new module to a given library instance.                      */
237ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
238ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <InOut>                                                               */
239ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    library :: A handle to the library object.                         */
240ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
241ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Input>                                                               */
242ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    clazz   :: A pointer to class descriptor for the module.           */
243ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
244ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Return>                                                              */
245ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    FreeType error code.  0~means success.                             */
246ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
247ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Note>                                                                */
248ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    An error will be returned if a module already exists by that name, */
249ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    or if the module requires a version of FreeType that is too great. */
250ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
251ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  FT_EXPORT( FT_Error )
252ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  FT_Add_Module( FT_Library              library,
253ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                 const FT_Module_Class*  clazz );
254ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
255ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
256ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*************************************************************************/
257ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
258ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Function>                                                            */
259ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    FT_Get_Module                                                      */
260ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
261ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Description>                                                         */
262ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    Find a module by its name.                                         */
263ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
264ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Input>                                                               */
265ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    library     :: A handle to the library object.                     */
266ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
267ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    module_name :: The module's name (as an ASCII string).             */
268ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
269ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Return>                                                              */
270ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    A module handle.  0~if none was found.                             */
271ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
272ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Note>                                                                */
273ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    FreeType's internal modules aren't documented very well, and you   */
274ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    should look up the source code for details.                        */
275ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
276ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  FT_EXPORT( FT_Module )
277ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  FT_Get_Module( FT_Library   library,
278ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                 const char*  module_name );
279ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
280ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
281ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*************************************************************************/
282ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
283ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Function>                                                            */
284ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    FT_Remove_Module                                                   */
285ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
286ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Description>                                                         */
287ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    Remove a given module from a library instance.                     */
288ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
289ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <InOut>                                                               */
290ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    library :: A handle to a library object.                           */
291ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
292ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Input>                                                               */
293ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    module  :: A handle to a module object.                            */
294ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
295ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Return>                                                              */
296ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    FreeType error code.  0~means success.                             */
297ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
298ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Note>                                                                */
299ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    The module object is destroyed by the function in case of success. */
300ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
301ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  FT_EXPORT( FT_Error )
302ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  FT_Remove_Module( FT_Library  library,
303ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                    FT_Module   module );
304ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
305ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
306ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /**********************************************************************
307ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
308ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   * @function:
309ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    FT_Property_Set
310ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
311ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   * @description:
312ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    Set a property for a given module.
313ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
314ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   * @input:
315ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    library ::
316ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *       A handle to the library the module is part of.
317ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
318ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    module_name ::
319ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *       The module name.
320ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
321ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    property_name ::
322ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *       The property name.  Properties are described in the `Synopsis'
323ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *       subsection of the module's documentation.
324ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
325ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *       Note that only a few modules have properties.
326ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
327ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    value ::
328e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov   *       A generic pointer to a variable or structure that gives the new
329ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *       value of the property.  The exact definition of `value' is
330ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *       dependent on the property; see the `Synopsis' subsection of the
331ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *       module's documentation.
332ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
333ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   * @return:
334ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *   FreeType error code.  0~means success.
335ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
336ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   * @note:
337ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    If `module_name' isn't a valid module name, or `property_name'
338ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    doesn't specify a valid property, or if `value' doesn't represent a
339ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    valid value for the given property, an error is returned.
340ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
341ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    The following example sets property `bar' (a simple integer) in
342ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    module `foo' to value~1.
343ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
344ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    {
345ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *      FT_UInt  bar;
346ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
347ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
348ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *      bar = 1;
349ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *      FT_Property_Set( library, "foo", "bar", &bar );
350ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    }
351ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
352ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    Note that the FreeType Cache sub-system doesn't recognize module
353ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    property changes.  To avoid glyph lookup confusion within the cache
354ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    you should call @FTC_Manager_Reset to completely flush the cache if
355ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    a module property gets changed after @FTC_Manager_New has been
356ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    called.
357ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
358ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    It is not possible to set properties of the FreeType Cache
359ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    sub-system itself with FT_Property_Set; use @FTC_Property_Set
360ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    instead.
361ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
362ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *  @since:
363ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    2.4.11
364ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
365ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   */
366ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  FT_EXPORT( FT_Error )
367ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  FT_Property_Set( FT_Library        library,
368ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                   const FT_String*  module_name,
369ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                   const FT_String*  property_name,
370ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                   const void*       value );
371ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
372ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
373ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /**********************************************************************
374ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
375ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   * @function:
376ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    FT_Property_Get
377ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
378ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   * @description:
379ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    Get a module's property value.
380ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
381ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   * @input:
382ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    library ::
383ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *       A handle to the library the module is part of.
384ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
385ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    module_name ::
386ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *       The module name.
387ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
388ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    property_name ::
389ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *       The property name.  Properties are described in the `Synopsis'
390ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *       subsection of the module's documentation.
391ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
392ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   * @inout:
393ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    value ::
394e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov   *       A generic pointer to a variable or structure that gives the
395ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *       value of the property.  The exact definition of `value' is
396ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *       dependent on the property; see the `Synopsis' subsection of the
397ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *       module's documentation.
398ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
399ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   * @return:
400ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *   FreeType error code.  0~means success.
401ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
402ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   * @note:
403ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    If `module_name' isn't a valid module name, or `property_name'
404ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    doesn't specify a valid property, or if `value' doesn't represent a
405ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    valid value for the given property, an error is returned.
406ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
407ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    The following example gets property `baz' (a range) in module `foo'.
408ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
409ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    {
410ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *      typedef  range_
411ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *      {
412ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *        FT_Int32  min;
413ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *        FT_Int32  max;
414ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
415ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *      } range;
416ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
417ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *      range  baz;
418ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
419ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
420ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *      FT_Property_Get( library, "foo", "baz", &baz );
421ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    }
422ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
423ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    It is not possible to retrieve properties of the FreeType Cache
424ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    sub-system with FT_Property_Get; use @FTC_Property_Get instead.
425ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
426ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *  @since:
427ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    2.4.11
428ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
429ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   */
430ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  FT_EXPORT( FT_Error )
431ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  FT_Property_Get( FT_Library        library,
432ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                   const FT_String*  module_name,
433ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                   const FT_String*  property_name,
434ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                   void*             value );
435ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
436ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
437ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*************************************************************************/
438ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
439ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Function>                                                            */
440ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    FT_Reference_Library                                               */
441ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
442ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Description>                                                         */
443ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    A counter gets initialized to~1 at the time an @FT_Library         */
444ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    structure is created.  This function increments the counter.       */
445ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    @FT_Done_Library then only destroys a library if the counter is~1, */
446ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    otherwise it simply decrements the counter.                        */
447ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
448e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    This function helps in managing life-cycles of structures that     */
449ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    reference @FT_Library objects.                                     */
450ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
451ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Input>                                                               */
452ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    library :: A handle to a target library object.                    */
453ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
454ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Return>                                                              */
455ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    FreeType error code.  0~means success.                             */
456ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
457ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Since>                                                               */
458ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    2.4.2                                                              */
459ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
460ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  FT_EXPORT( FT_Error )
461ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  FT_Reference_Library( FT_Library  library );
462ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
463ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
464ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*************************************************************************/
465ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
466ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Function>                                                            */
467ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    FT_New_Library                                                     */
468ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
469ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Description>                                                         */
470ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    This function is used to create a new FreeType library instance    */
471ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    from a given memory object.  It is thus possible to use libraries  */
472ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    with distinct memory allocators within the same program.           */
473ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
474ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    Normally, you would call this function (followed by a call to      */
475ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    @FT_Add_Default_Modules or a series of calls to @FT_Add_Module)    */
476ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    instead of @FT_Init_FreeType to initialize the FreeType library.   */
477ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
478ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    Don't use @FT_Done_FreeType but @FT_Done_Library to destroy a      */
479ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    library instance.                                                  */
480ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
481ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Input>                                                               */
482ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    memory   :: A handle to the original memory object.                */
483ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
484ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Output>                                                              */
485ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    alibrary :: A pointer to handle of a new library object.           */
486ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
487ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Return>                                                              */
488ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    FreeType error code.  0~means success.                             */
489ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
490ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Note>                                                                */
491ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    See the discussion of reference counters in the description of     */
492ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    @FT_Reference_Library.                                             */
493ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
494ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  FT_EXPORT( FT_Error )
495ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  FT_New_Library( FT_Memory    memory,
496ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                  FT_Library  *alibrary );
497ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
498ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
499ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*************************************************************************/
500ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
501ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Function>                                                            */
502ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    FT_Done_Library                                                    */
503ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
504ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Description>                                                         */
505ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    Discard a given library object.  This closes all drivers and       */
506ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    discards all resource objects.                                     */
507ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
508ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Input>                                                               */
509ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    library :: A handle to the target library.                         */
510ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
511ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Return>                                                              */
512ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    FreeType error code.  0~means success.                             */
513ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
514ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Note>                                                                */
515ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    See the discussion of reference counters in the description of     */
516ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    @FT_Reference_Library.                                             */
517ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
518ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  FT_EXPORT( FT_Error )
519ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  FT_Done_Library( FT_Library  library );
520ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
521e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /* */
522ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
523ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  typedef void
524ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  (*FT_DebugHook_Func)( void*  arg );
525ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
526ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
527ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*************************************************************************/
528ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
529ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Function>                                                            */
530ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    FT_Set_Debug_Hook                                                  */
531ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
532ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Description>                                                         */
533ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    Set a debug hook function for debugging the interpreter of a font  */
534ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    format.                                                            */
535ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
536ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <InOut>                                                               */
537ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    library    :: A handle to the library object.                      */
538ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
539ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Input>                                                               */
540ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    hook_index :: The index of the debug hook.  You should use the     */
541ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                  values defined in `ftobjs.h', e.g.,                  */
542ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                  `FT_DEBUG_HOOK_TRUETYPE'.                            */
543ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
544ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    debug_hook :: The function used to debug the interpreter.          */
545ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
546ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Note>                                                                */
547ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    Currently, four debug hook slots are available, but only two (for  */
548ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    the TrueType and the Type~1 interpreter) are defined.              */
549ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
550ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    Since the internal headers of FreeType are no longer installed,    */
551ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    the symbol `FT_DEBUG_HOOK_TRUETYPE' isn't available publicly.      */
552ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    This is a bug and will be fixed in a forthcoming release.          */
553ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
554ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  FT_EXPORT( void )
555ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  FT_Set_Debug_Hook( FT_Library         library,
556ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                     FT_UInt            hook_index,
557ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                     FT_DebugHook_Func  debug_hook );
558ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
559ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
560ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*************************************************************************/
561ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
562ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Function>                                                            */
563ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    FT_Add_Default_Modules                                             */
564ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
565ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Description>                                                         */
566ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    Add the set of default drivers to a given library object.          */
567ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    This is only useful when you create a library object with          */
568ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    @FT_New_Library (usually to plug a custom memory manager).         */
569ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
570ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <InOut>                                                               */
571ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    library :: A handle to a new library object.                       */
572ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
573ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  FT_EXPORT( void )
574ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  FT_Add_Default_Modules( FT_Library  library );
575ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
576ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
577ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
578ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /**************************************************************************
579ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
580ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   * @section:
581ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *   truetype_engine
582ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
583ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   * @title:
584ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *   The TrueType Engine
585ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
586ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   * @abstract:
587ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *   TrueType bytecode support.
588ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
589ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   * @description:
590ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *   This section contains a function used to query the level of TrueType
591ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *   bytecode support compiled in this version of the library.
592ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
593ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   */
594ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
595ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
596ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /**************************************************************************
597ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
598ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *  @enum:
599ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *     FT_TrueTypeEngineType
600ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
601ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *  @description:
602ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *     A list of values describing which kind of TrueType bytecode
603ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *     engine is implemented in a given FT_Library instance.  It is used
604ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *     by the @FT_Get_TrueType_Engine_Type function.
605ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
606ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *  @values:
607ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *     FT_TRUETYPE_ENGINE_TYPE_NONE ::
608ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *       The library doesn't implement any kind of bytecode interpreter.
609ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
610ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *     FT_TRUETYPE_ENGINE_TYPE_UNPATENTED ::
611ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *       The library implements a bytecode interpreter that doesn't
612ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *       support the patented operations of the TrueType virtual machine.
613ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
614e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov   *       Its main use is to load certain Asian fonts that position and
615ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *       scale glyph components with bytecode instructions.  It produces
616ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *       bad output for most other fonts.
617ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
618ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *     FT_TRUETYPE_ENGINE_TYPE_PATENTED ::
619ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *       The library implements a bytecode interpreter that covers
620ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *       the full instruction set of the TrueType virtual machine (this
621ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *       was governed by patents until May 2010, hence the name).
622ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
623ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *  @since:
624ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *     2.2
625ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
626ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   */
627ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  typedef enum  FT_TrueTypeEngineType_
628ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  {
629ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_TRUETYPE_ENGINE_TYPE_NONE = 0,
630ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_TRUETYPE_ENGINE_TYPE_UNPATENTED,
631ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_TRUETYPE_ENGINE_TYPE_PATENTED
632ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
633ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  } FT_TrueTypeEngineType;
634ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
635ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
636ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /**************************************************************************
637ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
638ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *  @func:
639ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *     FT_Get_TrueType_Engine_Type
640ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
641ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *  @description:
642ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *     Return an @FT_TrueTypeEngineType value to indicate which level of
643ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *     the TrueType virtual machine a given library instance supports.
644ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
645ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *  @input:
646ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *     library ::
647ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *       A library instance.
648ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
649ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *  @return:
650ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *     A value indicating which level is supported.
651ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
652ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *  @since:
653ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *     2.2
654ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
655ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   */
656ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  FT_EXPORT( FT_TrueTypeEngineType )
657ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  FT_Get_TrueType_Engine_Type( FT_Library  library );
658ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
659ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* */
660ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
661ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
662ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFT_END_HEADER
663ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
664ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif /* __FTMODAPI_H__ */
665ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
666ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
667ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* END */
668