ReactOS 0.4.15-dev-7953-g1f49173
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 */
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 */
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 */
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 */
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 */
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 )
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 )
340 FT_Angle angle );
341
342 /* */
343
344
346
347#endif /* FTTRIGON_H_ */
348
349
350/* END */
FT_Vector * vec
Definition: ftbbox.c:448
#define FT_EXPORT(x)
Definition: ftconfig.h:461
#define FT_END_HEADER
Definition: ftheader.h:54
#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_Vector_Polarize(FT_Vector *vec, FT_Fixed *length, FT_Angle *angle)
Definition: fttrigon.c:463
FT_BEGIN_HEADER typedef FT_Fixed FT_Angle
Definition: fttrigon.h:52
FT_Atan2(FT_Fixed x, FT_Fixed y)
Definition: fttrigon.c:340
FT_Vector_Length(FT_Vector *vec)
Definition: fttrigon.c:426
FT_Vector_Unit(FT_Vector *vec, FT_Angle angle)
Definition: fttrigon.c:361
FT_Tan(FT_Angle angle)
Definition: fttrigon.c:326
FT_Angle_Diff(FT_Angle angle1, FT_Angle angle2)
Definition: fttrigon.c:510
FT_Sin(FT_Angle angle)
Definition: fttrigon.c:312
FT_Cos(FT_Angle angle)
Definition: fttrigon.c:298
FT_Vector_Rotate(FT_Vector *vec, FT_Angle angle)
Definition: fttrigon.c:386
signed long FT_Fixed
Definition: fttypes.h:288
GLint GLint GLint GLint GLint x
Definition: gl.h:1548
GLint GLint GLint GLint GLint GLint y
Definition: gl.h:1548
GLuint GLsizei GLsizei * length
Definition: glext.h:6040
GLfloat angle
Definition: glext.h:10853