From 3562e78743202e43aec8727005182a2558117eca Mon Sep 17 00:00:00 2001 From: marha Date: Sun, 28 Jun 2009 22:07:26 +0000 Subject: Checked in the following released items: xkeyboard-config-1.4.tar.gz ttf-bitstream-vera-1.10.tar.gz font-alias-1.0.1.tar.gz font-sun-misc-1.0.0.tar.gz font-sun-misc-1.0.0.tar.gz font-sony-misc-1.0.0.tar.gz font-schumacher-misc-1.0.0.tar.gz font-mutt-misc-1.0.0.tar.gz font-misc-misc-1.0.0.tar.gz font-misc-meltho-1.0.0.tar.gz font-micro-misc-1.0.0.tar.gz font-jis-misc-1.0.0.tar.gz font-isas-misc-1.0.0.tar.gz font-dec-misc-1.0.0.tar.gz font-daewoo-misc-1.0.0.tar.gz font-cursor-misc-1.0.0.tar.gz font-arabic-misc-1.0.0.tar.gz font-winitzki-cyrillic-1.0.0.tar.gz font-misc-cyrillic-1.0.0.tar.gz font-cronyx-cyrillic-1.0.0.tar.gz font-screen-cyrillic-1.0.1.tar.gz font-xfree86-type1-1.0.1.tar.gz font-adobe-utopia-type1-1.0.1.tar.gz font-ibm-type1-1.0.0.tar.gz font-bitstream-type1-1.0.0.tar.gz font-bitstream-speedo-1.0.0.tar.gz font-bh-ttf-1.0.0.tar.gz font-bh-type1-1.0.0.tar.gz font-bitstream-100dpi-1.0.0.tar.gz font-bh-lucidatypewriter-100dpi-1.0.0.tar.gz font-bh-100dpi-1.0.0.tar.gz font-adobe-utopia-100dpi-1.0.1.tar.gz font-adobe-100dpi-1.0.0.tar.gz font-util-1.0.1.tar.gz font-bitstream-75dpi-1.0.0.tar.gz font-bh-lucidatypewriter-75dpi-1.0.0.tar.gz font-adobe-utopia-75dpi-1.0.1.tar.gz font-bh-75dpi-1.0.0.tar.gz bdftopcf-1.0.1.tar.gz font-adobe-75dpi-1.0.0.tar.gz mkfontscale-1.0.6.tar.gz openssl-0.9.8k.tar.gz bigreqsproto-1.0.2.tar.gz xtrans-1.2.2.tar.gz resourceproto-1.0.2.tar.gz inputproto-1.4.4.tar.gz compositeproto-0.4.tar.gz damageproto-1.1.0.tar.gz zlib-1.2.3.tar.gz xkbcomp-1.0.5.tar.gz freetype-2.3.9.tar.gz pthreads-w32-2-8-0-release.tar.gz pixman-0.12.0.tar.gz kbproto-1.0.3.tar.gz evieext-1.0.2.tar.gz fixesproto-4.0.tar.gz recordproto-1.13.2.tar.gz randrproto-1.2.2.tar.gz scrnsaverproto-1.1.0.tar.gz renderproto-0.9.3.tar.gz xcmiscproto-1.1.2.tar.gz fontsproto-2.0.2.tar.gz xextproto-7.0.3.tar.gz xproto-7.0.14.tar.gz libXdmcp-1.0.2.tar.gz libxkbfile-1.0.5.tar.gz libfontenc-1.0.4.tar.gz libXfont-1.3.4.tar.gz libX11-1.1.5.tar.gz libXau-1.0.4.tar.gz libxcb-1.1.tar.gz xorg-server-1.5.3.tar.gz --- freetype/docs/reference/ft2-computations.html | 792 ++++++++++++++++++++++++++ 1 file changed, 792 insertions(+) create mode 100644 freetype/docs/reference/ft2-computations.html (limited to 'freetype/docs/reference/ft2-computations.html') diff --git a/freetype/docs/reference/ft2-computations.html b/freetype/docs/reference/ft2-computations.html new file mode 100644 index 000000000..608139011 --- /dev/null +++ b/freetype/docs/reference/ft2-computations.html @@ -0,0 +1,792 @@ + + + + +FreeType-2.3.9 API Reference + + + + + + +
[Index][TOC]
+

FreeType-2.3.9 API Reference

+ +

+Computations +

+

Synopsis

