diff options
Diffstat (limited to 'Build/source/libs/freetype/freetype-1.5/lib/ttcalc.h')
-rw-r--r-- | Build/source/libs/freetype/freetype-1.5/lib/ttcalc.h | 119 |
1 files changed, 119 insertions, 0 deletions
diff --git a/Build/source/libs/freetype/freetype-1.5/lib/ttcalc.h b/Build/source/libs/freetype/freetype-1.5/lib/ttcalc.h new file mode 100644 index 00000000000..98da62a1c21 --- /dev/null +++ b/Build/source/libs/freetype/freetype-1.5/lib/ttcalc.h @@ -0,0 +1,119 @@ +/******************************************************************* + * + * ttcalc.h + * + * Arithmetic Computations (specification). + * + * Copyright 1996-2002 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 TTCALC_H +#define TTCALC_H + +#include "ttconfig.h" +#include "freetype.h" + + +#ifdef __cplusplus + extern "C" { +#endif + +#ifdef LONG64 + + typedef INT64 TT_Int64; + +#define ADD_64( x, y, z ) z = x + y +#define SUB_64( x, y, z ) z = x - y +#define MUL_64( x, y, z ) z = (TT_Int64)(x) * (y) + +#define DIV_64( x, y ) ( (x) / (y) ) + +#define SQRT_64( x ) Sqrt64( x ) +#define SQRT_32( x ) Sqrt32( x ) + + FT_INTERNAL_DEF( TT_Int32 ) + Sqrt64( TT_Int64 l ) +#if defined __GCC__ && defined TT_MAKE_OPTION_SINGLE_OBJECT + __attribute__ (( unused )) /* keep the compiler mute */ +#endif + ; + +#else /* LONG64 */ + + struct TT_Int64_ + { + TT_Word32 lo; + TT_Word32 hi; + }; + + typedef struct TT_Int64_ TT_Int64; + +#define ADD_64( x, y, z ) Add64( &x, &y, &z ) +#define SUB_64( x, y, z ) Sub64( &x, &y, &z ) +#define MUL_64( x, y, z ) MulTo64( x, y, &z ) + +#define DIV_64( x, y ) Div64by32( &x, y ) + +#define SQRT_64( x ) Sqrt64( &x ) +#define SQRT_32( x ) Sqrt32( x ) + + FT_INTERNAL_DEF( void ) + Add64( TT_Int64* x, + TT_Int64* y, + TT_Int64* z ); + FT_INTERNAL_DEF( void ) + Sub64( TT_Int64* x, + TT_Int64* y, + TT_Int64* z ); + + FT_INTERNAL_DEF( void ) + MulTo64( TT_Int32 x, + TT_Int32 y, + TT_Int64* z ); + + FT_INTERNAL_DEF( TT_Int32 ) + Div64by32( TT_Int64* x, + TT_Int32 y ); + + FT_INTERNAL_DEF( int ) + Order64( TT_Int64* z ); + + FT_INTERNAL_DEF( TT_Int32 ) + Sqrt64( TT_Int64* l ) +#if defined __GCC__ && defined TT_MAKE_OPTION_SINGLE_OBJECT + __attribute__ (( unused )) /* keep the compiler mute */ +#endif + ; + +#endif /* LONG64 */ + + /* The two following functions are now part of the API! */ + + /* TT_Long TT_MulDiv( TT_Long a, TT_Long b, TT_Long c ); */ + /* TT_Long TT_MulFix( TT_Long a, TT_Long b ); */ + + +#define INT_TO_F26DOT6( x ) ( (Long)(x) << 6 ) +#define INT_TO_F2DOT14( x ) ( (Long)(x) << 14 ) +#define INT_TO_FIXED( x ) ( (Long)(x) << 16 ) +#define F2DOT14_TO_FIXED( x ) ( (Long)(x) << 2 ) +#define FLOAT_TO_FIXED( x ) ( (Long)(x * 65536.0) ) + +#define ROUND_F26DOT6( x ) ( x >= 0 ? ( ((x) + 32) & -64) \ + : ( -((32 - (x)) & -64) ) ) + +#ifdef __cplusplus + } +#endif + +#endif /* TTCALC_H */ + +/* END */ |