1049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/***************************************************************************/
2049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*                                                                         */
3049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*  ftmodapi.h                                                             */
4049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*                                                                         */
5049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*    FreeType modules public interface (specification).                   */
6049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*                                                                         */
7aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich/*  Copyright 1996-2001, 2002, 2003, 2006, 2008, 2009, 2010 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#ifndef __FTMODAPI_H__
20049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define __FTMODAPI_H__
21049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
22049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
23049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include <ft2build.h>
24049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include FT_FREETYPE_H
25049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
26049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifdef FREETYPE_H
27049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#error "freetype.h of FreeType 1 has been loaded!"
28049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#error "Please fix the directory search order for header files"
29049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#error "so that freetype.h of FreeType 2 is found first."
30049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif
31049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
32049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
33049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source ProjectFT_BEGIN_HEADER
34049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
35049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
36049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
37049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
38049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Section>                                                             */
39049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    module_management                                                  */
40049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
41049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Title>                                                               */
42049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    Module Management                                                  */
43049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
44049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Abstract>                                                            */
45049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    How to add, upgrade, and remove modules from FreeType.             */
46049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
47049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Description>                                                         */
48049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    The definitions below are used to manage modules within FreeType.  */
49049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    Modules can be added, upgraded, and removed at runtime.            */
50049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
51049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
52049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
53049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
54049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* module bit flags */
55049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_MODULE_FONT_DRIVER         1  /* this module is a font driver  */
56049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_MODULE_RENDERER            2  /* this module is a renderer     */
57049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_MODULE_HINTER              4  /* this module is a glyph hinter */
58049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_MODULE_STYLER              8  /* this module is a styler       */
59049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
60049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_MODULE_DRIVER_SCALABLE     0x100   /* the driver supports      */
61049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                                              /* scalable fonts           */
62049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_MODULE_DRIVER_NO_OUTLINES  0x200   /* the driver does not      */
63049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                                              /* support vector outlines  */
64049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_MODULE_DRIVER_HAS_HINTER   0x400   /* the driver provides its  */
65049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                                              /* own hinter               */
66049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
67049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
68049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* deprecated values */
69049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define ft_module_font_driver         FT_MODULE_FONT_DRIVER
70049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define ft_module_renderer            FT_MODULE_RENDERER
71049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define ft_module_hinter              FT_MODULE_HINTER
72049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define ft_module_styler              FT_MODULE_STYLER
73049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
74049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define ft_module_driver_scalable     FT_MODULE_DRIVER_SCALABLE
75049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define ft_module_driver_no_outlines  FT_MODULE_DRIVER_NO_OUTLINES
76049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define ft_module_driver_has_hinter   FT_MODULE_DRIVER_HAS_HINTER
77049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
78049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
79049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef FT_Pointer  FT_Module_Interface;
80049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
81049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
82049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
83049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
84049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <FuncType>                                                            */
85049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_Module_Constructor                                              */
86049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
87049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Description>                                                         */
88049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    A function used to initialize (not create) a new module object.    */
89049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
90049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Input>                                                               */
91049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    module :: The module to initialize.                                */
92049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
93049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef FT_Error
94049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  (*FT_Module_Constructor)( FT_Module  module );
95049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
96049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
97049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
98049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
99049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <FuncType>                                                            */
100049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_Module_Destructor                                               */
101049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
102049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Description>                                                         */
103049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    A function used to finalize (not destroy) a given module object.   */
104049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
105049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Input>                                                               */
106049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    module :: The module to finalize.                                  */
107049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
108049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef void
109049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  (*FT_Module_Destructor)( FT_Module  module );
110049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
111049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
112049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
113049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
114049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <FuncType>                                                            */
115049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_Module_Requester                                                */
116049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
117049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Description>                                                         */
118049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    A function used to query a given module for a specific interface.  */
119049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
120049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Input>                                                               */
121049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    module :: The module to finalize.                                  */
122049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
123049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    name ::   The name of the interface in the module.                 */
124049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
125049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef FT_Module_Interface
126049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  (*FT_Module_Requester)( FT_Module    module,
127049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                          const char*  name );
128049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
129049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
130049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
131049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
132049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Struct>                                                              */
133049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_Module_Class                                                    */
134049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
135049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Description>                                                         */
136049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    The module class descriptor.                                       */
137049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
138049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Fields>                                                              */
139049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    module_flags    :: Bit flags describing the module.                */
140049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
141049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    module_size     :: The size of one module object/instance in       */
142049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                       bytes.                                          */
143049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
144049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    module_name     :: The name of the module.                         */
145049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
146049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    module_version  :: The version, as a 16.16 fixed number            */
147049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                       (major.minor).                                  */
148049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
149049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    module_requires :: The version of FreeType this module requires,   */
150049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                       as a 16.16 fixed number (major.minor).  Starts  */
151049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                       at version 2.0, i.e., 0x20000.                  */
152049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
153049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    module_init     :: The initializing function.                      */
154049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
155049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    module_done     :: The finalizing function.                        */
156049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
157049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    get_interface   :: The interface requesting function.              */
158049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
159049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef struct  FT_Module_Class_
160049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  {
161049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_ULong               module_flags;
162049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_Long                module_size;
163049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    const FT_String*       module_name;
164049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_Fixed               module_version;
165049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_Fixed               module_requires;
166049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
167049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    const void*            module_interface;
168049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
169049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_Module_Constructor  module_init;
170049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_Module_Destructor   module_done;
171049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_Module_Requester    get_interface;
172049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
173049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  } FT_Module_Class;
174049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
175049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
176049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
177049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
178049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Function>                                                            */
179049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_Add_Module                                                      */
180049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
181049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Description>                                                         */
1820a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project  /*    Add a new module to a given library instance.                      */
183049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
184049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <InOut>                                                               */
185049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    library :: A handle to the library object.                         */
186049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
187049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Input>                                                               */
188049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    clazz   :: A pointer to class descriptor for the module.           */
189049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
190049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Return>                                                              */
1910a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project  /*    FreeType error code.  0~means success.                             */
192049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
193049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Note>                                                                */
194049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    An error will be returned if a module already exists by that name, */
195049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    or if the module requires a version of FreeType that is too great. */
196049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
197049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_EXPORT( FT_Error )
198049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_Add_Module( FT_Library              library,
199049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                 const FT_Module_Class*  clazz );
200049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
201049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
202049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
203049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
204049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Function>                                                            */
205049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_Get_Module                                                      */
206049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
207049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Description>                                                         */
2080a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project  /*    Find a module by its name.                                         */
209049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
210049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Input>                                                               */
211049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    library     :: A handle to the library object.                     */
212049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
213049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    module_name :: The module's name (as an ASCII string).             */
214049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
215049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Return>                                                              */
2160a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project  /*    A module handle.  0~if none was found.                             */
217049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
218049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Note>                                                                */
219049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FreeType's internal modules aren't documented very well, and you   */
220049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    should look up the source code for details.                        */
221049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
222049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_EXPORT( FT_Module )
223049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_Get_Module( FT_Library   library,
224049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                 const char*  module_name );
225049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
226049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
227049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
228049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
229049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Function>                                                            */
230049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_Remove_Module                                                   */
231049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
232049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Description>                                                         */
2330a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project  /*    Remove a given module from a library instance.                     */
234049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
235049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <InOut>                                                               */
236049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    library :: A handle to a library object.                           */
237049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
238049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Input>                                                               */
239049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    module  :: A handle to a module object.                            */
240049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
241049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Return>                                                              */
2420a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project  /*    FreeType error code.  0~means success.                             */
243049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
244049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Note>                                                                */
245049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    The module object is destroyed by the function in case of success. */
246049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
247049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_EXPORT( FT_Error )
248049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_Remove_Module( FT_Library  library,
249049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                    FT_Module   module );
250049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
251049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
252049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
253049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
254049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Function>                                                            */
255aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich  /*    FT_Reference_Library                                               */
256aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich  /*                                                                       */
257aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich  /* <Description>                                                         */
258aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich  /*    A counter gets initialized to~1 at the time an @FT_Library         */
259aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich  /*    structure is created.  This function increments the counter.       */
260aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich  /*    @FT_Done_Library then only destroys a library if the counter is~1, */
261aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich  /*    otherwise it simply decrements the counter.                        */
262aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich  /*                                                                       */
263aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich  /*    This function helps in managing life-cycles of structures which    */
264aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich  /*    reference @FT_Library objects.                                     */
265aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich  /*                                                                       */
266aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich  /* <Input>                                                               */
267aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich  /*    library :: A handle to a target library object.                    */
268aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich  /*                                                                       */
269aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich  /* <Return>                                                              */
270aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich  /*    FreeType error code.  0~means success.                             */
271aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich  /*                                                                       */
272aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich  /* <Since>                                                               */
273aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich  /*    2.4.2                                                              */
274aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich  /*                                                                       */
275aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich  FT_EXPORT( FT_Error )
276aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich  FT_Reference_Library( FT_Library  library );
277aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich
278aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich
279aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich  /*************************************************************************/
280aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich  /*                                                                       */
281aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich  /* <Function>                                                            */
282049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_New_Library                                                     */
283049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
284049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Description>                                                         */
285049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    This function is used to create a new FreeType library instance    */
286049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    from a given memory object.  It is thus possible to use libraries  */
287049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    with distinct memory allocators within the same program.           */
288049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
289295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner  /*    Normally, you would call this function (followed by a call to      */
290295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner  /*    @FT_Add_Default_Modules or a series of calls to @FT_Add_Module)    */
291295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner  /*    instead of @FT_Init_FreeType to initialize the FreeType library.   */
292295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner  /*                                                                       */
293aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich  /*    Don't use @FT_Done_FreeType but @FT_Done_Library to destroy a      */
294aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich  /*    library instance.                                                  */
295aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich  /*                                                                       */
296049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Input>                                                               */
297049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    memory   :: A handle to the original memory object.                */
298049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
299049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Output>                                                              */
300049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    alibrary :: A pointer to handle of a new library object.           */
301049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
302049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Return>                                                              */
3030a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project  /*    FreeType error code.  0~means success.                             */
304049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
305aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich  /* <Note>                                                                */
306aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich  /*    See the discussion of reference counters in the description of     */
307aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich  /*    @FT_Reference_Library.                                             */
308aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich  /*                                                                       */
309049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_EXPORT( FT_Error )
310049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_New_Library( FT_Memory    memory,
311049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                  FT_Library  *alibrary );
312049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
313049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
314049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
315049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
316049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Function>                                                            */
317049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_Done_Library                                                    */
318049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
319049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Description>                                                         */
3200a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project  /*    Discard a given library object.  This closes all drivers and       */
321049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    discards all resource objects.                                     */
322049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
323049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Input>                                                               */
324049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    library :: A handle to the target library.                         */
325049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
326049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Return>                                                              */
3270a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project  /*    FreeType error code.  0~means success.                             */
328049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
329aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich  /* <Note>                                                                */
330aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich  /*    See the discussion of reference counters in the description of     */
331aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich  /*    @FT_Reference_Library.                                             */
332aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich  /*                                                                       */
333049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_EXPORT( FT_Error )
334049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_Done_Library( FT_Library  library );
335049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
336049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* */
337049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
338049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef void
339049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  (*FT_DebugHook_Func)( void*  arg );
340049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
341049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
342049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
343049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
344049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Function>                                                            */
345049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_Set_Debug_Hook                                                  */
346049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
347049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Description>                                                         */
3480a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project  /*    Set a debug hook function for debugging the interpreter of a font  */
349049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    format.                                                            */
350049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
351049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <InOut>                                                               */
352049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    library    :: A handle to the library object.                      */
353049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
354049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Input>                                                               */
355049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    hook_index :: The index of the debug hook.  You should use the     */
356049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                  values defined in `ftobjs.h', e.g.,                  */
357049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                  `FT_DEBUG_HOOK_TRUETYPE'.                            */
358049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
359049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    debug_hook :: The function used to debug the interpreter.          */
360049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
361049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Note>                                                                */
362049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    Currently, four debug hook slots are available, but only two (for  */
3630a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project  /*    the TrueType and the Type~1 interpreter) are defined.              */
364049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
365049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    Since the internal headers of FreeType are no longer installed,    */
366049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    the symbol `FT_DEBUG_HOOK_TRUETYPE' isn't available publicly.      */
367049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    This is a bug and will be fixed in a forthcoming release.          */
368049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
369049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_EXPORT( void )
370049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_Set_Debug_Hook( FT_Library         library,
371049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                     FT_UInt            hook_index,
372049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                     FT_DebugHook_Func  debug_hook );
373049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
374049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
375049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
376049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
377049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Function>                                                            */
378049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_Add_Default_Modules                                             */
379049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
380049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Description>                                                         */
3810a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project  /*    Add the set of default drivers to a given library object.          */
382049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    This is only useful when you create a library object with          */
383049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    @FT_New_Library (usually to plug a custom memory manager).         */
384049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
385049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <InOut>                                                               */
386049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    library :: A handle to a new library object.                       */
387049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
388049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_EXPORT( void )
389049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_Add_Default_Modules( FT_Library  library );
390049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
391049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
392049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
393049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /**************************************************************************
394049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
395049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @section:
396049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   truetype_engine
397049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
398049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @title:
399049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   The TrueType Engine
400049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
401049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @abstract:
402049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   TrueType bytecode support.
403049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
404049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @description:
405049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   This section contains a function used to query the level of TrueType
406049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   bytecode support compiled in this version of the library.
407049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
408049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   */
409049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
410049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
411049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /**************************************************************************
412049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
413049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *  @enum:
414049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     FT_TrueTypeEngineType
415049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
416049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *  @description:
417049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     A list of values describing which kind of TrueType bytecode
418049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     engine is implemented in a given FT_Library instance.  It is used
419049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     by the @FT_Get_TrueType_Engine_Type function.
420049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
421049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *  @values:
422049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     FT_TRUETYPE_ENGINE_TYPE_NONE ::
423049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *       The library doesn't implement any kind of bytecode interpreter.
424049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
425049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     FT_TRUETYPE_ENGINE_TYPE_UNPATENTED ::
426049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *       The library implements a bytecode interpreter that doesn't
427049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *       support the patented operations of the TrueType virtual machine.
428049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
429049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *       Its main use is to load certain Asian fonts which position and
430049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *       scale glyph components with bytecode instructions.  It produces
431049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *       bad output for most other fonts.
432049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
433049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *    FT_TRUETYPE_ENGINE_TYPE_PATENTED ::
434049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *       The library implements a bytecode interpreter that covers
435aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich   *       the full instruction set of the TrueType virtual machine (this
436aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich   *       was governed by patents until May 2010, hence the name).
437049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
438049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *  @since:
439049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *       2.2
440049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
441049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   */
442049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef enum  FT_TrueTypeEngineType_
443049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  {
444049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_TRUETYPE_ENGINE_TYPE_NONE = 0,
445049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_TRUETYPE_ENGINE_TYPE_UNPATENTED,
446049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_TRUETYPE_ENGINE_TYPE_PATENTED
447049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
448049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  } FT_TrueTypeEngineType;
449049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
450049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
451049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /**************************************************************************
452049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
453049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *  @func:
454049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     FT_Get_TrueType_Engine_Type
455049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
456049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *  @description:
4570a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project   *     Return an @FT_TrueTypeEngineType value to indicate which level of
458049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     the TrueType virtual machine a given library instance supports.
459049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
460049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *  @input:
461049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     library ::
462049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *       A library instance.
463049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
464049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *  @return:
465049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     A value indicating which level is supported.
466049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
467049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *  @since:
468049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     2.2
469049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
470049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   */
471049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_EXPORT( FT_TrueTypeEngineType )
472049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_Get_TrueType_Engine_Type( FT_Library  library );
473049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
474049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
475049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* */
476049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
477049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
478049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source ProjectFT_END_HEADER
479049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
480049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif /* __FTMODAPI_H__ */
481049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
482049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
483049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* END */
484