tizen 2.3.1 release
[framework/graphics/freetype.git] / include / ftbdf.h
1 /***************************************************************************/
2 /*                                                                         */
3 /*  ftbdf.h                                                                */
4 /*                                                                         */
5 /*    FreeType API for accessing BDF-specific strings (specification).     */
6 /*                                                                         */
7 /*  Copyright 2002-2004, 2006, 2009, 2014 by                               */
8 /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
9 /*                                                                         */
10 /*  This file is part of the FreeType project, and may only be used,       */
11 /*  modified, and distributed under the terms of the FreeType project      */
12 /*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
13 /*  this file you indicate that you have read the license and              */
14 /*  understand and accept it fully.                                        */
15 /*                                                                         */
16 /***************************************************************************/
17
18
19 #ifndef __FTBDF_H__
20 #define __FTBDF_H__
21
22 #include <ft2build.h>
23 #include FT_FREETYPE_H
24
25 #ifdef FREETYPE_H
26 #error "freetype.h of FreeType 1 has been loaded!"
27 #error "Please fix the directory search order for header files"
28 #error "so that freetype.h of FreeType 2 is found first."
29 #endif
30
31
32 FT_BEGIN_HEADER
33
34
35   /*************************************************************************/
36   /*                                                                       */
37   /* <Section>                                                             */
38   /*    bdf_fonts                                                          */
39   /*                                                                       */
40   /* <Title>                                                               */
41   /*    BDF and PCF Files                                                  */
42   /*                                                                       */
43   /* <Abstract>                                                            */
44   /*    BDF and PCF specific API.                                          */
45   /*                                                                       */
46   /* <Description>                                                         */
47   /*    This section contains the declaration of functions specific to BDF */
48   /*    and PCF fonts.                                                     */
49   /*                                                                       */
50   /*************************************************************************/
51
52
53   /**********************************************************************
54    *
55    * @enum:
56    *    BDF_PropertyType
57    *
58    * @description:
59    *    A list of BDF property types.
60    *
61    * @values:
62    *    BDF_PROPERTY_TYPE_NONE ::
63    *      Value~0 is used to indicate a missing property.
64    *
65    *    BDF_PROPERTY_TYPE_ATOM ::
66    *      Property is a string atom.
67    *
68    *    BDF_PROPERTY_TYPE_INTEGER ::
69    *      Property is a 32-bit signed integer.
70    *
71    *    BDF_PROPERTY_TYPE_CARDINAL ::
72    *      Property is a 32-bit unsigned integer.
73    */
74   typedef enum  BDF_PropertyType_
75   {
76     BDF_PROPERTY_TYPE_NONE     = 0,
77     BDF_PROPERTY_TYPE_ATOM     = 1,
78     BDF_PROPERTY_TYPE_INTEGER  = 2,
79     BDF_PROPERTY_TYPE_CARDINAL = 3
80
81   } BDF_PropertyType;
82
83
84   /**********************************************************************
85    *
86    * @type:
87    *    BDF_Property
88    *
89    * @description:
90    *    A handle to a @BDF_PropertyRec structure to model a given
91    *    BDF/PCF property.
92    */
93   typedef struct BDF_PropertyRec_*  BDF_Property;
94
95
96  /**********************************************************************
97   *
98   * @struct:
99   *    BDF_PropertyRec
100   *
101   * @description:
102   *    This structure models a given BDF/PCF property.
103   *
104   * @fields:
105   *    type ::
106   *      The property type.
107   *
108   *    u.atom ::
109   *      The atom string, if type is @BDF_PROPERTY_TYPE_ATOM.  May be
110   *      NULL, indicating an empty string.
111   *
112   *    u.integer ::
113   *      A signed integer, if type is @BDF_PROPERTY_TYPE_INTEGER.
114   *
115   *    u.cardinal ::
116   *      An unsigned integer, if type is @BDF_PROPERTY_TYPE_CARDINAL.
117   */
118   typedef struct  BDF_PropertyRec_
119   {
120     BDF_PropertyType  type;
121     union {
122       const char*     atom;
123       FT_Int32        integer;
124       FT_UInt32       cardinal;
125
126     } u;
127
128   } BDF_PropertyRec;
129
130
131  /**********************************************************************
132   *
133   * @function:
134   *    FT_Get_BDF_Charset_ID
135   *
136   * @description:
137   *    Retrieve a BDF font character set identity, according to
138   *    the BDF specification.
139   *
140   * @input:
141   *    face ::
142   *       A handle to the input face.
143   *
144   * @output:
145   *    acharset_encoding ::
146   *       Charset encoding, as a C~string, owned by the face.
147   *
148   *    acharset_registry ::
149   *       Charset registry, as a C~string, owned by the face.
150   *
151   * @return:
152   *   FreeType error code.  0~means success.
153   *
154   * @note:
155   *   This function only works with BDF faces, returning an error otherwise.
156   */
157   FT_EXPORT( FT_Error )
158   FT_Get_BDF_Charset_ID( FT_Face       face,
159                          const char*  *acharset_encoding,
160                          const char*  *acharset_registry );
161
162
163  /**********************************************************************
164   *
165   * @function:
166   *    FT_Get_BDF_Property
167   *
168   * @description:
169   *    Retrieve a BDF property from a BDF or PCF font file.
170   *
171   * @input:
172   *    face :: A handle to the input face.
173   *
174   *    name :: The property name.
175   *
176   * @output:
177   *    aproperty :: The property.
178   *
179   * @return:
180   *   FreeType error code.  0~means success.
181   *
182   * @note:
183   *   This function works with BDF _and_ PCF fonts.  It returns an error
184   *   otherwise.  It also returns an error if the property is not in the
185   *   font.
186   *
187   *   A `property' is a either key-value pair within the STARTPROPERTIES
188   *   ... ENDPROPERTIES block of a BDF font or a key-value pair from the
189   *   `info->props' array within a `FontRec' structure of a PCF font.
190   *
191   *   Integer properties are always stored as `signed' within PCF fonts;
192   *   consequently, @BDF_PROPERTY_TYPE_CARDINAL is a possible return value
193   *   for BDF fonts only.
194   *
195   *   In case of error, `aproperty->type' is always set to
196   *   @BDF_PROPERTY_TYPE_NONE.
197   */
198   FT_EXPORT( FT_Error )
199   FT_Get_BDF_Property( FT_Face           face,
200                        const char*       prop_name,
201                        BDF_PropertyRec  *aproperty );
202
203   /* */
204
205 FT_END_HEADER
206
207 #endif /* __FTBDF_H__ */
208
209
210 /* END */