Suggestion from "mgh".
[open-ps2-loader.git] / thirdparty / freetype-2.3.12 / include / freetype / fttrigon.h
blob6b77d2ee54c3bbd4f6412b5cfcb6f4a75560d0b4
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 /***************************************************************************/
19 #ifndef __FTTRIGON_H__
20 #define __FTTRIGON_H__
22 #include FT_FREETYPE_H
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
31 FT_BEGIN_HEADER
34 /*************************************************************************/
35 /* */
36 /* <Section> */
37 /* computations */
38 /* */
39 /*************************************************************************/
42 /*************************************************************************
44 * @type:
45 * FT_Angle
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.
52 typedef FT_Fixed FT_Angle;
55 /*************************************************************************
57 * @macro:
58 * FT_ANGLE_PI
60 * @description:
61 * The angle pi expressed in @FT_Angle units.
64 #define FT_ANGLE_PI ( 180L << 16 )
67 /*************************************************************************
69 * @macro:
70 * FT_ANGLE_2PI
72 * @description:
73 * The angle 2*pi expressed in @FT_Angle units.
76 #define FT_ANGLE_2PI ( FT_ANGLE_PI * 2 )
79 /*************************************************************************
81 * @macro:
82 * FT_ANGLE_PI2
84 * @description:
85 * The angle pi/2 expressed in @FT_Angle units.
88 #define FT_ANGLE_PI2 ( FT_ANGLE_PI / 2 )
91 /*************************************************************************
93 * @macro:
94 * FT_ANGLE_PI4
96 * @description:
97 * The angle pi/4 expressed in @FT_Angle units.
100 #define FT_ANGLE_PI4 ( FT_ANGLE_PI / 4 )
103 /*************************************************************************
105 * @function:
106 * FT_Sin
108 * @description:
109 * Return the sinus of a given angle in fixed point format.
111 * @input:
112 * angle ::
113 * The input angle.
115 * @return:
116 * The sinus value.
118 * @note:
119 * If you need both the sinus and cosinus for a given angle, use the
120 * function @FT_Vector_Unit.
123 FT_EXPORT( FT_Fixed )
124 FT_Sin( FT_Angle angle );
127 /*************************************************************************
129 * @function:
130 * FT_Cos
132 * @description:
133 * Return the cosinus of a given angle in fixed point format.
135 * @input:
136 * angle ::
137 * The input angle.
139 * @return:
140 * The cosinus value.
142 * @note:
143 * If you need both the sinus and cosinus for a given angle, use the
144 * function @FT_Vector_Unit.
147 FT_EXPORT( FT_Fixed )
148 FT_Cos( FT_Angle angle );
151 /*************************************************************************
153 * @function:
154 * FT_Tan
156 * @description:
157 * Return the tangent of a given angle in fixed point format.
159 * @input:
160 * angle ::
161 * The input angle.
163 * @return:
164 * The tangent value.
167 FT_EXPORT( FT_Fixed )
168 FT_Tan( FT_Angle angle );
171 /*************************************************************************
173 * @function:
174 * FT_Atan2
176 * @description:
177 * Return the arc-tangent corresponding to a given vector (x,y) in
178 * the 2d plane.
180 * @input:
181 * x ::
182 * The horizontal vector coordinate.
184 * y ::
185 * The vertical vector coordinate.
187 * @return:
188 * The arc-tangent value (i.e. angle).
191 FT_EXPORT( FT_Angle )
192 FT_Atan2( FT_Fixed x,
193 FT_Fixed y );
196 /*************************************************************************
198 * @function:
199 * FT_Angle_Diff
201 * @description:
202 * Return the difference between two angles. The result is always
203 * constrained to the ]-PI..PI] interval.
205 * @input:
206 * angle1 ::
207 * First angle.
209 * angle2 ::
210 * Second angle.
212 * @return:
213 * Constrained value of `value2-value1'.
216 FT_EXPORT( FT_Angle )
217 FT_Angle_Diff( FT_Angle angle1,
218 FT_Angle angle2 );
221 /*************************************************************************
223 * @function:
224 * FT_Vector_Unit
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)'.
231 * This function is useful to retrieve both the sinus and cosinus of a
232 * given angle quickly.
234 * @output:
235 * vec ::
236 * The address of target vector.
238 * @input:
239 * angle ::
240 * The address of angle.
243 FT_EXPORT( void )
244 FT_Vector_Unit( FT_Vector* vec,
245 FT_Angle angle );
248 /*************************************************************************
250 * @function:
251 * FT_Vector_Rotate
253 * @description:
254 * Rotate a vector by a given angle.
256 * @inout:
257 * vec ::
258 * The address of target vector.
260 * @input:
261 * angle ::
262 * The address of angle.
265 FT_EXPORT( void )
266 FT_Vector_Rotate( FT_Vector* vec,
267 FT_Angle angle );
270 /*************************************************************************
272 * @function:
273 * FT_Vector_Length
275 * @description:
276 * Return the length of a given vector.
278 * @input:
279 * vec ::
280 * The address of target vector.
282 * @return:
283 * The vector length, expressed in the same units that the original
284 * vector coordinates.
287 FT_EXPORT( FT_Fixed )
288 FT_Vector_Length( FT_Vector* vec );
291 /*************************************************************************
293 * @function:
294 * FT_Vector_Polarize
296 * @description:
297 * Compute both the length and angle of a given vector.
299 * @input:
300 * vec ::
301 * The address of source vector.
303 * @output:
304 * length ::
305 * The vector length.
307 * angle ::
308 * The vector angle.
311 FT_EXPORT( void )
312 FT_Vector_Polarize( FT_Vector* vec,
313 FT_Fixed *length,
314 FT_Angle *angle );
317 /*************************************************************************
319 * @function:
320 * FT_Vector_From_Polar
322 * @description:
323 * Compute vector coordinates from a length and angle.
325 * @output:
326 * vec ::
327 * The address of source vector.
329 * @input:
330 * length ::
331 * The vector length.
333 * angle ::
334 * The vector angle.
337 FT_EXPORT( void )
338 FT_Vector_From_Polar( FT_Vector* vec,
339 FT_Fixed length,
340 FT_Angle angle );
342 /* */
345 FT_END_HEADER
347 #endif /* __FTTRIGON_H__ */
350 /* END */