20 #include FT_INTERNAL_OBJECTS_H
21 #include FT_TRIGONOMETRY_H
25 #define FT_TRIG_COSCALE 0x11616E8EUL
28 #define FT_TRIG_MAX_ITERS 23
33 4157273L, 2949120L, 1740967L, 919879L, 466945L, 234379L, 117304L,
34 58666L, 29335L, 14668L, 7334L, 3667L, 1833L, 917L, 458L, 229L, 115L,
35 57L, 29L, 14L, 7L, 4L, 2L, 1L
39 #define FT_TRIG_SCALE 1166391785UL
42 #ifdef FT_CONFIG_HAS_INT64
53 val = ( val >= 0 ) ? val : -val;
58 return ( s >= 0 ) ? val : -
val;
68 FT_UInt32
v1,
v2, k1, k2,
hi, lo1, lo2, lo3;
72 val = ( val >= 0 ) ? val : -val;
74 v1 = (FT_UInt32)val >> 16;
75 v2 = (FT_UInt32)(val & 0xFFFFL);
81 lo1 = k1 * v2 + k2 *
v1;
83 lo2 = ( k2 *
v2 ) >> 16;
84 lo3 = ( lo1 >= lo2 ) ? lo1 : lo2;
89 hi += (FT_UInt32)0x10000UL;
93 return ( s >= 0 ) ? val : -
val;
109 z = ( ( x >= 0 ) ? x : - x ) | ( (y >= 0) ? y : -y );
114 if ( z >= ( 1L << 16 ) )
119 if ( z >= ( 1L << 8 ) )
124 if ( z >= ( 1L << 4 ) )
129 if ( z >= ( 1L << 2 ) )
134 if ( z >= ( 1L << 1 ) )
156 if ( z < ( 1L << 27 ) )
162 }
while ( z < ( 1L << 27 ) );
166 else if ( z > ( 1L << 28 ) )
172 }
while ( z > ( 1L << 28 ) );
217 xtemp = x + ( y << 1 );
220 theta += *arctanptr++;
224 xtemp = x - ( y << 1 );
227 theta -= *arctanptr++;
236 xtemp = x + ( y >>
i );
239 theta += *arctanptr++;
243 xtemp = x - ( y >>
i );
246 theta -= *arctanptr++;
287 theta -= *arctanptr++;
295 theta += *arctanptr++;
307 theta -= *arctanptr++;
315 theta += *arctanptr++;
342 return v.
x / ( 1 << 12 );
380 if ( dx == 0 && dy == 0 )
408 #define FT_SIGN_LONG( x ) ( (x) >> ( FT_SIZEOF_LONG * 8 - 1 ) )
409 #define FT_SIGN_INT( x ) ( (x) >> ( FT_SIZEOF_INT * 8 - 1 ) )
410 #define FT_SIGN_INT32( x ) ( (x) >> 31 )
411 #define FT_SIGN_INT16( x ) ( (x) >> 15 )
427 if ( angle && ( v.
x != 0 || v.
y != 0 ) )
436 FT_Int32
half = (FT_Int32)1L << ( shift - 1 );
445 vec->x = v.
x << shift;
446 vec->y = v.
y << shift;
466 return ( v.
y >= 0 ) ? v.
y : -v.
y;
470 return ( v.
x >= 0 ) ? v.
x : -v.
x;
480 return ( v.
x + ( 1 << ( shift - 1 ) ) ) >> shift;
482 return v.
x << -shift;
499 if ( v.
x == 0 && v.
y == 0 )
507 *length = ( shift >= 0 ) ? ( v.
x >> shift ) : ( v.
x << -shift );
FT_DivFix(FT_Long a, FT_Long b)
GLuint const GLfloat * val
static void ft_trig_pseudo_polarize(FT_Vector *vec)
#define FT_TRIG_MAX_ITERS
static FT_Fixed ft_trig_downscale(FT_Fixed val)
FT_Vector_From_Polar(FT_Vector *vec, FT_Fixed length, FT_Angle angle)
FT_Atan2(FT_Fixed x, FT_Fixed y)
#define FT_PAD_ROUND(x, n)
static void ft_trig_pseudo_rotate(FT_Vector *vec, FT_Angle theta)
static FT_Int ft_trig_prenorm(FT_Vector *vec)
FT_BEGIN_HEADER typedef FT_Fixed FT_Angle
static const FT_Fixed ft_trig_arctan_table[24]
FT_Vector_Unit(FT_Vector *vec, FT_Angle angle)
EGLSurface EGLint EGLint y
FT_Angle_Diff(FT_Angle angle1, FT_Angle angle2)
GLint GLint GLint GLint z
FT_Vector_Rotate(FT_Vector *vec, FT_Angle angle)
FT_Vector_Length(FT_Vector *vec)
struct FT_Int64_ FT_Int64
FT_Vector_Polarize(FT_Vector *vec, FT_Fixed *length, FT_Angle *angle)
GLfloat GLfloat GLfloat v2