1*37da2899SCharles.Forsyth /***************************************************************************/ 2*37da2899SCharles.Forsyth /* */ 3*37da2899SCharles.Forsyth /* ftcalc.h */ 4*37da2899SCharles.Forsyth /* */ 5*37da2899SCharles.Forsyth /* Arithmetic computations (specification). */ 6*37da2899SCharles.Forsyth /* */ 7*37da2899SCharles.Forsyth /* Copyright 1996-2001, 2002 by */ 8*37da2899SCharles.Forsyth /* David Turner, Robert Wilhelm, and Werner Lemberg. */ 9*37da2899SCharles.Forsyth /* */ 10*37da2899SCharles.Forsyth /* This file is part of the FreeType project, and may only be used, */ 11*37da2899SCharles.Forsyth /* modified, and distributed under the terms of the FreeType project */ 12*37da2899SCharles.Forsyth /* license, LICENSE.TXT. By continuing to use, modify, or distribute */ 13*37da2899SCharles.Forsyth /* this file you indicate that you have read the license and */ 14*37da2899SCharles.Forsyth /* understand and accept it fully. */ 15*37da2899SCharles.Forsyth /* */ 16*37da2899SCharles.Forsyth /***************************************************************************/ 17*37da2899SCharles.Forsyth 18*37da2899SCharles.Forsyth 19*37da2899SCharles.Forsyth #ifndef __FTCALC_H__ 20*37da2899SCharles.Forsyth #define __FTCALC_H__ 21*37da2899SCharles.Forsyth 22*37da2899SCharles.Forsyth 23*37da2899SCharles.Forsyth #include <ft2build.h> 24*37da2899SCharles.Forsyth #include FT_FREETYPE_H 25*37da2899SCharles.Forsyth 26*37da2899SCharles.Forsyth 27*37da2899SCharles.Forsyth FT_BEGIN_HEADER 28*37da2899SCharles.Forsyth 29*37da2899SCharles.Forsyth 30*37da2899SCharles.Forsyth FT_EXPORT( FT_Int32 ) FT_SqrtFixed( FT_Int32 x ); 31*37da2899SCharles.Forsyth 32*37da2899SCharles.Forsyth 33*37da2899SCharles.Forsyth #define SQRT_32( x ) FT_Sqrt32( x ) 34*37da2899SCharles.Forsyth 35*37da2899SCharles.Forsyth 36*37da2899SCharles.Forsyth /*************************************************************************/ 37*37da2899SCharles.Forsyth /* */ 38*37da2899SCharles.Forsyth /* <Function> */ 39*37da2899SCharles.Forsyth /* FT_Sqrt32 */ 40*37da2899SCharles.Forsyth /* */ 41*37da2899SCharles.Forsyth /* <Description> */ 42*37da2899SCharles.Forsyth /* Computes the square root of an Int32 integer (which will be */ 43*37da2899SCharles.Forsyth /* handled as an unsigned long value). */ 44*37da2899SCharles.Forsyth /* */ 45*37da2899SCharles.Forsyth /* <Input> */ 46*37da2899SCharles.Forsyth /* x :: The value to compute the root for. */ 47*37da2899SCharles.Forsyth /* */ 48*37da2899SCharles.Forsyth /* <Return> */ 49*37da2899SCharles.Forsyth /* The result of `sqrt(x)'. */ 50*37da2899SCharles.Forsyth /* */ 51*37da2899SCharles.Forsyth FT_EXPORT( FT_Int32 ) 52*37da2899SCharles.Forsyth FT_Sqrt32( FT_Int32 x ); 53*37da2899SCharles.Forsyth 54*37da2899SCharles.Forsyth 55*37da2899SCharles.Forsyth /*************************************************************************/ 56*37da2899SCharles.Forsyth /* */ 57*37da2899SCharles.Forsyth /* FT_MulDiv() and FT_MulFix() are declared in freetype.h. */ 58*37da2899SCharles.Forsyth /* */ 59*37da2899SCharles.Forsyth /*************************************************************************/ 60*37da2899SCharles.Forsyth 61*37da2899SCharles.Forsyth 62*37da2899SCharles.Forsyth #define INT_TO_F26DOT6( x ) ( (FT_Long)(x) << 6 ) 63*37da2899SCharles.Forsyth #define INT_TO_F2DOT14( x ) ( (FT_Long)(x) << 14 ) 64*37da2899SCharles.Forsyth #define INT_TO_FIXED( x ) ( (FT_Long)(x) << 16 ) 65*37da2899SCharles.Forsyth #define F2DOT14_TO_FIXED( x ) ( (FT_Long)(x) << 2 ) 66*37da2899SCharles.Forsyth #define FLOAT_TO_FIXED( x ) ( (FT_Long)( x * 65536.0 ) ) 67*37da2899SCharles.Forsyth 68*37da2899SCharles.Forsyth #define ROUND_F26DOT6( x ) ( x >= 0 ? ( ( (x) + 32 ) & -64 ) \ 69*37da2899SCharles.Forsyth : ( -( ( 32 - (x) ) & -64 ) ) ) 70*37da2899SCharles.Forsyth 71*37da2899SCharles.Forsyth 72*37da2899SCharles.Forsyth FT_END_HEADER 73*37da2899SCharles.Forsyth 74*37da2899SCharles.Forsyth #endif /* __FTCALC_H__ */ 75*37da2899SCharles.Forsyth 76*37da2899SCharles.Forsyth 77*37da2899SCharles.Forsyth /* END */ 78