1 /***************************************************************************/ 2 /* */ 3 /* ftmisc.h */ 4 /* */ 5 /* Miscellaneous macros for stand-alone rasterizer (specification */ 6 /* only). */ 7 /* */ 8 /* Copyright 2005, 2009 by */ 9 /* David Turner, Robert Wilhelm, and Werner Lemberg. */ 10 /* */ 11 /* This file is part of the FreeType project, and may only be used */ 12 /* modified and distributed under the terms of the FreeType project */ 13 /* license, LICENSE.TXT. By continuing to use, modify, or distribute */ 14 /* this file you indicate that you have read the license and */ 15 /* understand and accept it fully. */ 16 /* */ 17 /***************************************************************************/ 18 19 20 /***************************************************/ 21 /* */ 22 /* This file is *not* portable! You have to adapt */ 23 /* its definitions to your platform. */ 24 /* */ 25 /***************************************************/ 26 27 #ifndef __FTMISC_H__ 28 #define __FTMISC_H__ 29 30 /* memset */ 31 #include FT_CONFIG_STANDARD_LIBRARY_H 32 33 #define FT_BEGIN_HEADER 34 #define FT_END_HEADER 35 36 #define FT_LOCAL_DEF( x ) static x 37 38 /* from include/freetype2/fttypes.h */ 39 40 typedef unsigned char FT_Byte; 41 typedef signed int FT_Int; 42 typedef unsigned int FT_UInt; 43 typedef signed long FT_Long; 44 typedef unsigned long FT_ULong; 45 typedef signed long FT_F26Dot6; 46 typedef int FT_Error; 47 48 #define FT_MAKE_TAG( _x1, _x2, _x3, _x4 ) \ 49 ( ( (FT_ULong)_x1 << 24 ) | \ 50 ( (FT_ULong)_x2 << 16 ) | \ 51 ( (FT_ULong)_x3 << 8 ) | \ 52 (FT_ULong)_x4 ) 53 54 55 /* from src/ftcalc.c */ 56 57 #include <inttypes.h> 58 59 typedef int64_t FT_Int64; 60 61 static FT_Long FT_MulDiv(FT_Long a,FT_Long b,FT_Long c)62 FT_MulDiv( FT_Long a, 63 FT_Long b, 64 FT_Long c ) 65 { 66 FT_Int s; 67 FT_Long d; 68 69 70 s = 1; 71 if ( a < 0 ) { a = -a; s = -1; } 72 if ( b < 0 ) { b = -b; s = -s; } 73 if ( c < 0 ) { c = -c; s = -s; } 74 75 d = (FT_Long)( c > 0 ? ( (FT_Int64)a * b + ( c >> 1 ) ) / c 76 : 0x7FFFFFFFL ); 77 78 return ( s > 0 ) ? d : -d; 79 } 80 81 #endif /* __FTMISC_H__ */ 82 83 84 /* END */ 85