1049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/***************************************************************************/
2049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*                                                                         */
3049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*  fttypes.h                                                              */
4049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*                                                                         */
5049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*    FreeType simple types definitions (specification only).              */
6049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*                                                                         */
7a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang/*  Copyright 1996-2002, 2004, 2006-2009, 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 __FTTYPES_H__
20049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define __FTTYPES_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_CONFIG_CONFIG_H
25049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include FT_SYSTEM_H
26049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include FT_IMAGE_H
27049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
28049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include <stddef.h>
29049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
30049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
31049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source ProjectFT_BEGIN_HEADER
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  /* <Section>                                                             */
37049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    basic_types                                                        */
38049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
39049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Title>                                                               */
40049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    Basic Data Types                                                   */
41049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
42049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Abstract>                                                            */
43049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    The basic data types defined by the library.                       */
44049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
45049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Description>                                                         */
460a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project  /*    This section contains the basic data types defined by FreeType~2,  */
47049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    ranging from simple scalar types to bitmap descriptors.  More      */
48049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    font-specific structures are defined in a different section.       */
49049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
50049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Order>                                                               */
51049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_Byte                                                            */
52049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_Bytes                                                           */
53049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_Char                                                            */
54049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_Int                                                             */
55049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_UInt                                                            */
56049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_Int16                                                           */
57049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_UInt16                                                          */
58049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_Int32                                                           */
59049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_UInt32                                                          */
60049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_Short                                                           */
61049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_UShort                                                          */
62049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_Long                                                            */
63049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_ULong                                                           */
64049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_Bool                                                            */
65049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_Offset                                                          */
66049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_PtrDist                                                         */
67049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_String                                                          */
68049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_Tag                                                             */
69049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_Error                                                           */
70049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_Fixed                                                           */
71049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_Pointer                                                         */
72049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_Pos                                                             */
73049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_Vector                                                          */
74049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_BBox                                                            */
75049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_Matrix                                                          */
76049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_FWord                                                           */
77049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_UFWord                                                          */
78049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_F2Dot14                                                         */
79049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_UnitVector                                                      */
80049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_F26Dot6                                                         */
81049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
82049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
83049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_Generic                                                         */
84049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_Generic_Finalizer                                               */
85049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
86049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_Bitmap                                                          */
87049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_Pixel_Mode                                                      */
88049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_Palette_Mode                                                    */
89049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_Glyph_Format                                                    */
90049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_IMAGE_TAG                                                       */
91049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
92049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
93049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
94049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
95049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
96049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
97049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Type>                                                                */
98049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_Bool                                                            */
99049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
100049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Description>                                                         */
101049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    A typedef of unsigned char, used for simple booleans.  As usual,   */
1020a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project  /*    values 1 and~0 represent true and false, respectively.             */
103049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
104049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef unsigned char  FT_Bool;
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  /*    FT_FWord                                                           */
111049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
112049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Description>                                                         */
113049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    A signed 16-bit integer used to store a distance in original font  */
114049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    units.                                                             */
115049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
116049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef signed short  FT_FWord;   /* distance in FUnits */
117049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
118049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
119049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
120049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
121049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Type>                                                                */
122049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_UFWord                                                          */
123049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
124049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Description>                                                         */
125049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    An unsigned 16-bit integer used to store a distance in original    */
126049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    font units.                                                        */
127049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
128049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef unsigned short  FT_UFWord;  /* unsigned distance */
129049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
130049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
131049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
132049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
133049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Type>                                                                */
134049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_Char                                                            */
135049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
136049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Description>                                                         */
137049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    A simple typedef for the _signed_ char type.                       */
138049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
139049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef signed char  FT_Char;
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  /* <Type>                                                                */
145049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_Byte                                                            */
146049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
147049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Description>                                                         */
148049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    A simple typedef for the _unsigned_ char type.                     */
149049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
150049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef unsigned char  FT_Byte;
151049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
152049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
153049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
154049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
155049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Type>                                                                */
156049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_Bytes                                                           */
157049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
158049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Description>                                                         */
159049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    A typedef for constant memory areas.                               */
160049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
161049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef const FT_Byte*  FT_Bytes;
162049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
163049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
164049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
165049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
166049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Type>                                                                */
167049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_Tag                                                             */
168049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
169049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Description>                                                         */
170aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich  /*    A typedef for 32-bit tags (as used in the SFNT format).            */
171049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
172049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef FT_UInt32  FT_Tag;
173049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
174049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
175049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
176049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
177049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Type>                                                                */
178049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_String                                                          */
179049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
180049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Description>                                                         */
181049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    A simple typedef for the char type, usually used for strings.      */
182049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
183049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef char  FT_String;
184049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
185049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
186049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
187049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
188049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Type>                                                                */
189049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_Short                                                           */
190049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
191049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Description>                                                         */
192049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    A typedef for signed short.                                        */
193049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
194049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef signed short  FT_Short;
195049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
196049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
197049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
198049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
199049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Type>                                                                */
200049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_UShort                                                          */
201049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
202049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Description>                                                         */
203049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    A typedef for unsigned short.                                      */
204049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
205049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef unsigned short  FT_UShort;
206049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
207049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
208049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
209049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
210049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Type>                                                                */
211049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_Int                                                             */
212049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
213049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Description>                                                         */
214049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    A typedef for the int type.                                        */
215049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
216049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef signed int  FT_Int;
217049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
218049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
219049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
220049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
221049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Type>                                                                */
222049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_UInt                                                            */
223049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
224049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Description>                                                         */
225049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    A typedef for the unsigned int type.                               */
226049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
227049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef unsigned int  FT_UInt;
228049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
229049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
230049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
231049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
232049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Type>                                                                */
233049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_Long                                                            */
234049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
235049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Description>                                                         */
236049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    A typedef for signed long.                                         */
237049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
238049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef signed long  FT_Long;
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  /* <Type>                                                                */
244049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_ULong                                                           */
245049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
246049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Description>                                                         */
247049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    A typedef for unsigned long.                                       */
248049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
249049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef unsigned long  FT_ULong;
250049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
251049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
252049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
253049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
254049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Type>                                                                */
255049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_F2Dot14                                                         */
256049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
257049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Description>                                                         */
258a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang  /*    A signed 2.14 fixed-point type used for unit vectors.              */
259049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
260049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef signed short  FT_F2Dot14;
261049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
262049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
263049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
264049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
265049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Type>                                                                */
266049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_F26Dot6                                                         */
267049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
268049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Description>                                                         */
269a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang  /*    A signed 26.6 fixed-point type used for vectorial pixel            */
270049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    coordinates.                                                       */
271049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
272049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef signed long  FT_F26Dot6;
273049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
274049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
275049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
276049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
277049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Type>                                                                */
278049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_Fixed                                                           */
279049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
280049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Description>                                                         */
281a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang  /*    This type is used to store 16.16 fixed-point values, like scaling  */
282049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    values or matrix coefficients.                                     */
283049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
284049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef signed long  FT_Fixed;
285049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
286049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
287049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
288049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
289049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Type>                                                                */
290049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_Error                                                           */
291049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
292049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Description>                                                         */
2930a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project  /*    The FreeType error code type.  A value of~0 is always interpreted  */
294049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    as a successful operation.                                         */
295049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
296049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef int  FT_Error;
297049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
298049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
299049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
300049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
301049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Type>                                                                */
302049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_Pointer                                                         */
303049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
304049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Description>                                                         */
305049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    A simple typedef for a typeless pointer.                           */
306049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
307049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef void*  FT_Pointer;
308049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
309049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
310049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
311049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
312049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Type>                                                                */
313049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_Offset                                                          */
314049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
315049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Description>                                                         */
3160a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project  /*    This is equivalent to the ANSI~C `size_t' type, i.e., the largest  */
317049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    _unsigned_ integer type used to express a file size or position,   */
318049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    or a memory block size.                                            */
319049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
320049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef size_t  FT_Offset;
321049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
322049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
323049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
324049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
325049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Type>                                                                */
326049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_PtrDist                                                         */
327049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
328049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Description>                                                         */
3290a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project  /*    This is equivalent to the ANSI~C `ptrdiff_t' type, i.e., the       */
330049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    largest _signed_ integer type used to express the distance         */
331049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    between two pointers.                                              */
332049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
333049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef ft_ptrdiff_t  FT_PtrDist;
334049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
335049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
336049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
337049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
338049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Struct>                                                              */
339049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_UnitVector                                                      */
340049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
341049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Description>                                                         */
342049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    A simple structure used to store a 2D vector unit vector.  Uses    */
343049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_F2Dot14 types.                                                  */
344049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
345049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Fields>                                                              */
346049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    x :: Horizontal coordinate.                                        */
347049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
348049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    y :: Vertical coordinate.                                          */
349049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
350049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef struct  FT_UnitVector_
351049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  {
352049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_F2Dot14  x;
353049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_F2Dot14  y;
354049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
355049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  } FT_UnitVector;
356049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
357049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
358049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
359049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
360049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Struct>                                                              */
361049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_Matrix                                                          */
362049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
363049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Description>                                                         */
364049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    A simple structure used to store a 2x2 matrix.  Coefficients are   */
365a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang  /*    in 16.16 fixed-point format.  The computation performed is:        */
366049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
367049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*       {                                                               */
368049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*          x' = x*xx + y*xy                                             */
369049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*          y' = x*yx + y*yy                                             */
370049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*       }                                                               */
371049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
372049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Fields>                                                              */
373049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    xx :: Matrix coefficient.                                          */
374049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
375049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    xy :: Matrix coefficient.                                          */
376049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
377049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    yx :: Matrix coefficient.                                          */
378049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
379049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    yy :: Matrix coefficient.                                          */
380049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
381049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef struct  FT_Matrix_
382049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  {
383049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_Fixed  xx, xy;
384049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_Fixed  yx, yy;
385049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
386049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  } FT_Matrix;
387049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
388049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
389049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
390049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
391049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Struct>                                                              */
392049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_Data                                                            */
393049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
394049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Description>                                                         */
395049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    Read-only binary data represented as a pointer and a length.       */
396049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
397049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Fields>                                                              */
398049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    pointer :: The data.                                               */
399049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
400049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    length  :: The length of the data in bytes.                        */
401049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
402049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef struct  FT_Data_
403049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  {
404049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    const FT_Byte*  pointer;
405049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_Int          length;
406049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
407049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  } FT_Data;
408049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
409049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
410049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
411049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
412049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <FuncType>                                                            */
413049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_Generic_Finalizer                                               */
414049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
415049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Description>                                                         */
4160a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project  /*    Describe a function used to destroy the `client' data of any       */
417049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FreeType object.  See the description of the @FT_Generic type for  */
418049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    details of usage.                                                  */
419049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
420049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Input>                                                               */
421049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    The address of the FreeType object which is under finalization.    */
422049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    Its client data is accessed through its `generic' field.           */
423049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
424049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef void  (*FT_Generic_Finalizer)(void*  object);
425049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
426049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
427049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
428049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
429049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Struct>                                                              */
430049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_Generic                                                         */
431049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
432049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Description>                                                         */
433049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    Client applications often need to associate their own data to a    */
434049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    variety of FreeType core objects.  For example, a text layout API  */
435049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    might want to associate a glyph cache to a given size object.      */
436049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
437e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang  /*    Some FreeType object contains a `generic' field, of type           */
438049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_Generic, which usage is left to client applications and font    */
439049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    servers.                                                           */
440049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
441049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    It can be used to store a pointer to client-specific data, as well */
442049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    as the address of a `finalizer' function, which will be called by  */
443049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FreeType when the object is destroyed (for example, the previous   */
444049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    client example would put the address of the glyph cache destructor */
445049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    in the `finalizer' field).                                         */
446049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
447049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Fields>                                                              */
448049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    data      :: A typeless pointer to any client-specified data. This */
449049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                 field is completely ignored by the FreeType library.  */
450049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
451049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    finalizer :: A pointer to a `generic finalizer' function, which    */
452049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                 will be called when the object is destroyed.  If this */
453049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                 field is set to NULL, no code will be called.         */
454049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
455049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef struct  FT_Generic_
456049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  {
457049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    void*                 data;
458049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_Generic_Finalizer  finalizer;
459049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
460049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  } FT_Generic;
461049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
462049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
463049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
464049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
465049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Macro>                                                               */
466049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_MAKE_TAG                                                        */
467049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
468049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Description>                                                         */
469049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    This macro converts four-letter tags which are used to label       */
470049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    TrueType tables into an unsigned long to be used within FreeType.  */
471049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
472049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Note>                                                                */
4730a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project  /*    The produced values *must* be 32-bit integers.  Don't redefine     */
4740a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project  /*    this macro.                                                        */
475049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
476049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_MAKE_TAG( _x1, _x2, _x3, _x4 ) \
477295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner          (FT_Tag)                        \
478049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project          ( ( (FT_ULong)_x1 << 24 ) |     \
479049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project            ( (FT_ULong)_x2 << 16 ) |     \
480049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project            ( (FT_ULong)_x3 <<  8 ) |     \
481049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project              (FT_ULong)_x4         )
482049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
483049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
484049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
485049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
486049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
487049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                    L I S T   M A N A G E M E N T                      */
488049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
489049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
490049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
491049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
492049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
493049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
494049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
495049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Section>                                                             */
496049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    list_processing                                                    */
497049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
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  /*                                                                       */
503049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Type>                                                                */
504049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_ListNode                                                        */
505049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
506049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Description>                                                         */
507049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*     Many elements and objects in FreeType are listed through an       */
508049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*     @FT_List record (see @FT_ListRec).  As its name suggests, an      */
509049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*     FT_ListNode is a handle to a single list element.                 */
510049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
511049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef struct FT_ListNodeRec_*  FT_ListNode;
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  /* <Type>                                                                */
517049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_List                                                            */
518049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
519049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Description>                                                         */
520049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    A handle to a list record (see @FT_ListRec).                       */
521049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
522049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef struct FT_ListRec_*  FT_List;
523049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
524049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
525049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
526049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
527049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Struct>                                                              */
528049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_ListNodeRec                                                     */
529049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
530049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Description>                                                         */
531049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    A structure used to hold a single list element.                    */
532049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
533049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Fields>                                                              */
534049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    prev :: The previous element in the list.  NULL if first.          */
535049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
536049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    next :: The next element in the list.  NULL if last.               */
537049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
538049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    data :: A typeless pointer to the listed object.                   */
539049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
540049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef struct  FT_ListNodeRec_
541049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  {
542049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_ListNode  prev;
543049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_ListNode  next;
544049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    void*        data;
545049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
546049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  } FT_ListNodeRec;
547049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
548049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
549049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
550049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
551049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Struct>                                                              */
552049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_ListRec                                                         */
553049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
554049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Description>                                                         */
555049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    A structure used to hold a simple doubly-linked list.  These are   */
556049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    used in many parts of FreeType.                                    */
557049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
558049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Fields>                                                              */
559049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    head :: The head (first element) of doubly-linked list.            */
560049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
561049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    tail :: The tail (last element) of doubly-linked list.             */
562049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
563049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef struct  FT_ListRec_
564049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  {
565049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_ListNode  head;
566049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_ListNode  tail;
567049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
568049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  } FT_ListRec;
569049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
570049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
571049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* */
572049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
573049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_IS_EMPTY( list )  ( (list).head == 0 )
574a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang#define FT_BOOL( x )  ( (FT_Bool)( x ) )
575049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
576a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang  /* concatenate C tokens */
577a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang#define FT_ERR_XCAT( x, y )  x ## y
578a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang#define FT_ERR_CAT( x, y )   FT_ERR_XCAT( x, y )
579a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang
580a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang  /* see `ftmoderr.h' for descriptions of the following macros */
581a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang
582a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang#define FT_ERR( e )  FT_ERR_CAT( FT_ERR_PREFIX, e )
583049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
584a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang#define FT_ERROR_BASE( x )    ( (x) & 0xFF )
585049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_ERROR_MODULE( x )  ( (x) & 0xFF00U )
586049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
587a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang#define FT_ERR_EQ( x, e )                                        \
588a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang          ( FT_ERROR_BASE( x ) == FT_ERROR_BASE( FT_ERR( e ) ) )
589a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang#define FT_ERR_NEQ( x, e )                                       \
590a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang          ( FT_ERROR_BASE( x ) != FT_ERROR_BASE( FT_ERR( e ) ) )
591a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang
592049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
593049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source ProjectFT_END_HEADER
594049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
595049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif /* __FTTYPES_H__ */
596049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
597049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
598049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* END */
599