1049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/***************************************************************************/
2049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*                                                                         */
3049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*  ftbdf.h                                                                */
4049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*                                                                         */
5049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*    FreeType API for accessing BDF-specific strings (specification).     */
6049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*                                                                         */
70a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project/*  Copyright 2002, 2003, 2004, 2006, 2009 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 __FTBDF_H__
20049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define __FTBDF_H__
21049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
22049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include <ft2build.h>
23049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include FT_FREETYPE_H
24049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
25049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifdef FREETYPE_H
26049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#error "freetype.h of FreeType 1 has been loaded!"
27049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#error "Please fix the directory search order for header files"
28049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#error "so that freetype.h of FreeType 2 is found first."
29049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif
30049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
31049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
32049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source ProjectFT_BEGIN_HEADER
33049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
34049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
35049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
36049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
37049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Section>                                                             */
38049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    bdf_fonts                                                          */
39049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
40049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Title>                                                               */
410a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project  /*    BDF and PCF Files                                                  */
42049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
43049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Abstract>                                                            */
440a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project  /*    BDF and PCF specific API.                                          */
45049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
46049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Description>                                                         */
470a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project  /*    This section contains the declaration of functions specific to BDF */
480a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project  /*    and PCF fonts.                                                     */
49049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
50049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
51049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
52049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
530a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project  /**********************************************************************
540a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project   *
550a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project   * @enum:
560a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project   *    FT_PropertyType
570a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project   *
580a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project   * @description:
590a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project   *    A list of BDF property types.
600a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project   *
610a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project   * @values:
620a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project   *    BDF_PROPERTY_TYPE_NONE ::
630a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project   *      Value~0 is used to indicate a missing property.
640a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project   *
650a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project   *    BDF_PROPERTY_TYPE_ATOM ::
660a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project   *      Property is a string atom.
670a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project   *
680a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project   *    BDF_PROPERTY_TYPE_INTEGER ::
690a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project   *      Property is a 32-bit signed integer.
700a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project   *
710a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project   *    BDF_PROPERTY_TYPE_CARDINAL ::
720a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project   *      Property is a 32-bit unsigned integer.
730a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project   */
74049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef enum  BDF_PropertyType_
75049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  {
76049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    BDF_PROPERTY_TYPE_NONE     = 0,
77049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    BDF_PROPERTY_TYPE_ATOM     = 1,
78049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    BDF_PROPERTY_TYPE_INTEGER  = 2,
79049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    BDF_PROPERTY_TYPE_CARDINAL = 3
80049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
81049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  } BDF_PropertyType;
82049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
83049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
840a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project  /**********************************************************************
850a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project   *
860a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project   * @type:
870a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project   *    BDF_Property
880a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project   *
890a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project   * @description:
900a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project   *    A handle to a @BDF_PropertyRec structure to model a given
910a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project   *    BDF/PCF property.
920a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project   */
93049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef struct BDF_PropertyRec_*  BDF_Property;
94049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
95049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
96049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /**********************************************************************
97049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
98049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  * @struct:
99049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    BDF_PropertyRec
100049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
101049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  * @description:
102049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    This structure models a given BDF/PCF property.
103049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
104049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  * @fields:
105049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    type ::
106049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *      The property type.
107049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
108049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    u.atom ::
109049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *      The atom string, if type is @BDF_PROPERTY_TYPE_ATOM.
110049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
111049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    u.integer ::
112049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *      A signed integer, if type is @BDF_PROPERTY_TYPE_INTEGER.
113049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
114049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    u.cardinal ::
115049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *      An unsigned integer, if type is @BDF_PROPERTY_TYPE_CARDINAL.
116049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  */
117049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef struct  BDF_PropertyRec_
118049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  {
119049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    BDF_PropertyType  type;
120049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    union {
121049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      const char*     atom;
122049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      FT_Int32        integer;
123049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      FT_UInt32       cardinal;
124049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
125049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    } u;
126049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
127049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  } BDF_PropertyRec;
128049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
129049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
130049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /**********************************************************************
131049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
132049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  * @function:
133049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    FT_Get_BDF_Charset_ID
134049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
135049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  * @description:
1360a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project  *    Retrieve a BDF font character set identity, according to
137049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    the BDF specification.
138049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
139049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  * @input:
140049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    face ::
141049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *       A handle to the input face.
142049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
143049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  * @output:
144049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    acharset_encoding ::
1450a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project  *       Charset encoding, as a C~string, owned by the face.
146049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
147049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    acharset_registry ::
1480a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project  *       Charset registry, as a C~string, owned by the face.
149049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
150049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  * @return:
1510a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project  *   FreeType error code.  0~means success.
152049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
153049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  * @note:
154049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *   This function only works with BDF faces, returning an error otherwise.
155049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  */
156049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_EXPORT( FT_Error )
157049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_Get_BDF_Charset_ID( FT_Face       face,
158049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                         const char*  *acharset_encoding,
159049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                         const char*  *acharset_registry );
160049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
161049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
162049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /**********************************************************************
163049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
164049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  * @function:
165049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    FT_Get_BDF_Property
166049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
167049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  * @description:
1680a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project  *    Retrieve a BDF property from a BDF or PCF font file.
169049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
170049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  * @input:
171049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    face :: A handle to the input face.
172049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
173049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    name :: The property name.
174049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
175049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  * @output:
176049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    aproperty :: The property.
177049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
178049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  * @return:
1790a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project  *   FreeType error code.  0~means success.
180049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
181049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  * @note:
182049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *   This function works with BDF _and_ PCF fonts.  It returns an error
183049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *   otherwise.  It also returns an error if the property is not in the
184049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *   font.
185049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
1860a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project  *   A `property' is a either key-value pair within the STARTPROPERTIES
1870a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project  *   ... ENDPROPERTIES block of a BDF font or a key-value pair from the
1880a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project  *   `info->props' array within a `FontRec' structure of a PCF font.
1890a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project  *
1900a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project  *   Integer properties are always stored as `signed' within PCF fonts;
1910a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project  *   consequently, @BDF_PROPERTY_TYPE_CARDINAL is a possible return value
1920a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project  *   for BDF fonts only.
1930a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project  *
194049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *   In case of error, `aproperty->type' is always set to
195049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *   @BDF_PROPERTY_TYPE_NONE.
196049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  */
197049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_EXPORT( FT_Error )
198049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_Get_BDF_Property( FT_Face           face,
199049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                       const char*       prop_name,
200049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                       BDF_PropertyRec  *aproperty );
201049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
202049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */
203049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
204049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source ProjectFT_END_HEADER
205049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
206049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif /* __FTBDF_H__ */
207049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
208049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
209049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* END */
210