~ubuntu-branches/ubuntu/utopic/hedgewars/utopic

« back to all changes in this revision

Viewing changes to misc/libfreetype/include/freetype/fttrigon.h

  • Committer: Package Import Robot
  • Author(s): Gianfranco Costamagna
  • Date: 2014-01-02 12:37:23 UTC
  • mfrom: (19.1.5 sid)
  • Revision ID: package-import@ubuntu.com-20140102123723-6pdhmyj8tb5y8xbg
Tags: 0.9.20.3-1
New upstream minor release, suitable for unstable

Show diffs side-by-side

added added

removed removed

Lines of Context:
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 */