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/*                                                                         */
7727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease/*  Copyright 1996-2003, 2006, 2008-2010, 2012, 2013 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>                                                            */
45727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease  /*    How to add, upgrade, remove, and control 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.            */
50727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease  /*    Additionally, some module properties can be controlled also.       */
51727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease  /*                                                                       */
52727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease  /*    Here is a list of possible values of the `module_name' field in    */
53727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease  /*    the @FT_Module_Class structure.                                    */
54727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease  /*                                                                       */
55727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease  /*    {                                                                  */
56727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease  /*      autofitter                                                       */
57727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease  /*      bdf                                                              */
58727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease  /*      cff                                                              */
59727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease  /*      gxvalid                                                          */
60727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease  /*      otvalid                                                          */
61727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease  /*      pcf                                                              */
62727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease  /*      pfr                                                              */
63727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease  /*      psaux                                                            */
64727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease  /*      pshinter                                                         */
65727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease  /*      psnames                                                          */
66727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease  /*      raster1, raster5                                                 */
67727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease  /*      sfnt                                                             */
68727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease  /*      smooth, smooth-lcd, smooth-lcdv                                  */
69727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease  /*      truetype                                                         */
70727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease  /*      type1                                                            */
71727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease  /*      type42                                                           */
72727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease  /*      t1cid                                                            */
73727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease  /*      winfonts                                                         */
74727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease  /*    }                                                                  */
75727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease  /*                                                                       */
76727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease  /*    Note that the FreeType Cache sub-system is not a FreeType module.  */
77049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
78049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
79049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
80049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
81049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* module bit flags */
82049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_MODULE_FONT_DRIVER         1  /* this module is a font driver  */
83049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_MODULE_RENDERER            2  /* this module is a renderer     */
84049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_MODULE_HINTER              4  /* this module is a glyph hinter */
85049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_MODULE_STYLER              8  /* this module is a styler       */
86049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
87049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_MODULE_DRIVER_SCALABLE     0x100   /* the driver supports      */
88049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                                              /* scalable fonts           */
89049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_MODULE_DRIVER_NO_OUTLINES  0x200   /* the driver does not      */
90049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                                              /* support vector outlines  */
91049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_MODULE_DRIVER_HAS_HINTER   0x400   /* the driver provides its  */
92049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                                              /* own hinter               */
93049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
94049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
95049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* deprecated values */
96049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define ft_module_font_driver         FT_MODULE_FONT_DRIVER
97049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define ft_module_renderer            FT_MODULE_RENDERER
98049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define ft_module_hinter              FT_MODULE_HINTER
99049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define ft_module_styler              FT_MODULE_STYLER
100049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
101049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define ft_module_driver_scalable     FT_MODULE_DRIVER_SCALABLE
102049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define ft_module_driver_no_outlines  FT_MODULE_DRIVER_NO_OUTLINES
103049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define ft_module_driver_has_hinter   FT_MODULE_DRIVER_HAS_HINTER
104049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
105049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
106049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef FT_Pointer  FT_Module_Interface;
107049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
108049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
109049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
110049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
111049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <FuncType>                                                            */
112049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_Module_Constructor                                              */
113049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
114049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Description>                                                         */
115049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    A function used to initialize (not create) a new module object.    */
116049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
117049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Input>                                                               */
118049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    module :: The module to initialize.                                */
119049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
120049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef FT_Error
121049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  (*FT_Module_Constructor)( FT_Module  module );
122049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
123049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
124049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
125049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
126049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <FuncType>                                                            */
127049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_Module_Destructor                                               */
128049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
129049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Description>                                                         */
130049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    A function used to finalize (not destroy) a given module object.   */
131049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
132049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Input>                                                               */
133049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    module :: The module to finalize.                                  */
134049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
135049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef void
136049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  (*FT_Module_Destructor)( FT_Module  module );
137049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
138049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
139049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
140049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
141049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <FuncType>                                                            */
142049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_Module_Requester                                                */
143049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
144049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Description>                                                         */
145049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    A function used to query a given module for a specific interface.  */
146049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
147049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Input>                                                               */
148727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease  /*    module :: The module to be searched.                               */
149049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
150049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    name ::   The name of the interface in the module.                 */
151049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
152049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef FT_Module_Interface
153049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  (*FT_Module_Requester)( FT_Module    module,
154049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                          const char*  name );
155049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
156049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
157049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
158049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
159049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Struct>                                                              */
160049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_Module_Class                                                    */
161049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
162049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Description>                                                         */
163049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    The module class descriptor.                                       */
164049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
165049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Fields>                                                              */
166049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    module_flags    :: Bit flags describing the module.                */
167049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
168049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    module_size     :: The size of one module object/instance in       */
169049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                       bytes.                                          */
170049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
171049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    module_name     :: The name of the module.                         */
172049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
173049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    module_version  :: The version, as a 16.16 fixed number            */
174049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                       (major.minor).                                  */
175049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
176049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    module_requires :: The version of FreeType this module requires,   */
177049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                       as a 16.16 fixed number (major.minor).  Starts  */
178049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                       at version 2.0, i.e., 0x20000.                  */
179049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
180049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    module_init     :: The initializing function.                      */
181049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
182049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    module_done     :: The finalizing function.                        */
183049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
184049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    get_interface   :: The interface requesting function.              */
185049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
186049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef struct  FT_Module_Class_
187049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  {
188049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_ULong               module_flags;
189049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_Long                module_size;
190049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    const FT_String*       module_name;
191049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_Fixed               module_version;
192049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_Fixed               module_requires;
193049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
194049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    const void*            module_interface;
195049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
196049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_Module_Constructor  module_init;
197049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_Module_Destructor   module_done;
198049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_Module_Requester    get_interface;
199049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
200049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  } FT_Module_Class;
201049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
202049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
203049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
204049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
205049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Function>                                                            */
206049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_Add_Module                                                      */
207049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
208049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Description>                                                         */
2090a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project  /*    Add a new module to a given library instance.                      */
210049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
211049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <InOut>                                                               */
212049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    library :: A handle to the library object.                         */
213049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
214049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Input>                                                               */
215049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    clazz   :: A pointer to class descriptor for the module.           */
216049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
217049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Return>                                                              */
2180a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project  /*    FreeType error code.  0~means success.                             */
219049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
220049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Note>                                                                */
221049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    An error will be returned if a module already exists by that name, */
222049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    or if the module requires a version of FreeType that is too great. */
223049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
224049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_EXPORT( FT_Error )
225049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_Add_Module( FT_Library              library,
226049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                 const FT_Module_Class*  clazz );
227049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
228049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
229049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
230049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
231049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Function>                                                            */
232049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_Get_Module                                                      */
233049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
234049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Description>                                                         */
2350a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project  /*    Find a module by its name.                                         */
236049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
237049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Input>                                                               */
238049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    library     :: A handle to the library object.                     */
239049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
240049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    module_name :: The module's name (as an ASCII string).             */
241049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
242049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Return>                                                              */
2430a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project  /*    A module handle.  0~if none was found.                             */
244049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
245049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Note>                                                                */
246049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FreeType's internal modules aren't documented very well, and you   */
247049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    should look up the source code for details.                        */
248049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
249049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_EXPORT( FT_Module )
250049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_Get_Module( FT_Library   library,
251049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                 const char*  module_name );
252049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
253049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
254049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
255049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
256049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Function>                                                            */
257049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_Remove_Module                                                   */
258049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
259049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Description>                                                         */
2600a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project  /*    Remove a given module from a library instance.                     */
261049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
262049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <InOut>                                                               */
263049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    library :: A handle to a library object.                           */
264049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
265049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Input>                                                               */
266049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    module  :: A handle to a module object.                            */
267049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
268049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Return>                                                              */
2690a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project  /*    FreeType error code.  0~means success.                             */
270049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
271049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Note>                                                                */
272049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    The module object is destroyed by the function in case of success. */
273049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
274049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_EXPORT( FT_Error )
275049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_Remove_Module( FT_Library  library,
276049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                    FT_Module   module );
277049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
278049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
279727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease  /**********************************************************************
280727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *
281727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   * @function:
282727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *    FT_Property_Set
283727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *
284727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   * @description:
285727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *    Set a property for a given module.
286727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *
287727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   * @input:
288727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *    library ::
289727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *       A handle to the library the module is part of.
290727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *
291727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *    module_name ::
292727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *       The module name.
293727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *
294727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *    property_name ::
295727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *       The property name.  Properties are described in the `Synopsis'
296727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *       subsection of the module's documentation.
297727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *
298727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *       Note that only a few modules have properties.
299727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *
300727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *    value ::
301ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease   *       A generic pointer to a variable or structure that gives the new
302727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *       value of the property.  The exact definition of `value' is
303727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *       dependent on the property; see the `Synopsis' subsection of the
304727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *       module's documentation.
305727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *
306727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   * @return:
307727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *   FreeType error code.  0~means success.
308727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *
309727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   * @note:
310727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *    If `module_name' isn't a valid module name, or `property_name'
311727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *    doesn't specify a valid property, or if `value' doesn't represent a
312727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *    valid value for the given property, an error is returned.
313727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *
314727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *    The following example sets property `bar' (a simple integer) in
315727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *    module `foo' to value~1.
316727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *
317727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *    {
318727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *      FT_UInt  bar;
319727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *
320727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *
321727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *      bar = 1;
322727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *      FT_Property_Set( library, "foo", "bar", &bar );
323727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *    }
324727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *
325727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *    Note that the FreeType Cache sub-system doesn't recognize module
326727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *    property changes.  To avoid glyph lookup confusion within the cache
327727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *    you should call @FTC_Manager_Reset to completely flush the cache if
328727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *    a module property gets changed after @FTC_Manager_New has been
329727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *    called.
330727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *
331727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *    It is not possible to set properties of the FreeType Cache
332727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *    sub-system itself with FT_Property_Set; use @FTC_Property_Set
333727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *    instead.
334727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *
335727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *  @since:
336727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *    2.4.11
337727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *
338727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   */
339727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease  FT_EXPORT( FT_Error )
340727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease  FT_Property_Set( FT_Library        library,
341727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease                   const FT_String*  module_name,
342727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease                   const FT_String*  property_name,
343727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease                   const void*       value );
344727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease
345727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease
346727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease  /**********************************************************************
347727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *
348727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   * @function:
349727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *    FT_Property_Get
350727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *
351727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   * @description:
352727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *    Get a module's property value.
353727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *
354727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   * @input:
355727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *    library ::
356727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *       A handle to the library the module is part of.
357727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *
358727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *    module_name ::
359727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *       The module name.
360727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *
361727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *    property_name ::
362727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *       The property name.  Properties are described in the `Synopsis'
363727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *       subsection of the module's documentation.
364727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *
365727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   * @inout:
366727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *    value ::
367ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease   *       A generic pointer to a variable or structure that gives the
368727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *       value of the property.  The exact definition of `value' is
369727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *       dependent on the property; see the `Synopsis' subsection of the
370727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *       module's documentation.
371727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *
372727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   * @return:
373727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *   FreeType error code.  0~means success.
374727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *
375727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   * @note:
376727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *    If `module_name' isn't a valid module name, or `property_name'
377727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *    doesn't specify a valid property, or if `value' doesn't represent a
378727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *    valid value for the given property, an error is returned.
379727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *
380727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *    The following example gets property `baz' (a range) in module `foo'.
381727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *
382727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *    {
383727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *      typedef  range_
384727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *      {
385727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *        FT_Int32  min;
386727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *        FT_Int32  max;
387727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *
388727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *      } range;
389727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *
390727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *      range  baz;
391727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *
392727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *
393727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *      FT_Property_Get( library, "foo", "baz", &baz );
394727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *    }
395727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *
396727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *    It is not possible to retrieve properties of the FreeType Cache
397727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *    sub-system with FT_Property_Get; use @FTC_Property_Get instead.
398727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *
399727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *  @since:
400727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *    2.4.11
401727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *
402727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   */
403727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease  FT_EXPORT( FT_Error )
404727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease  FT_Property_Get( FT_Library        library,
405727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease                   const FT_String*  module_name,
406727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease                   const FT_String*  property_name,
407727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease                   void*             value );
408727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease
409727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease
410049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
411049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
412049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Function>                                                            */
413aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich  /*    FT_Reference_Library                                               */
414aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich  /*                                                                       */
415aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich  /* <Description>                                                         */
416aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich  /*    A counter gets initialized to~1 at the time an @FT_Library         */
417aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich  /*    structure is created.  This function increments the counter.       */
418aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich  /*    @FT_Done_Library then only destroys a library if the counter is~1, */
419aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich  /*    otherwise it simply decrements the counter.                        */
420aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich  /*                                                                       */
421ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease  /*    This function helps in managing life-cycles of structures that     */
422aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich  /*    reference @FT_Library objects.                                     */
423aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich  /*                                                                       */
424aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich  /* <Input>                                                               */
425aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich  /*    library :: A handle to a target library object.                    */
426aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich  /*                                                                       */
427aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich  /* <Return>                                                              */
428aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich  /*    FreeType error code.  0~means success.                             */
429aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich  /*                                                                       */
430aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich  /* <Since>                                                               */
431aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich  /*    2.4.2                                                              */
432aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich  /*                                                                       */
433aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich  FT_EXPORT( FT_Error )
434aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich  FT_Reference_Library( FT_Library  library );
435aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich
436aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich
437aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich  /*************************************************************************/
438aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich  /*                                                                       */
439aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich  /* <Function>                                                            */
440049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_New_Library                                                     */
441049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
442049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Description>                                                         */
443049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    This function is used to create a new FreeType library instance    */
444049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    from a given memory object.  It is thus possible to use libraries  */
445049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    with distinct memory allocators within the same program.           */
446049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
447295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner  /*    Normally, you would call this function (followed by a call to      */
448295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner  /*    @FT_Add_Default_Modules or a series of calls to @FT_Add_Module)    */
449295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner  /*    instead of @FT_Init_FreeType to initialize the FreeType library.   */
450295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner  /*                                                                       */
451aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich  /*    Don't use @FT_Done_FreeType but @FT_Done_Library to destroy a      */
452aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich  /*    library instance.                                                  */
453aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich  /*                                                                       */
454049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Input>                                                               */
455049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    memory   :: A handle to the original memory object.                */
456049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
457049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Output>                                                              */
458049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    alibrary :: A pointer to handle of a new library object.           */
459049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
460049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Return>                                                              */
4610a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project  /*    FreeType error code.  0~means success.                             */
462049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
463aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich  /* <Note>                                                                */
464aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich  /*    See the discussion of reference counters in the description of     */
465aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich  /*    @FT_Reference_Library.                                             */
466aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich  /*                                                                       */
467049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_EXPORT( FT_Error )
468049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_New_Library( FT_Memory    memory,
469049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                  FT_Library  *alibrary );
470049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
471049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
472049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
473049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
474049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Function>                                                            */
475049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_Done_Library                                                    */
476049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
477049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Description>                                                         */
4780a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project  /*    Discard a given library object.  This closes all drivers and       */
479049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    discards all resource objects.                                     */
480049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
481049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Input>                                                               */
482049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    library :: A handle to the target library.                         */
483049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
484049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Return>                                                              */
4850a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project  /*    FreeType error code.  0~means success.                             */
486049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
487aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich  /* <Note>                                                                */
488aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich  /*    See the discussion of reference counters in the description of     */
489aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich  /*    @FT_Reference_Library.                                             */
490aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich  /*                                                                       */
491049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_EXPORT( FT_Error )
492049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_Done_Library( FT_Library  library );
493049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
494049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* */
495049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
496049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef void
497049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  (*FT_DebugHook_Func)( void*  arg );
498049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
499049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
500049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
501049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
502049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Function>                                                            */
503049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_Set_Debug_Hook                                                  */
504049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
505049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Description>                                                         */
5060a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project  /*    Set a debug hook function for debugging the interpreter of a font  */
507049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    format.                                                            */
508049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
509049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <InOut>                                                               */
510049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    library    :: A handle to the library object.                      */
511049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
512049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Input>                                                               */
513049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    hook_index :: The index of the debug hook.  You should use the     */
514049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                  values defined in `ftobjs.h', e.g.,                  */
515049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                  `FT_DEBUG_HOOK_TRUETYPE'.                            */
516049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
517049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    debug_hook :: The function used to debug the interpreter.          */
518049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
519049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Note>                                                                */
520049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    Currently, four debug hook slots are available, but only two (for  */
5210a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project  /*    the TrueType and the Type~1 interpreter) are defined.              */
522049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
523049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    Since the internal headers of FreeType are no longer installed,    */
524049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    the symbol `FT_DEBUG_HOOK_TRUETYPE' isn't available publicly.      */
525049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    This is a bug and will be fixed in a forthcoming release.          */
526049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
527049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_EXPORT( void )
528049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_Set_Debug_Hook( FT_Library         library,
529049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                     FT_UInt            hook_index,
530049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                     FT_DebugHook_Func  debug_hook );
531049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
532049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
533049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
534049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
535049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Function>                                                            */
536049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_Add_Default_Modules                                             */
537049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
538049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Description>                                                         */
5390a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project  /*    Add the set of default drivers to a given library object.          */
540049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    This is only useful when you create a library object with          */
541049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    @FT_New_Library (usually to plug a custom memory manager).         */
542049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
543049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <InOut>                                                               */
544049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    library :: A handle to a new library object.                       */
545049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
546049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_EXPORT( void )
547049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_Add_Default_Modules( FT_Library  library );
548049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
549049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
550049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
551049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /**************************************************************************
552049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
553049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @section:
554049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   truetype_engine
555049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
556049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @title:
557049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   The TrueType Engine
558049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
559049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @abstract:
560049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   TrueType bytecode support.
561049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
562049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @description:
563049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   This section contains a function used to query the level of TrueType
564049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   bytecode support compiled in this version of the library.
565049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
566049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   */
567049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
568049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
569049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /**************************************************************************
570049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
571049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *  @enum:
572049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     FT_TrueTypeEngineType
573049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
574049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *  @description:
575049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     A list of values describing which kind of TrueType bytecode
576049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     engine is implemented in a given FT_Library instance.  It is used
577049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     by the @FT_Get_TrueType_Engine_Type function.
578049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
579049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *  @values:
580049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     FT_TRUETYPE_ENGINE_TYPE_NONE ::
581049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *       The library doesn't implement any kind of bytecode interpreter.
582049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
583049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     FT_TRUETYPE_ENGINE_TYPE_UNPATENTED ::
584049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *       The library implements a bytecode interpreter that doesn't
585049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *       support the patented operations of the TrueType virtual machine.
586049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
587ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease   *       Its main use is to load certain Asian fonts that position and
588049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *       scale glyph components with bytecode instructions.  It produces
589049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *       bad output for most other fonts.
590049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
591727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *     FT_TRUETYPE_ENGINE_TYPE_PATENTED ::
592049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *       The library implements a bytecode interpreter that covers
593aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich   *       the full instruction set of the TrueType virtual machine (this
594aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich   *       was governed by patents until May 2010, hence the name).
595049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
596049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *  @since:
597727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *     2.2
598049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
599049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   */
600049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef enum  FT_TrueTypeEngineType_
601049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  {
602049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_TRUETYPE_ENGINE_TYPE_NONE = 0,
603049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_TRUETYPE_ENGINE_TYPE_UNPATENTED,
604049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_TRUETYPE_ENGINE_TYPE_PATENTED
605049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
606049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  } FT_TrueTypeEngineType;
607049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
608049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
609049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /**************************************************************************
610049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
611049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *  @func:
612049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     FT_Get_TrueType_Engine_Type
613049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
614049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *  @description:
6150a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project   *     Return an @FT_TrueTypeEngineType value to indicate which level of
616049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     the TrueType virtual machine a given library instance supports.
617049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
618049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *  @input:
619049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     library ::
620049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *       A library instance.
621049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
622049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *  @return:
623049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     A value indicating which level is supported.
624049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
625049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *  @since:
626049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     2.2
627049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
628049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   */
629049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_EXPORT( FT_TrueTypeEngineType )
630049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_Get_TrueType_Engine_Type( FT_Library  library );
631049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
632049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
633049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* */
634049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
635049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
636049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source ProjectFT_END_HEADER
637049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
638049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif /* __FTMODAPI_H__ */
639049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
640049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
641049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* END */
642