Edit

kc3-lang/freetype/include/fttrigon.h

Branch :

  • Show log

    Commit

  • Author : Alexei Podtelezhnikov
    Date : 2014-09-22 22:06:38
    Hash : 0753c0c3
    Message : Minor documentation fixes.

  • include/fttrigon.h
  • /***************************************************************************/
    /*                                                                         */
    /*  fttrigon.h                                                             */
    /*                                                                         */
    /*    FreeType trigonometric functions (specification).                    */
    /*                                                                         */
    /*  Copyright 2001, 2003, 2005, 2007, 2013 by                              */
    /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
    /*                                                                         */
    /*  This file is part of the FreeType project, and may only be used,       */
    /*  modified, and distributed under the terms of the FreeType project      */
    /*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
    /*  this file you indicate that you have read the license and              */
    /*  understand and accept it fully.                                        */
    /*                                                                         */
    /***************************************************************************/
    
    
    #ifndef __FTTRIGON_H__
    #define __FTTRIGON_H__
    
    #include FT_FREETYPE_H
    
    #ifdef FREETYPE_H
    #error "freetype.h of FreeType 1 has been loaded!"
    #error "Please fix the directory search order for header files"
    #error "so that freetype.h of FreeType 2 is found first."
    #endif
    
    
    FT_BEGIN_HEADER
    
    
      /*************************************************************************/
      /*                                                                       */
      /* <Section>                                                             */
      /*   computations                                                        */
      /*                                                                       */
      /*************************************************************************/
    
    
      /*************************************************************************
       *
       * @type:
       *   FT_Angle
       *
       * @description:
       *   This type is used to model angle values in FreeType.  Note that the
       *   angle is a 16.16 fixed-point value expressed in degrees.
       *
       */
      typedef FT_Fixed  FT_Angle;
    
    
      /*************************************************************************
       *
       * @macro:
       *   FT_ANGLE_PI
       *
       * @description:
       *   The angle pi expressed in @FT_Angle units.
       *
       */
    #define FT_ANGLE_PI  ( 180L << 16 )
    
    
      /*************************************************************************
       *
       * @macro:
       *   FT_ANGLE_2PI
       *
       * @description:
       *   The angle 2*pi expressed in @FT_Angle units.
       *
       */
    #define FT_ANGLE_2PI  ( FT_ANGLE_PI * 2 )
    
    
      /*************************************************************************
       *
       * @macro:
       *   FT_ANGLE_PI2
       *
       * @description:
       *   The angle pi/2 expressed in @FT_Angle units.
       *
       */
    #define FT_ANGLE_PI2  ( FT_ANGLE_PI / 2 )
    
    
      /*************************************************************************
       *
       * @macro:
       *   FT_ANGLE_PI4
       *
       * @description:
       *   The angle pi/4 expressed in @FT_Angle units.
       *
       */
    #define FT_ANGLE_PI4  ( FT_ANGLE_PI / 4 )
    
    
      /*************************************************************************
       *
       * @function:
       *   FT_Sin
       *
       * @description:
       *   Return the sinus of a given angle in fixed-point format.
       *
       * @input:
       *   angle ::
       *     The input angle.
       *
       * @return:
       *   The sinus value.
       *
       * @note:
       *   If you need both the sinus and cosinus for a given angle, use the
       *   function @FT_Vector_Unit.
       *
       */
      FT_EXPORT( FT_Fixed )
      FT_Sin( FT_Angle  angle );
    
    
      /*************************************************************************
       *
       * @function:
       *   FT_Cos
       *
       * @description:
       *   Return the cosinus of a given angle in fixed-point format.
       *
       * @input:
       *   angle ::
       *     The input angle.
       *
       * @return:
       *   The cosinus value.
       *
       * @note:
       *   If you need both the sinus and cosinus for a given angle, use the
       *   function @FT_Vector_Unit.
       *
       */
      FT_EXPORT( FT_Fixed )
      FT_Cos( FT_Angle  angle );
    
    
      /*************************************************************************
       *
       * @function:
       *   FT_Tan
       *
       * @description:
       *   Return the tangent of a given angle in fixed-point format.
       *
       * @input:
       *   angle ::
       *     The input angle.
       *
       * @return:
       *   The tangent value.
       *
       */
      FT_EXPORT( FT_Fixed )
      FT_Tan( FT_Angle  angle );
    
    
      /*************************************************************************
       *
       * @function:
       *   FT_Atan2
       *
       * @description:
       *   Return the arc-tangent corresponding to a given vector (x,y) in
       *   the 2d plane.
       *
       * @input:
       *   x ::
       *     The horizontal vector coordinate.
       *
       *   y ::
       *     The vertical vector coordinate.
       *
       * @return:
       *   The arc-tangent value (i.e. angle).
       *
       */
      FT_EXPORT( FT_Angle )
      FT_Atan2( FT_Fixed  x,
                FT_Fixed  y );
    
    
      /*************************************************************************
       *
       * @function:
       *   FT_Angle_Diff
       *
       * @description:
       *   Return the difference between two angles.  The result is always
       *   constrained to the ]-PI..PI] interval.
       *
       * @input:
       *   angle1 ::
       *     First angle.
       *
       *   angle2 ::
       *     Second angle.
       *
       * @return:
       *   Constrained value of `value2-value1'.
       *
       */
      FT_EXPORT( FT_Angle )
      FT_Angle_Diff( FT_Angle  angle1,
                     FT_Angle  angle2 );
    
    
      /*************************************************************************
       *
       * @function:
       *   FT_Vector_Unit
       *
       * @description:
       *   Return the unit vector corresponding to a given angle.  After the
       *   call, the value of `vec.x' will be `sin(angle)', and the value of
       *   `vec.y' will be `cos(angle)'.
       *
       *   This function is useful to retrieve both the sinus and cosinus of a
       *   given angle quickly.
       *
       * @output:
       *   vec ::
       *     The address of target vector.
       *
       * @input:
       *   angle ::
       *     The input angle.
       *
       */
      FT_EXPORT( void )
      FT_Vector_Unit( FT_Vector*  vec,
                      FT_Angle    angle );
    
    
      /*************************************************************************
       *
       * @function:
       *   FT_Vector_Rotate
       *
       * @description:
       *   Rotate a vector by a given angle.
       *
       * @inout:
       *   vec ::
       *     The address of target vector.
       *
       * @input:
       *   angle ::
       *     The input angle.
       *
       */
      FT_EXPORT( void )
      FT_Vector_Rotate( FT_Vector*  vec,
                        FT_Angle    angle );
    
    
      /*************************************************************************
       *
       * @function:
       *   FT_Vector_Length
       *
       * @description:
       *   Return the length of a given vector.
       *
       * @input:
       *   vec ::
       *     The address of target vector.
       *
       * @return:
       *   The vector length, expressed in the same units that the original
       *   vector coordinates.
       *
       */
      FT_EXPORT( FT_Fixed )
      FT_Vector_Length( FT_Vector*  vec );
    
    
      /*************************************************************************
       *
       * @function:
       *   FT_Vector_Polarize
       *
       * @description:
       *   Compute both the length and angle of a given vector.
       *
       * @input:
       *   vec ::
       *     The address of source vector.
       *
       * @output:
       *   length ::
       *     The vector length.
       *
       *   angle ::
       *     The vector angle.
       *
       */
      FT_EXPORT( void )
      FT_Vector_Polarize( FT_Vector*  vec,
                          FT_Fixed   *length,
                          FT_Angle   *angle );
    
    
      /*************************************************************************
       *
       * @function:
       *   FT_Vector_From_Polar
       *
       * @description:
       *   Compute vector coordinates from a length and angle.
       *
       * @output:
       *   vec ::
       *     The address of source vector.
       *
       * @input:
       *   length ::
       *     The vector length.
       *
       *   angle ::
       *     The vector angle.
       *
       */
      FT_EXPORT( void )
      FT_Vector_From_Polar( FT_Vector*  vec,
                            FT_Fixed    length,
                            FT_Angle    angle );
    
      /* */
    
    
    FT_END_HEADER
    
    #endif /* __FTTRIGON_H__ */
    
    
    /* END */