summaryrefslogtreecommitdiff
path: root/Build/source/libs/freetype/freetype-1.5/lib/ttcalc.h
diff options
context:
space:
mode:
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.h119
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 */