ReactOS  0.4.11-dev-721-g95bc44e
fttrigon.h
Go to the documentation of this file.
1 /***************************************************************************/
2 /* */
3 /* fttrigon.h */
4 /* */
5 /* FreeType trigonometric functions (specification). */
6 /* */
7 /* Copyright 2001-2018 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 
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-point 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  */
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  */
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  */
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  */
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  */
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 `cos(angle)', and the value of
229  * `vec.y' will be `sin(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 input angle.
241  *
242  */
243  FT_EXPORT( void )
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 input angle.
263  *
264  */
265  FT_EXPORT( void )
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  */
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 )
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 )
339  FT_Fixed length,
340  FT_Angle angle );
341 
342  /* */
343 
344 
346 
347 #endif /* FTTRIGON_H_ */
348 
349 
350 /* END */
#define FT_END_HEADER
Definition: ftheader.h:54
FT_Tan(FT_Angle angle)
Definition: fttrigon.c:326
GLfloat angle
Definition: glext.h:10853
#define FT_BEGIN_HEADER
Definition: ftheader.h:36
FT_Vector_From_Polar(FT_Vector *vec, FT_Fixed length, FT_Angle angle)
Definition: fttrigon.c:493
FT_Atan2(FT_Fixed x, FT_Fixed y)
Definition: fttrigon.c:340
GLenum GLuint GLenum GLsizei length
Definition: glext.h:5579
FT_Sin(FT_Angle angle)
Definition: fttrigon.c:312
FT_BEGIN_HEADER typedef FT_Fixed FT_Angle
Definition: fttrigon.h:52
FT_Vector * vec
Definition: ftbbox.c:448
FT_Cos(FT_Angle angle)
Definition: fttrigon.c:298
FT_Vector_Unit(FT_Vector *vec, FT_Angle angle)
Definition: fttrigon.c:361
signed long FT_Fixed
Definition: fttypes.h:288
FT_Angle_Diff(FT_Angle angle1, FT_Angle angle2)
Definition: fttrigon.c:510
#define FT_EXPORT(x)
Definition: ftconfig.h:461
FT_Vector_Rotate(FT_Vector *vec, FT_Angle angle)
Definition: fttrigon.c:386
FT_Vector_Length(FT_Vector *vec)
Definition: fttrigon.c:426
INT INT y
Definition: msvc.h:62
FT_Vector_Polarize(FT_Vector *vec, FT_Fixed *length, FT_Angle *angle)
Definition: fttrigon.c:463
INT x
Definition: msvc.h:62