+ + + + + + + + + +
FT_MulDivFT_Matrix_InvertFT_Tan
FT_MulFixFT_AngleFT_Atan2
FT_DivFixFT_ANGLE_PIFT_Angle_Diff
FT_RoundFixFT_ANGLE_2PIFT_Vector_Unit
FT_CeilFixFT_ANGLE_PI2FT_Vector_Rotate
FT_FloorFixFT_ANGLE_PI4FT_Vector_Length
FT_Vector_TransformFT_SinFT_Vector_Polarize
FT_Matrix_MultiplyFT_CosFT_Vector_From_Polar


+ +
+

This section contains various functions used to perform computations on 16.16 fixed-float numbers or 2d vectors.

+

+
+

FT_MulDiv

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+  FT_EXPORT( FT_Long )
+  FT_MulDiv( FT_Long  a,
+             FT_Long  b,
+             FT_Long  c );
+
+

+
+

A very simple function used to perform the computation ‘(a*b)/c’ with maximal accuracy (it uses a 64-bit intermediate integer whenever necessary).

+

This function isn't necessarily as fast as some processor specific operations, but is at least completely portable.

+

+
input
+

+ + + + +
a +

The first multiplier.

+
b +

The second multiplier.

+
c +

The divisor.

+
+
+
return
+

The result of ‘(a*b)/c’. This function never traps when trying to divide by zero; it simply returns ‘MaxInt’ or ‘MinInt’ depending on the signs of ‘a’ and ‘b’.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_MulFix

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+  FT_EXPORT( FT_Long )
+  FT_MulFix( FT_Long  a,
+             FT_Long  b );
+
+

+
+

A very simple function used to perform the computation ‘(a*b)/0x10000’ with maximal accuracy. Most of the time this is used to multiply a given value by a 16.16 fixed float factor.

+

+
input
+

+ + + +
a +

The first multiplier.

+
b +

The second multiplier. Use a 16.16 factor here whenever possible (see note below).

+
+
+
return
+

The result of ‘(a*b)/0x10000’.

+
+
note
+

This function has been optimized for the case where the absolute value of ‘a’ is less than 2048, and ‘b’ is a 16.16 scaling factor. As this happens mainly when scaling from notional units to fractional pixels in FreeType, it resulted in noticeable speed improvements between versions 2.x and 1.x.

+

As a conclusion, always try to place a 16.16 factor as the second argument of this function; this can make a great difference.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_DivFix

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+  FT_EXPORT( FT_Long )
+  FT_DivFix( FT_Long  a,
+             FT_Long  b );
+
+

+
+

A very simple function used to perform the computation ‘(a*0x10000)/b’ with maximal accuracy. Most of the time, this is used to divide a given value by a 16.16 fixed float factor.

+

+
input
+

+ + + +
a +

The first multiplier.

+
b +

The second multiplier. Use a 16.16 factor here whenever possible (see note below).

+
+
+
return
+

The result of ‘(a*0x10000)/b’.

+
+
note
+

The optimization for FT_DivFix() is simple: If (a << 16) fits in 32 bits, then the division is computed directly. Otherwise, we use a specialized version of FT_MulDiv.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_RoundFix

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+  FT_EXPORT( FT_Fixed )
+  FT_RoundFix( FT_Fixed  a );
+
+

+
+

A very simple function used to round a 16.16 fixed number.

+

+
input
+

+ + +
a +

The number to be rounded.

+
+
+
return
+

The result of ‘(a + 0x8000) & -0x10000’.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_CeilFix

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+  FT_EXPORT( FT_Fixed )
+  FT_CeilFix( FT_Fixed  a );
+
+

+
+

A very simple function used to compute the ceiling function of a 16.16 fixed number.

+

+
input
+

+ + +
a +

The number for which the ceiling function is to be computed.

+
+
+
return
+

The result of ‘(a + 0x10000 - 1) & -0x10000’.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_FloorFix

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+  FT_EXPORT( FT_Fixed )
+  FT_FloorFix( FT_Fixed  a );
+
+

+
+

A very simple function used to compute the floor function of a 16.16 fixed number.

+

+
input
+

+ + +
a +

The number for which the floor function is to be computed.

+
+
+
return
+

The result of ‘a & -0x10000’.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Vector_Transform

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+  FT_EXPORT( void )
+  FT_Vector_Transform( FT_Vector*        vec,
+                       const FT_Matrix*  matrix );
+
+

+
+

Transform a single vector through a 2x2 matrix.

+

+
inout
+

+ + +
vector +

The target vector to transform.

+
+
+
input
+

+ + +
matrix +

A pointer to the source 2x2 matrix.

+
+
+
note
+

The result is undefined if either ‘vector’ or ‘matrix’ is invalid.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Matrix_Multiply

+
+Defined in FT_GLYPH_H (freetype/ftglyph.h). +

+
+
+  FT_EXPORT( void )
+  FT_Matrix_Multiply( const FT_Matrix*  a,
+                      FT_Matrix*        b );
+
+

