~ubuntu-branches/ubuntu/saucy/emscripten/saucy-proposed

« back to all changes in this revision

Viewing changes to tests/freetype/include/freetype/fttrigon.h

  • Committer: Package Import Robot
  • Author(s): Sylvestre Ledru
  • Date: 2013-05-02 13:11:51 UTC
  • Revision ID: package-import@ubuntu.com-20130502131151-q8dvteqr1ef2x7xz
Tags: upstream-1.4.1~20130504~adb56cb
ImportĀ upstreamĀ versionĀ 1.4.1~20130504~adb56cb

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 */