Mercurial > hg > Game > Cerium
comparison freetype2/freetype/fttrigon.h @ 1206:a8ab91f49cac draft
add freetype2,ft2build.h
author | Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp> |
---|---|
date | Thu, 21 Jul 2011 19:38:12 +0900 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
1205:b8adf4e95e96 | 1206:a8ab91f49cac |
---|---|
1 /***************************************************************************/ | |
2 /* */ | |
3 /* fttrigon.h */ | |
4 /* */ | |
5 /* FreeType trigonometric functions (specification). */ | |
6 /* */ | |
7 /* Copyright 2001, 2003, 2005, 2007 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 __FTTRIGON_H__ | |
20 #define __FTTRIGON_H__ | |
21 | |
22 #include FT_FREETYPE_H | |
23 | |
24 #ifdef FREETYPE_H | |
25 #error "freetype.h of FreeType 1 has been loaded!" | |
26 #error "Please fix the directory search order for header files" | |
27 #error "so that freetype.h of FreeType 2 is found first." | |
28 #endif | |
29 | |
30 | |
31 FT_BEGIN_HEADER | |
32 | |
33 | |
34 /*************************************************************************/ | |
35 /* */ | |
36 /* <Section> */ | |
37 /* computations */ | |
38 /* */ | |
39 /*************************************************************************/ | |
40 | |
41 | |
42 /************************************************************************* | |
43 * | |
44 * @type: | |
45 * FT_Angle | |
46 * | |
47 * @description: | |
48 * This type is used to model angle values in FreeType. Note that the | |
49 * angle is a 16.16 fixed float value expressed in degrees. | |
50 * | |
51 */ | |
52 typedef FT_Fixed FT_Angle; | |
53 | |
54 | |
55 /************************************************************************* | |
56 * | |
57 * @macro: | |
58 * FT_ANGLE_PI | |
59 * | |
60 * @description: | |
61 * The angle pi expressed in @FT_Angle units. | |
62 * | |
63 */ | |
64 #define FT_ANGLE_PI ( 180L << 16 ) | |
65 | |
66 | |
67 /************************************************************************* | |
68 * | |
69 * @macro: | |
70 * FT_ANGLE_2PI | |
71 * | |
72 * @description: | |
73 * The angle 2*pi expressed in @FT_Angle units. | |
74 * | |
75 */ | |
76 #define FT_ANGLE_2PI ( FT_ANGLE_PI * 2 ) | |
77 | |
78 | |
79 /************************************************************************* | |
80 * | |
81 * @macro: | |
82 * FT_ANGLE_PI2 | |
83 * | |
84 * @description: | |
85 * The angle pi/2 expressed in @FT_Angle units. | |
86 * | |
87 */ | |
88 #define FT_ANGLE_PI2 ( FT_ANGLE_PI / 2 ) | |
89 | |
90 | |
91 /************************************************************************* | |
92 * | |
93 * @macro: | |
94 * FT_ANGLE_PI4 | |
95 * | |
96 * @description: | |
97 * The angle pi/4 expressed in @FT_Angle units. | |
98 * | |
99 */ | |
100 #define FT_ANGLE_PI4 ( FT_ANGLE_PI / 4 ) | |
101 | |
102 | |
103 /************************************************************************* | |
104 * | |
105 * @function: | |
106 * FT_Sin | |
107 * | |
108 * @description: | |
109 * Return the sinus of a given angle in fixed point format. | |
110 * | |
111 * @input: | |
112 * angle :: | |
113 * The input angle. | |
114 * | |
115 * @return: | |
116 * The sinus value. | |
117 * | |
118 * @note: | |
119 * If you need both the sinus and cosinus for a given angle, use the | |
120 * function @FT_Vector_Unit. | |
121 * | |
122 */ | |
123 FT_EXPORT( FT_Fixed ) | |
124 FT_Sin( FT_Angle angle ); | |
125 | |
126 | |
127 /************************************************************************* | |
128 * | |
129 * @function: | |
130 * FT_Cos | |
131 * | |
132 * @description: | |
133 * Return the cosinus of a given angle in fixed point format. | |
134 * | |
135 * @input: | |
136 * angle :: | |
137 * The input angle. | |
138 * | |
139 * @return: | |
140 * The cosinus value. | |
141 * | |
142 * @note: | |
143 * If you need both the sinus and cosinus for a given angle, use the | |
144 * function @FT_Vector_Unit. | |
145 * | |
146 */ | |
147 FT_EXPORT( FT_Fixed ) | |
148 FT_Cos( FT_Angle angle ); | |
149 | |
150 | |
151 /************************************************************************* | |
152 * | |
153 * @function: | |
154 * FT_Tan | |
155 * | |
156 * @description: | |
157 * Return the tangent of a given angle in fixed point format. | |
158 * | |
159 * @input: | |
160 * angle :: | |
161 * The input angle. | |
162 * | |
163 * @return: | |
164 * The tangent value. | |
165 * | |
166 */ | |
167 FT_EXPORT( FT_Fixed ) | |
168 FT_Tan( FT_Angle angle ); | |
169 | |
170 | |
171 /************************************************************************* | |
172 * | |
173 * @function: | |
174 * FT_Atan2 | |
175 * | |
176 * @description: | |
177 * Return the arc-tangent corresponding to a given vector (x,y) in | |
178 * the 2d plane. | |
179 * | |
180 * @input: | |
181 * x :: | |
182 * The horizontal vector coordinate. | |
183 * | |
184 * y :: | |
185 * The vertical vector coordinate. | |
186 * | |
187 * @return: | |
188 * The arc-tangent value (i.e. angle). | |
189 * | |
190 */ | |
191 FT_EXPORT( FT_Angle ) | |
192 FT_Atan2( FT_Fixed x, | |
193 FT_Fixed y ); | |
194 | |
195 | |
196 /************************************************************************* | |
197 * | |
198 * @function: | |
199 * FT_Angle_Diff | |
200 * | |
201 * @description: | |
202 * Return the difference between two angles. The result is always | |
203 * constrained to the ]-PI..PI] interval. | |
204 * | |
205 * @input: | |
206 * angle1 :: | |
207 * First angle. | |
208 * | |
209 * angle2 :: | |
210 * Second angle. | |
211 * | |
212 * @return: | |
213 * Constrained value of `value2-value1'. | |
214 * | |
215 */ | |
216 FT_EXPORT( FT_Angle ) | |
217 FT_Angle_Diff( FT_Angle angle1, | |
218 FT_Angle angle2 ); | |
219 | |
220 | |
221 /************************************************************************* | |
222 * | |
223 * @function: | |
224 * FT_Vector_Unit | |
225 * | |
226 * @description: | |
227 * Return the unit vector corresponding to a given angle. After the | |
228 * call, the value of `vec.x' will be `sin(angle)', and the value of | |
229 * `vec.y' will be `cos(angle)'. | |
230 * | |
231 * This function is useful to retrieve both the sinus and cosinus of a | |
232 * given angle quickly. | |
233 * | |
234 * @output: | |
235 * vec :: | |
236 * The address of target vector. | |
237 * | |
238 * @input: | |
239 * angle :: | |
240 * The address of angle. | |
241 * | |
242 */ | |
243 FT_EXPORT( void ) | |
244 FT_Vector_Unit( FT_Vector* vec, | |
245 FT_Angle angle ); | |
246 | |
247 | |
248 /************************************************************************* | |
249 * | |
250 * @function: | |
251 * FT_Vector_Rotate | |
252 * | |
253 * @description: | |
254 * Rotate a vector by a given angle. | |
255 * | |
256 * @inout: | |
257 * vec :: | |
258 * The address of target vector. | |
259 * | |
260 * @input: | |
261 * angle :: | |
262 * The address of angle. | |
263 * | |
264 */ | |
265 FT_EXPORT( void ) | |
266 FT_Vector_Rotate( FT_Vector* vec, | |
267 FT_Angle angle ); | |
268 | |
269 | |
270 /************************************************************************* | |
271 * | |
272 * @function: | |
273 * FT_Vector_Length | |
274 * | |
275 * @description: | |
276 * Return the length of a given vector. | |
277 * | |
278 * @input: | |
279 * vec :: | |
280 * The address of target vector. | |
281 * | |
282 * @return: | |
283 * The vector length, expressed in the same units that the original | |
284 * vector coordinates. | |
285 * | |
286 */ | |
287 FT_EXPORT( FT_Fixed ) | |
288 FT_Vector_Length( FT_Vector* vec ); | |
289 | |
290 | |
291 /************************************************************************* | |
292 * | |
293 * @function: | |
294 * FT_Vector_Polarize | |
295 * | |
296 * @description: | |
297 * Compute both the length and angle of a given vector. | |
298 * | |
299 * @input: | |
300 * vec :: | |
301 * The address of source vector. | |
302 * | |
303 * @output: | |
304 * length :: | |
305 * The vector length. | |
306 * | |
307 * angle :: | |
308 * The vector angle. | |
309 * | |
310 */ | |
311 FT_EXPORT( void ) | |
312 FT_Vector_Polarize( FT_Vector* vec, | |
313 FT_Fixed *length, | |
314 FT_Angle *angle ); | |
315 | |
316 | |
317 /************************************************************************* | |
318 * | |
319 * @function: | |
320 * FT_Vector_From_Polar | |
321 * | |
322 * @description: | |
323 * Compute vector coordinates from a length and angle. | |
324 * | |
325 * @output: | |
326 * vec :: | |
327 * The address of source vector. | |
328 * | |
329 * @input: | |
330 * length :: | |
331 * The vector length. | |
332 * | |
333 * angle :: | |
334 * The vector angle. | |
335 * | |
336 */ | |
337 FT_EXPORT( void ) | |
338 FT_Vector_From_Polar( FT_Vector* vec, | |
339 FT_Fixed length, | |
340 FT_Angle angle ); | |
341 | |
342 /* */ | |
343 | |
344 | |
345 FT_END_HEADER | |
346 | |
347 #endif /* __FTTRIGON_H__ */ | |
348 | |
349 | |
350 /* END */ |