PageRenderTime 314ms CodeModel.GetById 151ms app.highlight 6ms RepoModel.GetById 155ms app.codeStats 0ms

/src/compiler/android-ndk/jni/freetype/include/freetype/fttrigon.h

http://ftk.googlecode.com/
C++ Header | 350 lines | 44 code | 44 blank | 262 comment | 0 complexity | 5477d1913ded727d29770d097d520b0e MD5 | raw file
  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
 31FT_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
345FT_END_HEADER
346
347#endif /* __FTTRIGON_H__ */
348
349
350/* END */