|
1 /***************************************************************************/ |
|
2 /* */ |
|
3 /* ftmisc.h */ |
|
4 /* */ |
|
5 /* Miscellaneous macros for stand-alone rasterizer (specification */ |
|
6 /* only). */ |
|
7 /* */ |
|
8 /* Copyright 2005, 2009, 2010 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 |
|
31 /* memset */ |
|
32 #include FT_CONFIG_STANDARD_LIBRARY_H |
|
33 |
|
34 #define FT_BEGIN_HEADER |
|
35 #define FT_END_HEADER |
|
36 |
|
37 #define FT_LOCAL_DEF( x ) static x |
|
38 |
|
39 |
|
40 /* from include/freetype2/fttypes.h */ |
|
41 |
|
42 typedef unsigned char FT_Byte; |
|
43 typedef signed int FT_Int; |
|
44 typedef unsigned int FT_UInt; |
|
45 typedef signed long FT_Long; |
|
46 typedef unsigned long FT_ULong; |
|
47 typedef signed long FT_F26Dot6; |
|
48 typedef int FT_Error; |
|
49 |
|
50 #define FT_MAKE_TAG( _x1, _x2, _x3, _x4 ) \ |
|
51 ( ( (FT_ULong)_x1 << 24 ) | \ |
|
52 ( (FT_ULong)_x2 << 16 ) | \ |
|
53 ( (FT_ULong)_x3 << 8 ) | \ |
|
54 (FT_ULong)_x4 ) |
|
55 |
|
56 |
|
57 /* from include/freetype2/ftsystem.h */ |
|
58 |
|
59 typedef struct FT_MemoryRec_* FT_Memory; |
|
60 |
|
61 typedef void* (*FT_Alloc_Func)( FT_Memory memory, |
|
62 long size ); |
|
63 |
|
64 typedef void (*FT_Free_Func)( FT_Memory memory, |
|
65 void* block ); |
|
66 |
|
67 typedef void* (*FT_Realloc_Func)( FT_Memory memory, |
|
68 long cur_size, |
|
69 long new_size, |
|
70 void* block ); |
|
71 |
|
72 typedef struct FT_MemoryRec_ |
|
73 { |
|
74 void* user; |
|
75 |
|
76 FT_Alloc_Func alloc; |
|
77 FT_Free_Func free; |
|
78 FT_Realloc_Func realloc; |
|
79 |
|
80 } FT_MemoryRec; |
|
81 |
|
82 |
|
83 /* from src/ftcalc.c */ |
|
84 |
|
85 #if ( defined _WIN32 || defined _WIN64 ) |
|
86 |
|
87 typedef __int64 FT_Int64; |
|
88 |
|
89 #else |
|
90 |
|
91 #include "inttypes.h" |
|
92 |
|
93 typedef int64_t FT_Int64; |
|
94 |
|
95 #endif |
|
96 |
|
97 |
|
98 static FT_Long |
|
99 FT_MulDiv( FT_Long a, |
|
100 FT_Long b, |
|
101 FT_Long c ) |
|
102 { |
|
103 FT_Int s; |
|
104 FT_Long d; |
|
105 |
|
106 |
|
107 s = 1; |
|
108 if ( a < 0 ) { a = -a; s = -1; } |
|
109 if ( b < 0 ) { b = -b; s = -s; } |
|
110 if ( c < 0 ) { c = -c; s = -s; } |
|
111 |
|
112 d = (FT_Long)( c > 0 ? ( (FT_Int64)a * b + ( c >> 1 ) ) / c |
|
113 : 0x7FFFFFFFL ); |
|
114 |
|
115 return ( s > 0 ) ? d : -d; |
|
116 } |
|
117 |
|
118 #endif /* __FTMISC_H__ */ |
|
119 |
|
120 |
|
121 /* END */ |