< prev index next >

src/java.desktop/share/native/libfreetype/include/freetype/fttrigon.h

Print this page


   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 
  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-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    */
 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 `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 )
 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 input 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 )
   1 /****************************************************************************
   2  *
   3  * fttrigon.h
   4  *
   5  *   FreeType trigonometric functions (specification).
   6  *
   7  * Copyright (C) 2001-2019 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-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    */
 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 the 2d
 178    *   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 `angle2-angle1`.
 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 `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 )
 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 input 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 )
< prev index next >