ReactOS 0.4.16-dev-1019-g2c2cdfd
fttrigon.h File Reference

Go to the source code of this file.

Macros

#define FT_ANGLE_PI   ( 180L << 16 )
 
#define FT_ANGLE_2PI   ( FT_ANGLE_PI * 2 )
 
#define FT_ANGLE_PI2   ( FT_ANGLE_PI / 2 )
 
#define FT_ANGLE_PI4   ( FT_ANGLE_PI / 4 )
 

Functions

 FT_Sin (FT_Angle angle)
 
 FT_Cos (FT_Angle angle)
 
 FT_Tan (FT_Angle angle)
 
 FT_Atan2 (FT_Fixed x, FT_Fixed y)
 
 FT_Angle_Diff (FT_Angle angle1, FT_Angle angle2)
 
 FT_Vector_Unit (FT_Vector *vec, FT_Angle angle)
 
 FT_Vector_Rotate (FT_Vector *vec, FT_Angle angle)
 
 FT_Vector_Length (FT_Vector *vec)
 
 FT_Vector_Polarize (FT_Vector *vec, FT_Fixed *length, FT_Angle *angle)
 
 FT_Vector_From_Polar (FT_Vector *vec, FT_Fixed length, FT_Angle angle)
 

Variables

FT_BEGIN_HEADER typedef FT_Fixed FT_Angle
 

Macro Definition Documentation

◆ FT_ANGLE_2PI

#define FT_ANGLE_2PI   ( FT_ANGLE_PI * 2 )

Definition at line 76 of file fttrigon.h.

◆ FT_ANGLE_PI

#define FT_ANGLE_PI   ( 180L << 16 )

Definition at line 64 of file fttrigon.h.

◆ FT_ANGLE_PI2

#define FT_ANGLE_PI2   ( FT_ANGLE_PI / 2 )

Definition at line 88 of file fttrigon.h.

◆ FT_ANGLE_PI4

#define FT_ANGLE_PI4   ( FT_ANGLE_PI / 4 )

Definition at line 100 of file fttrigon.h.

Function Documentation

◆ FT_Angle_Diff()

FT_Angle_Diff ( FT_Angle  angle1,
FT_Angle  angle2 
)

Definition at line 502 of file fttrigon.c.

504 {
505 FT_Angle delta = angle2 - angle1;
506
507
508 while ( delta <= -FT_ANGLE_PI )
509 delta += FT_ANGLE_2PI;
510
511 while ( delta > FT_ANGLE_PI )
512 delta -= FT_ANGLE_2PI;
513
514 return delta;
515 }
FT_BEGIN_HEADER typedef FT_Fixed FT_Angle
Definition: fttrigon.h:52
#define FT_ANGLE_PI
Definition: fttrigon.h:64
#define FT_ANGLE_2PI
Definition: fttrigon.h:76

Referenced by ft_angle_mean(), ft_conic_is_small_enough(), ft_cubic_is_small_enough(), ft_stroker_arcto(), FT_Stroker_ConicTo(), FT_Stroker_CubicTo(), FT_Stroker_EndSubPath(), ft_stroker_inside(), ft_stroker_outside(), and ft_stroker_process_corner().

◆ FT_Atan2()

FT_Atan2 ( FT_Fixed  x,
FT_Fixed  y 
)

Definition at line 340 of file fttrigon.c.

342 {
343 FT_Vector v;
344
345
346 if ( dx == 0 && dy == 0 )
347 return 0;
348
349 v.x = dx;
350 v.y = dy;
351 ft_trig_prenorm( &v );
353
354 return v.y;
355 }
static void ft_trig_pseudo_polarize(FT_Vector *vec)
Definition: fttrigon.c:219
static FT_Int ft_trig_prenorm(FT_Vector *vec)
Definition: fttrigon.c:134
const GLdouble * v
Definition: gl.h:2040
GLint dy
Definition: linetemp.h:97
GLint dx
Definition: linetemp.h:97

Referenced by ft_conic_is_small_enough(), ft_cubic_is_small_enough(), FT_Stroker_ConicTo(), FT_Stroker_CubicTo(), and FT_Stroker_LineTo().

◆ FT_Cos()

FT_Cos ( FT_Angle  angle)

Definition at line 298 of file fttrigon.c.

299 {
300 FT_Vector v;
301
302
304
305 return v.x;
306 }
FT_Vector_Unit(FT_Vector *vec, FT_Angle angle)
Definition: fttrigon.c:361
GLfloat angle
Definition: glext.h:10853

Referenced by ft_stroke_border_arcto(), FT_Stroker_ConicTo(), FT_Stroker_CubicTo(), ft_stroker_inside(), and ft_stroker_outside().

◆ FT_Sin()

FT_Sin ( FT_Angle  angle)

Definition at line 312 of file fttrigon.c.

313 {
314 FT_Vector v;
315
316
318
319 return v.y;
320 }

Referenced by ft_stroke_border_arcto(), FT_Stroker_ConicTo(), FT_Stroker_CubicTo(), and ft_stroker_outside().

◆ FT_Tan()

FT_Tan ( FT_Angle  angle)

Definition at line 326 of file fttrigon.c.

