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 |
---|
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 */ |
---|