1049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/***************************************************************************/
2049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*                                                                         */
3049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*  pshints.h                                                              */
4049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*                                                                         */
5049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*    Interface to Postscript-specific (Type 1 and Type 2) hints           */
6049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*    recorders (specification only).  These are used to support native    */
7049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*    T1/T2 hints in the `type1', `cid', and `cff' font drivers.           */
8049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*                                                                         */
9727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease/*  Copyright 2001-2003, 2005-2007, 2009, 2012 by                          */
10049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
11049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*                                                                         */
12049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*  This file is part of the FreeType project, and may only be used,       */
13049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*  modified, and distributed under the terms of the FreeType project      */
14049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
15049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*  this file you indicate that you have read the license and              */
16049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*  understand and accept it fully.                                        */
17049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*                                                                         */
18049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/***************************************************************************/
19049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
20049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
21049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifndef __PSHINTS_H__
22049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define __PSHINTS_H__
23049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
24049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
25049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include <ft2build.h>
26049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include FT_FREETYPE_H
27049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include FT_TYPE1_TABLES_H
28049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
29049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
30049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source ProjectFT_BEGIN_HEADER
31049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
32049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
33049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
34049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
35049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*****                                                               *****/
36049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*****               INTERNAL REPRESENTATION OF GLOBALS              *****/
37049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*****                                                               *****/
38049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
39049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
40049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
41049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef struct PSH_GlobalsRec_*  PSH_Globals;
42049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
43049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef FT_Error
44049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  (*PSH_Globals_NewFunc)( FT_Memory     memory,
45049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                          T1_Private*   private_dict,
46049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                          PSH_Globals*  aglobals );
47049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
48049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef FT_Error
49049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  (*PSH_Globals_SetScaleFunc)( PSH_Globals  globals,
50049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                               FT_Fixed     x_scale,
51049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                               FT_Fixed     y_scale,
52049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                               FT_Fixed     x_delta,
53049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                               FT_Fixed     y_delta );
54049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
55049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef void
56049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  (*PSH_Globals_DestroyFunc)( PSH_Globals  globals );
57049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
58049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
59049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef struct  PSH_Globals_FuncsRec_
60049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  {
61049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    PSH_Globals_NewFunc       create;
62049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    PSH_Globals_SetScaleFunc  set_scale;
63049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    PSH_Globals_DestroyFunc   destroy;
64049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
65049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  } PSH_Globals_FuncsRec, *PSH_Globals_Funcs;
66049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
67049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
68049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
69049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
70049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*****                                                               *****/
71049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*****                  PUBLIC TYPE 1 HINTS RECORDER                 *****/
72049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*****                                                               *****/
73049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
74049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
75049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
76049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************
77049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
78049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @type:
79049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   T1_Hints
80049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
81049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @description:
82049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   This is a handle to an opaque structure used to record glyph hints
83049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   from a Type 1 character glyph character string.
84049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
85049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   The methods used to operate on this object are defined by the
86049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   @T1_Hints_FuncsRec structure.  Recording glyph hints is normally
87049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   achieved through the following scheme:
88049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
89049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   - Open a new hint recording session by calling the `open' method.
90049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     This rewinds the recorder and prepare it for new input.
91049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
92049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   - For each hint found in the glyph charstring, call the corresponding
93049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     method (`stem', `stem3', or `reset').  Note that these functions do
94049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     not return an error code.
95049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
96049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   - Close the recording session by calling the `close' method.  It
97049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     returns an error code if the hints were invalid or something
98049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     strange happened (e.g., memory shortage).
99049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
100049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   The hints accumulated in the object can later be used by the
101049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   PostScript hinter.
102049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
103049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   */
104049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef struct T1_HintsRec_*  T1_Hints;
105049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
106049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
107049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************
108049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
109049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @type:
110049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   T1_Hints_Funcs
111049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
112049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @description:
113049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   A pointer to the @T1_Hints_FuncsRec structure that defines the API of
114049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   a given @T1_Hints object.
115049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
116049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   */
117049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef const struct T1_Hints_FuncsRec_*  T1_Hints_Funcs;
118049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
119049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
120049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************
121049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
122049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @functype:
123049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   T1_Hints_OpenFunc
124049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
125049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @description:
126049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   A method of the @T1_Hints class used to prepare it for a new Type 1
127049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   hints recording session.
128049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
129049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @input:
130049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   hints ::
131049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     A handle to the Type 1 hints recorder.
132049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
133049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @note:
134049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   You should always call the @T1_Hints_CloseFunc method in order to
135049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   close an opened recording session.
136049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
137049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   */
138049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef void
139049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  (*T1_Hints_OpenFunc)( T1_Hints  hints );
140049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
141049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
142049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************
143049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
144049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @functype:
145049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   T1_Hints_SetStemFunc
146049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
147049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @description:
148049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   A method of the @T1_Hints class used to record a new horizontal or
149049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   vertical stem.  This corresponds to the Type 1 `hstem' and `vstem'
150049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   operators.
151049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
152049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @input:
153049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   hints ::
154049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     A handle to the Type 1 hints recorder.
155049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
156049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   dimension ::
157049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     0 for horizontal stems (hstem), 1 for vertical ones (vstem).
158049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
159049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   coords ::
160295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner   *     Array of 2 coordinates in 16.16 format, used as (position,length)
161295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner   *     stem descriptor.
162049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
163049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @note:
164049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   Use vertical coordinates (y) for horizontal stems (dim=0).  Use
165049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   horizontal coordinates (x) for vertical stems (dim=1).
166049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
167049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   `coords[0]' is the absolute stem position (lowest coordinate);
168049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   `coords[1]' is the length.
169049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
170049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   The length can be negative, in which case it must be either -20 or
171049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   -21.  It is interpreted as a `ghost' stem, according to the Type 1
172049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   specification.
173049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
174049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   If the length is -21 (corresponding to a bottom ghost stem), then
175049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   the real stem position is `coords[0]+coords[1]'.
176049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
177049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   */
178049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef void
179295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner  (*T1_Hints_SetStemFunc)( T1_Hints   hints,
180295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner                           FT_UInt    dimension,
181295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner                           FT_Fixed*  coords );
182049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
183049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
184049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************
185049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
186049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @functype:
187049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   T1_Hints_SetStem3Func
188049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
189049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @description:
190049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   A method of the @T1_Hints class used to record three
191049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   counter-controlled horizontal or vertical stems at once.
192049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
193049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @input:
194049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   hints ::
195049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     A handle to the Type 1 hints recorder.
196049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
197049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   dimension ::
198049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     0 for horizontal stems, 1 for vertical ones.
199049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
200049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   coords ::
201295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner   *     An array of 6 values in 16.16 format, holding 3 (position,length)
202295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner   *     pairs for the counter-controlled stems.
203049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
204049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @note:
205049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   Use vertical coordinates (y) for horizontal stems (dim=0).  Use
206049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   horizontal coordinates (x) for vertical stems (dim=1).
207049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
208049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   The lengths cannot be negative (ghost stems are never
209049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   counter-controlled).
210049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
211049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   */
212049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef void
213295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner  (*T1_Hints_SetStem3Func)( T1_Hints   hints,
214295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner                            FT_UInt    dimension,
215295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner                            FT_Fixed*  coords );
216049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
217049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
218049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************
219049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
220049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @functype:
221049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   T1_Hints_ResetFunc
222049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
223049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @description:
224049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   A method of the @T1_Hints class used to reset the stems hints in a
225049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   recording session.
226049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
227049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @input:
228049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   hints ::
229049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     A handle to the Type 1 hints recorder.
230049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
231049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   end_point ::
232049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     The index of the last point in the input glyph in which the
233049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     previously defined hints apply.
234049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
235049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   */
236049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef void
237049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  (*T1_Hints_ResetFunc)( T1_Hints  hints,
238049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                         FT_UInt   end_point );
239049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
240049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
241049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************
242049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
243049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @functype:
244049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   T1_Hints_CloseFunc
245049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
246049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @description:
247049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   A method of the @T1_Hints class used to close a hint recording
248049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   session.
249049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
250049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @input:
251049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   hints ::
252049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     A handle to the Type 1 hints recorder.
253049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
254049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   end_point ::
255049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     The index of the last point in the input glyph.
256049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
257049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @return:
258049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   FreeType error code.  0 means success.
259049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
260049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @note:
261049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   The error code is set to indicate that an error occurred during the
262049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   recording session.
263049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
264049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   */
265049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef FT_Error
266049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  (*T1_Hints_CloseFunc)( T1_Hints  hints,
267049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                         FT_UInt   end_point );
268049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
269049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
270049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************
271049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
272049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @functype:
273049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   T1_Hints_ApplyFunc
274049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
275049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @description:
276049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   A method of the @T1_Hints class used to apply hints to the
277049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   corresponding glyph outline.  Must be called once all hints have been
278049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   recorded.
279049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
280049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @input:
281049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   hints ::
282049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     A handle to the Type 1 hints recorder.
283049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
284049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   outline ::
285049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     A pointer to the target outline descriptor.
286049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
287049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   globals ::
288049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     The hinter globals for this font.
289049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
290049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   hint_mode ::
291049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     Hinting information.
292049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
293049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @return:
294049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   FreeType error code.  0 means success.
295049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
296049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @note:
297049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   On input, all points within the outline are in font coordinates. On
298049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   output, they are in 1/64th of pixels.
299049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
300049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   The scaling transformation is taken from the `globals' object which
301049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   must correspond to the same font as the glyph.
302049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
303049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   */
304049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef FT_Error
305049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  (*T1_Hints_ApplyFunc)( T1_Hints        hints,
306049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                         FT_Outline*     outline,
307049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                         PSH_Globals     globals,
308049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                         FT_Render_Mode  hint_mode );
309049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
310049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
311049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************
312049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
313049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @struct:
314049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   T1_Hints_FuncsRec
315049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
316049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @description:
317049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   The structure used to provide the API to @T1_Hints objects.
318049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
319049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @fields:
320049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   hints ::
321049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     A handle to the T1 Hints recorder.
322049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
323049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   open ::
324049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     The function to open a recording session.
325049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
326049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   close ::
327049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     The function to close a recording session.
328049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
329049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   stem ::
330049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     The function to set a simple stem.
331049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
332049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   stem3 ::
333049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     The function to set counter-controlled stems.
334049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
335049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   reset ::
336049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     The function to reset stem hints.
337049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
338049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   apply ::
339049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     The function to apply the hints to the corresponding glyph outline.
340049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
341049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   */
342049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef struct  T1_Hints_FuncsRec_
343049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  {
344049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    T1_Hints               hints;
345049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    T1_Hints_OpenFunc      open;
346049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    T1_Hints_CloseFunc     close;
347049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    T1_Hints_SetStemFunc   stem;
348049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    T1_Hints_SetStem3Func  stem3;
349049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    T1_Hints_ResetFunc     reset;
350049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    T1_Hints_ApplyFunc     apply;
351049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
352049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  } T1_Hints_FuncsRec;
353049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
354049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
355049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
356049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
357049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*****                                                               *****/
358049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*****                  PUBLIC TYPE 2 HINTS RECORDER                 *****/
359049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*****                                                               *****/
360049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
361049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
362049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
363049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************
364049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
365049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @type:
366049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   T2_Hints
367049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
368049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @description:
369049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   This is a handle to an opaque structure used to record glyph hints
370049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   from a Type 2 character glyph character string.
371049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
372049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   The methods used to operate on this object are defined by the
373049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   @T2_Hints_FuncsRec structure.  Recording glyph hints is normally
374049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   achieved through the following scheme:
375049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
376049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   - Open a new hint recording session by calling the `open' method.
377049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     This rewinds the recorder and prepare it for new input.
378049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
379049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   - For each hint found in the glyph charstring, call the corresponding
380049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     method (`stems', `hintmask', `counters').  Note that these
381049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     functions do not return an error code.
382049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
383049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   - Close the recording session by calling the `close' method.  It
384049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     returns an error code if the hints were invalid or something
385049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     strange happened (e.g., memory shortage).
386049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
387049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   The hints accumulated in the object can later be used by the
388049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   Postscript hinter.
389049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
390049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   */
391049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef struct T2_HintsRec_*  T2_Hints;
392049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
393049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
394049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************
395049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
396049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @type:
397049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   T2_Hints_Funcs
398049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
399049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @description:
400049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   A pointer to the @T2_Hints_FuncsRec structure that defines the API of
401049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   a given @T2_Hints object.
402049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
403049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   */
404049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef const struct T2_Hints_FuncsRec_*  T2_Hints_Funcs;
405049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
406049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
407049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************
408049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
409049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @functype:
410049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   T2_Hints_OpenFunc
411049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
412049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @description:
413049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   A method of the @T2_Hints class used to prepare it for a new Type 2
414049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   hints recording session.
415049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
416049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @input:
417049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   hints ::
418049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     A handle to the Type 2 hints recorder.
419049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
420049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @note:
421049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   You should always call the @T2_Hints_CloseFunc method in order to
422049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   close an opened recording session.
423049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
424049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   */
425049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef void
426049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  (*T2_Hints_OpenFunc)( T2_Hints  hints );
427049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
428049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
429049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************
430049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
431049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @functype:
432049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   T2_Hints_StemsFunc
433049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
434049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @description:
435049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   A method of the @T2_Hints class used to set the table of stems in
436049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   either the vertical or horizontal dimension.  Equivalent to the
437049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   `hstem', `vstem', `hstemhm', and `vstemhm' Type 2 operators.
438049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
439049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @input:
440049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   hints ::
441049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     A handle to the Type 2 hints recorder.
442049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
443049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   dimension ::
444049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     0 for horizontal stems (hstem), 1 for vertical ones (vstem).
445049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
446049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   count ::
447049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     The number of stems.
448049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
449049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   coords ::
450295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner   *     An array of `count' (position,length) pairs in 16.16 format.
451049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
452049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @note:
453049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   Use vertical coordinates (y) for horizontal stems (dim=0).  Use
454049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   horizontal coordinates (x) for vertical stems (dim=1).
455049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
456049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   There are `2*count' elements in the `coords' array.  Each even
457049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   element is an absolute position in font units, each odd element is a
458049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   length in font units.
459049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
460049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   A length can be negative, in which case it must be either -20 or
461049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   -21.  It is interpreted as a `ghost' stem, according to the Type 1
462049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   specification.
463049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
464049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   */
465049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef void
466049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  (*T2_Hints_StemsFunc)( T2_Hints   hints,
467049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                         FT_UInt    dimension,
468049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                         FT_UInt    count,
469049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                         FT_Fixed*  coordinates );
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   * @functype:
475049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   T2_Hints_MaskFunc
476049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
477049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @description:
478049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   A method of the @T2_Hints class used to set a given hintmask (this
479049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   corresponds to the `hintmask' Type 2 operator).
480049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
481049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @input:
482049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   hints ::
483049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     A handle to the Type 2 hints recorder.
484049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
485049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   end_point ::
486049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     The glyph index of the last point to which the previously defined
487049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     or activated hints apply.
488049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
489049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   bit_count ::
490049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     The number of bits in the hint mask.
491049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
492049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   bytes ::
493049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     An array of bytes modelling the hint mask.
494049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
495049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @note:
496049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   If the hintmask starts the charstring (before any glyph point
497049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   definition), the value of `end_point' should be 0.
498049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
499049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   `bit_count' is the number of meaningful bits in the `bytes' array; it
500049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   must be equal to the total number of hints defined so far (i.e.,
501049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   horizontal+verticals).
502049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
503049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   The `bytes' array can come directly from the Type 2 charstring and
504049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   respects the same format.
505049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
506049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   */
507049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef void
508049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  (*T2_Hints_MaskFunc)( T2_Hints        hints,
509049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                        FT_UInt         end_point,
510049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                        FT_UInt         bit_count,
511049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                        const FT_Byte*  bytes );
512049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
513049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
514049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************
515049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
516049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @functype:
517049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   T2_Hints_CounterFunc
518049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
519049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @description:
520049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   A method of the @T2_Hints class used to set a given counter mask
521049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   (this corresponds to the `hintmask' Type 2 operator).
522049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
523049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @input:
524049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   hints ::
525049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     A handle to the Type 2 hints recorder.
526049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
527049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   end_point ::
528049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     A glyph index of the last point to which the previously defined or
529049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     active hints apply.
530049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
531049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   bit_count ::
532049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     The number of bits in the hint mask.
533049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
534049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   bytes ::
535049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     An array of bytes modelling the hint mask.
536049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
537049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @note:
538049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   If the hintmask starts the charstring (before any glyph point
539049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   definition), the value of `end_point' should be 0.
540049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
541049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   `bit_count' is the number of meaningful bits in the `bytes' array; it
542049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   must be equal to the total number of hints defined so far (i.e.,
543049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   horizontal+verticals).
544049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
545049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *    The `bytes' array can come directly from the Type 2 charstring and
546049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *    respects the same format.
547049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
548049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   */
549049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef void
550049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  (*T2_Hints_CounterFunc)( T2_Hints        hints,
551049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                           FT_UInt         bit_count,
552049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                           const FT_Byte*  bytes );
553049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
554049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
555049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************
556049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
557049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @functype:
558049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   T2_Hints_CloseFunc
559049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
560049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @description:
561049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   A method of the @T2_Hints class used to close a hint recording
562049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   session.
563049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
564049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @input:
565049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   hints ::
566049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     A handle to the Type 2 hints recorder.
567049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
568049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   end_point ::
569049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     The index of the last point in the input glyph.
570049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
571049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @return:
572049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   FreeType error code.  0 means success.
573049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
574049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @note:
575049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   The error code is set to indicate that an error occurred during the
576049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   recording session.
577049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
578049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   */
579049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef FT_Error
580049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  (*T2_Hints_CloseFunc)( T2_Hints  hints,
581049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                         FT_UInt   end_point );
582049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
583049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
584049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************
585049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
586049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @functype:
587049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   T2_Hints_ApplyFunc
588049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
589049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @description:
590049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   A method of the @T2_Hints class used to apply hints to the
591049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   corresponding glyph outline.  Must be called after the `close'
592049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   method.
593049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
594049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @input:
595049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   hints ::
596049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     A handle to the Type 2 hints recorder.
597049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
598049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   outline ::
599049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     A pointer to the target outline descriptor.
600049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
601049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   globals ::
602049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     The hinter globals for this font.
603049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
604049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   hint_mode ::
605049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     Hinting information.
606049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
607049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @return:
608049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   FreeType error code.  0 means success.
609049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
610049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @note:
611049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   On input, all points within the outline are in font coordinates. On
612049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   output, they are in 1/64th of pixels.
613049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
614049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   The scaling transformation is taken from the `globals' object which
615049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   must correspond to the same font than the glyph.
616049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
617049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   */
618049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef FT_Error
619049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  (*T2_Hints_ApplyFunc)( T2_Hints        hints,
620049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                         FT_Outline*     outline,
621049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                         PSH_Globals     globals,
622049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                         FT_Render_Mode  hint_mode );
623049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
624049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
625049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************
626049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
627049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @struct:
628049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   T2_Hints_FuncsRec
629049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
630049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @description:
631049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   The structure used to provide the API to @T2_Hints objects.
632049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
633049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @fields:
634049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   hints ::
635049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     A handle to the T2 hints recorder object.
636049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
637049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   open ::
638049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     The function to open a recording session.
639049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
640049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   close ::
641049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     The function to close a recording session.
642049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
643049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   stems ::
644049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     The function to set the dimension's stems table.
645049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
646049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   hintmask ::
647049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     The function to set hint masks.
648049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
649049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   counter ::
650049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     The function to set counter masks.
651049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
652049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   apply ::
653049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     The function to apply the hints on the corresponding glyph outline.
654049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
655049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   */
656049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef struct  T2_Hints_FuncsRec_
657049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  {
658049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    T2_Hints              hints;
659049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    T2_Hints_OpenFunc     open;
660049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    T2_Hints_CloseFunc    close;
661049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    T2_Hints_StemsFunc    stems;
662049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    T2_Hints_MaskFunc     hintmask;
663049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    T2_Hints_CounterFunc  counter;
664049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    T2_Hints_ApplyFunc    apply;
665049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
666049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  } T2_Hints_FuncsRec;
667049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
668049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
669049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* */
670049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
671049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
672049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef struct  PSHinter_Interface_
673049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  {
674049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    PSH_Globals_Funcs  (*get_globals_funcs)( FT_Module  module );
675049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    T1_Hints_Funcs     (*get_t1_funcs)     ( FT_Module  module );
676049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    T2_Hints_Funcs     (*get_t2_funcs)     ( FT_Module  module );
677049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
678049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  } PSHinter_Interface;
679049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
680049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef PSHinter_Interface*  PSHinter_Service;
681049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
682727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease
683295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner#ifndef FT_CONFIG_OPTION_PIC
684295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner
685727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease#define FT_DEFINE_PSHINTER_INTERFACE(        \
686727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease          class_,                            \
687727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease          get_globals_funcs_,                \
688727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease          get_t1_funcs_,                     \
689727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease          get_t2_funcs_ )                    \
690727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease  static const PSHinter_Interface  class_ =  \
691727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease  {                                          \
692727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease    get_globals_funcs_,                      \
693727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease    get_t1_funcs_,                           \
694727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease    get_t2_funcs_                            \
695295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner  };
696295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner
69741371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier#else /* FT_CONFIG_OPTION_PIC */
698295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner
699727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease#define FT_DEFINE_PSHINTER_INTERFACE(                      \
700727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease          class_,                                          \
701727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease          get_globals_funcs_,                              \
702727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease          get_t1_funcs_,                                   \
703727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease          get_t2_funcs_ )                                  \
704727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease  void                                                     \
705727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease  FT_Init_Class_ ## class_( FT_Library           library,  \
706727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease                            PSHinter_Interface*  clazz )   \
707727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease  {                                                        \
708727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease    FT_UNUSED( library );                                  \
709727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease                                                           \
710727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease    clazz->get_globals_funcs = get_globals_funcs_;         \
711727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease    clazz->get_t1_funcs      = get_t1_funcs_;              \
712727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease    clazz->get_t2_funcs      = get_t2_funcs_;              \
71341371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier  }
714295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner
71541371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier#endif /* FT_CONFIG_OPTION_PIC */
716049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
717049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source ProjectFT_END_HEADER
718049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
719049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif /* __PSHINTS_H__ */
720049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
721049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
722049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* END */
723