Changeset View
Changeset View
Standalone View
Standalone View
ps/trunk/libraries/win32/freetype/include/freetype/fttrigon.h
/**************************************************************************** | |||||
* | |||||
* fttrigon.h | |||||
* | |||||
* FreeType trigonometric functions (specification). | |||||
* | |||||
* Copyright (C) 2001-2020 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 <freetype/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 `angle2-angle1`. | |||||
* | |||||
*/ | |||||
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 `cos(angle)`, and the value of | |||||
* `vec.y` will be `sin(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 */ |
Wildfire Games · Phabricator