+
+

Perform the matrix operation ‘b = a*b’.

+

+
input
+

+ + +
a +

A pointer to matrix ‘a’.

+
+
+
inout
+

+ + +
b +

A pointer to matrix ‘b’.

+
+
+
note
+

The result is undefined if either ‘a’ or ‘b’ is zero.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Matrix_Invert

+
+Defined in FT_GLYPH_H (freetype/ftglyph.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_Matrix_Invert( FT_Matrix*  matrix );
+
+

+
+

Invert a 2x2 matrix. Return an error if it can't be inverted.

+

+
inout
+

+ + +
matrix +

A pointer to the target matrix. Remains untouched in case of error.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Angle

+
+

This type is used to model angle values in FreeType. Note that the angle is a 16.16 fixed float value expressed in degrees.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_ANGLE_PI

+
+

The angle pi expressed in FT_Angle units.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_ANGLE_2PI

+
+

The angle 2*pi expressed in FT_Angle units.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_ANGLE_PI2

+
+

The angle pi/2 expressed in FT_Angle units.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_ANGLE_PI4

+
+

The angle pi/4 expressed in FT_Angle units.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_Sin

+
+Defined in FT_TRIGONOMETRY_H (freetype/fttrigon.h). +

+
+
+  FT_EXPORT( FT_Fixed )
+  FT_Sin( FT_Angle  angle );
+
+

+
+

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.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Cos

+
+Defined in FT_TRIGONOMETRY_H (freetype/fttrigon.h). +

+
+
+  FT_EXPORT( FT_Fixed )
+  FT_Cos( FT_Angle  angle );
+
+

+
+

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.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Tan

+
+Defined in FT_TRIGONOMETRY_H (freetype/fttrigon.h). +

+
+
+  FT_EXPORT( FT_Fixed )
+  FT_Tan( FT_Angle  angle );
+
+

+
+

Return the tangent of a given angle in fixed point format.

+

+
input
+

+ + +
angle +

The input angle.

+
+
+
return
+

The tangent value.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Atan2

+
+Defined in FT_TRIGONOMETRY_H (freetype/fttrigon.h). +

+
+
+  FT_EXPORT( FT_Angle )
+  FT_Atan2( FT_Fixed  x,
+            FT_Fixed  y );
+
+

+
+

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).

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Angle_Diff

+
+Defined in FT_TRIGONOMETRY_H (freetype/fttrigon.h). +

+
+
+  FT_EXPORT( FT_Angle )
+  FT_Angle_Diff( FT_Angle  angle1,
+                 FT_Angle  angle2 );
+
+

+
+

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’.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Vector_Unit

+
+Defined in FT_TRIGONOMETRY_H (freetype/fttrigon.h). +

+
+
+  FT_EXPORT( void )
+  FT_Vector_Unit( FT_Vector*  vec,
+                  FT_Angle    angle );
+
+

+
+

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 address of angle.

+
+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Vector_Rotate

+
+Defined in FT_TRIGONOMETRY_H (freetype/fttrigon.h). +

+
+
+  FT_EXPORT( void )
+  FT_Vector_Rotate( FT_Vector*  vec,
+                    FT_Angle    angle );
+
+

+
+

Rotate a vector by a given angle.

+

+
inout
+

+ + +
vec +

The address of target vector.

+
+
+
input
+

+ + +
angle +

The address of angle.

+
+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Vector_Length

+
+Defined in FT_TRIGONOMETRY_H (freetype/fttrigon.h). +

+
+
+  FT_EXPORT( FT_Fixed )
+  FT_Vector_Length( FT_Vector*  vec );
+
+

+
+

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.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Vector_Polarize

+
+Defined in FT_TRIGONOMETRY_H (freetype/fttrigon.h). +

+
+
+  FT_EXPORT( void )
+  FT_Vector_Polarize( FT_Vector*  vec,
+                      FT_Fixed   *length,
+                      FT_Angle   *angle );
+
+

+
+

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.

+
+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Vector_From_Polar

+
+Defined in FT_TRIGONOMETRY_H (freetype/fttrigon.h). +

+
+
+  FT_EXPORT( void )
+  FT_Vector_From_Polar( FT_Vector*  vec,
+                        FT_Fixed    length,
+                        FT_Angle    angle );
+
+

+
+

Compute vector coordinates from a length and angle.

+

+
output
+

+ + +
vec +

The address of source vector.

+
+
+
input
+

+ + + +
length +

The vector length.

+
angle +

The vector angle.

+
+
+
+
+ + +
[Index][TOC]
+ + + -- cgit v1.2.3