]>
Commit | Line | Data |
---|---|---|
7407ac7f BB |
1 | /***************************************************************************/ |
2 | /* */ | |
3 | /* ftbdf.h */ | |
4 | /* */ | |
5 | /* FreeType API for accessing BDF-specific strings (specification). */ | |
6 | /* */ | |
7 | /* Copyright 2002, 2003, 2004, 2006, 2009 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 | * FT_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. | |
110 | * | |
111 | * u.integer :: | |
112 | * A signed integer, if type is @BDF_PROPERTY_TYPE_INTEGER. | |
113 | * | |
114 | * u.cardinal :: | |
115 | * An unsigned integer, if type is @BDF_PROPERTY_TYPE_CARDINAL. | |
116 | */ | |
117 | typedef struct BDF_PropertyRec_ | |
118 | { | |
119 | BDF_PropertyType type; | |
120 | union { | |
121 | const char* atom; | |
122 | FT_Int32 integer; | |
123 | FT_UInt32 cardinal; | |
124 | ||
125 | } u; | |
126 | ||
127 | } BDF_PropertyRec; | |
128 | ||
129 | ||
130 | /********************************************************************** | |
131 | * | |
132 | * @function: | |
133 | * FT_Get_BDF_Charset_ID | |
134 | * | |
135 | * @description: | |
136 | * Retrieve a BDF font character set identity, according to | |
137 | * the BDF specification. | |
138 | * | |
139 | * @input: | |
140 | * face :: | |
141 | * A handle to the input face. | |
142 | * | |
143 | * @output: | |
144 | * acharset_encoding :: | |
145 | * Charset encoding, as a C~string, owned by the face. | |
146 | * | |
147 | * acharset_registry :: | |
148 | * Charset registry, as a C~string, owned by the face. | |
149 | * | |
150 | * @return: | |
151 | * FreeType error code. 0~means success. | |
152 | * | |
153 | * @note: | |
154 | * This function only works with BDF faces, returning an error otherwise. | |
155 | */ | |
156 | FT_EXPORT( FT_Error ) | |
157 | FT_Get_BDF_Charset_ID( FT_Face face, | |
158 | const char* *acharset_encoding, | |
159 | const char* *acharset_registry ); | |
160 | ||
161 | ||
162 | /********************************************************************** | |
163 | * | |
164 | * @function: | |
165 | * FT_Get_BDF_Property | |
166 | * | |
167 | * @description: | |
168 | * Retrieve a BDF property from a BDF or PCF font file. | |
169 | * | |
170 | * @input: | |
171 | * face :: A handle to the input face. | |
172 | * | |
173 | * name :: The property name. | |
174 | * | |
175 | * @output: | |
176 | * aproperty :: The property. | |
177 | * | |
178 | * @return: | |
179 | * FreeType error code. 0~means success. | |
180 | * | |
181 | * @note: | |
182 | * This function works with BDF _and_ PCF fonts. It returns an error | |
183 | * otherwise. It also returns an error if the property is not in the | |
184 | * font. | |
185 | * | |
186 | * A `property' is a either key-value pair within the STARTPROPERTIES | |
187 | * ... ENDPROPERTIES block of a BDF font or a key-value pair from the | |
188 | * `info->props' array within a `FontRec' structure of a PCF font. | |
189 | * | |
190 | * Integer properties are always stored as `signed' within PCF fonts; | |
191 | * consequently, @BDF_PROPERTY_TYPE_CARDINAL is a possible return value | |
192 | * for BDF fonts only. | |
193 | * | |
194 | * In case of error, `aproperty->type' is always set to | |
195 | * @BDF_PROPERTY_TYPE_NONE. | |
196 | */ | |
197 | FT_EXPORT( FT_Error ) | |
198 | FT_Get_BDF_Property( FT_Face face, | |
199 | const char* prop_name, | |
200 | BDF_PropertyRec *aproperty ); | |
201 | ||
202 | /* */ | |
203 | ||
204 | FT_END_HEADER | |
205 | ||
206 | #endif /* __FTBDF_H__ */ | |
207 | ||
208 | ||
209 | /* END */ |