327 {
328 FT_Vector v = { 1 << 24, 0 };
329
330
332
333 return FT_DivFix( v.y, v.x );
334 }
FT_DivFix(FT_Long a, FT_Long b)
Definition: ftcalc.c:608
static void ft_trig_pseudo_rotate(FT_Vector *vec, FT_Angle theta)
Definition: fttrigon.c:164

Referenced by ft_stroker_inside().

◆ FT_Vector_From_Polar()

FT_Vector_From_Polar ( FT_Vector vec,
FT_Fixed  length,
FT_Angle  angle 
)

Definition at line 485 of file fttrigon.c.

488 {
489 if ( !vec )
490 return;
491
492 vec->x = length;
493 vec->y = 0;
494
496 }
FT_Vector * vec
Definition: ftbbox.c:470
FT_Vector_Rotate(FT_Vector *vec, FT_Angle angle)
Definition: fttrigon.c:378
GLuint GLsizei GLsizei * length
Definition: glext.h:6040
FT_Pos x
Definition: ftimage.h:78
FT_Pos y
Definition: ftimage.h:79

Referenced by ft_stroke_border_arcto(), ft_stroker_cap(), FT_Stroker_ConicTo(), FT_Stroker_CubicTo(), ft_stroker_inside(), FT_Stroker_LineTo(), ft_stroker_outside(), and ft_stroker_subpath_start().

◆ FT_Vector_Length()

FT_Vector_Length ( FT_Vector vec)

Definition at line 418 of file fttrigon.c.

419 {
421 FT_Vector v;
422
423
424 if ( !vec )
425 return 0;
426
427 v = *vec;
428
429 /* handle trivial cases */
430 if ( v.x == 0 )
431 {
432 return FT_ABS( v.y );
433 }
434 else if ( v.y == 0 )
435 {
436 return FT_ABS( v.x );
437 }
438
439 /* general case */
440 shift = ft_trig_prenorm( &v );
442
443 v.x = ft_trig_downscale( v.x );
444
445 if ( shift > 0 )
446 return ( v.x + ( 1L << ( shift - 1 ) ) ) >> shift;
447
448 return (FT_Fixed)( (FT_UInt32)v.x << -shift );
449 }
#define FT_ABS(a)
Definition: ftobjs.h:73
static FT_Fixed ft_trig_downscale(FT_Fixed val)
Definition: fttrigon.c:84
signed long FT_Fixed
Definition: fttypes.h:287
signed int FT_Int
Definition: fttypes.h:220
#define shift
Definition: input.c:1755

Referenced by FT_Hypot(), FT_Stroker_ConicTo(), FT_Stroker_CubicTo(), and FT_Stroker_LineTo().

◆ FT_Vector_Polarize()

FT_Vector_Polarize ( FT_Vector vec,
FT_Fixed length,
FT_Angle angle 
)

Definition at line 455 of file fttrigon.c.

458 {
460 FT_Vector v;
461
462
463 if ( !vec || !length || !angle )
464 return;
465
466 v = *vec;
467
468 if ( v.x == 0 && v.y == 0 )
469 return;
470
471 shift = ft_trig_prenorm( &v );
473
474 v.x = ft_trig_downscale( v.x );
475
476 *length = shift >= 0 ? ( v.x >> shift )
477 : (FT_Fixed)( (FT_UInt32)v.x << -shift );
478 *angle = v.y;
479 }

◆ FT_Vector_Rotate()

FT_Vector_Rotate ( FT_Vector vec,
FT_Angle  angle 
)

Definition at line 378 of file fttrigon.c.

380 {
382 FT_Vector v;
383
384
385 if ( !vec || !angle )
386 return;
387
388 v = *vec;
389
390 if ( v.x == 0 && v.y == 0 )
391 return;
392
393 shift = ft_trig_prenorm( &v );
395 v.x = ft_trig_downscale( v.x );
396 v.y = ft_trig_downscale( v.y );
397
398 if ( shift > 0 )
399 {
400 FT_Int32 half = (FT_Int32)1L << ( shift - 1 );
401
402
403 vec->x = ( v.x + half - ( v.x < 0 ) ) >> shift;
404 vec->y = ( v.y + half - ( v.y < 0 ) ) >> shift;
405 }
406 else
407 {
408 shift = -shift;
409 vec->x = (FT_Pos)( (FT_ULong)v.x << shift );
410 vec->y = (FT_Pos)( (FT_ULong)v.y << shift );
411 }
412 }
FT_BEGIN_HEADER typedef signed long FT_Pos
Definition: ftimage.h:58
unsigned long FT_ULong
Definition: fttypes.h:253

Referenced by FT_Vector_From_Polar().

◆ FT_Vector_Unit()

FT_Vector_Unit ( FT_Vector vec,
FT_Angle  angle 
)

Definition at line 361 of file fttrigon.c.

363 {
364 if ( !vec )
365 return;
366
367 vec->x = FT_TRIG_SCALE >> 8;
368 vec->y = 0;
370 vec->x = ( vec->x + 0x80L ) >> 8;
371 vec->y = ( vec->y + 0x80L ) >> 8;
372 }
#define FT_TRIG_SCALE
Definition: fttrigon.c:39

Referenced by FT_Cos(), FT_Sin(), and IntEscapeMatrix().

Variable Documentation

◆ FT_Angle