Mercurial > hg > dmlib
annotate src/dmlib.h @ 1143:e7c3de96b6fd
Check if we are compiling for Windows and if we are compiling under MINGW.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Thu, 05 Mar 2015 02:34:50 +0200 |
parents | f8e9f6b2a41a |
children | af2c9f76c782 |
rev | line source |
---|---|
0 | 1 /* |
2 * DMLib | |
3 * -- Main header file | |
4 * Programmed and designed by Matti 'ccr' Hamalainen | |
863 | 5 * (C) Copyright 2011-2015 Tecnic Software productions (TNSP) |
0 | 6 */ |
7 #ifndef DMLIB_H | |
8 #define DMLIB_H | |
9 | |
288
e2f286781180
Use more glanular header includes from SDL, enables us to succesfully link
Matti Hamalainen <ccr@tnsp.org>
parents:
265
diff
changeset
|
10 #include <SDL_config.h> |
e2f286781180
Use more glanular header includes from SDL, enables us to succesfully link
Matti Hamalainen <ccr@tnsp.org>
parents:
265
diff
changeset
|
11 #include <SDL_endian.h> |
e2f286781180
Use more glanular header includes from SDL, enables us to succesfully link
Matti Hamalainen <ccr@tnsp.org>
parents:
265
diff
changeset
|
12 #include <SDL_types.h> |
e2f286781180
Use more glanular header includes from SDL, enables us to succesfully link
Matti Hamalainen <ccr@tnsp.org>
parents:
265
diff
changeset
|
13 #include <SDL_mutex.h> |
781
e15e0469499a
Add initial code for simulating audio playback while in no-sound situation.
Matti Hamalainen <ccr@tnsp.org>
parents:
770
diff
changeset
|
14 #include <SDL_thread.h> |
288
e2f286781180
Use more glanular header includes from SDL, enables us to succesfully link
Matti Hamalainen <ccr@tnsp.org>
parents:
265
diff
changeset
|
15 #include <SDL_video.h> |
0 | 16 #include <stdarg.h> |
17 | |
18 #ifdef DM_USE_ASSERTS | |
770 | 19 # include <assert.h> |
0 | 20 #else |
770 | 21 # define assert(NEXPR) // stub |
0 | 22 #endif |
23 | |
1046
7e54b2d08ce7
Add special debug error message function/macro that can be
Matti Hamalainen <ccr@tnsp.org>
parents:
980
diff
changeset
|
24 |
1143
e7c3de96b6fd
Check if we are compiling for Windows and if we are compiling under MINGW.
Matti Hamalainen <ccr@tnsp.org>
parents:
1106
diff
changeset
|
25 // Check for arch bitness |
e7c3de96b6fd
Check if we are compiling for Windows and if we are compiling under MINGW.
Matti Hamalainen <ccr@tnsp.org>
parents:
1106
diff
changeset
|
26 #if defined(__WIN64) || defined(_WIN64) || defined(_WIN32) || defined(__WIN32) |
e7c3de96b6fd
Check if we are compiling for Windows and if we are compiling under MINGW.
Matti Hamalainen <ccr@tnsp.org>
parents:
1106
diff
changeset
|
27 # define DM_WINDOWS 1 |
e7c3de96b6fd
Check if we are compiling for Windows and if we are compiling under MINGW.
Matti Hamalainen <ccr@tnsp.org>
parents:
1106
diff
changeset
|
28 # if defined(__MINGW32__) || defined(__MINGW64__) |
e7c3de96b6fd
Check if we are compiling for Windows and if we are compiling under MINGW.
Matti Hamalainen <ccr@tnsp.org>
parents:
1106
diff
changeset
|
29 # define __USE_MINGW_ANSI_STDIO 1 |
e7c3de96b6fd
Check if we are compiling for Windows and if we are compiling under MINGW.
Matti Hamalainen <ccr@tnsp.org>
parents:
1106
diff
changeset
|
30 # endif |
e7c3de96b6fd
Check if we are compiling for Windows and if we are compiling under MINGW.
Matti Hamalainen <ccr@tnsp.org>
parents:
1106
diff
changeset
|
31 #endif |
0 | 32 #ifdef __cplusplus |
33 extern "C" { | |
34 #endif | |
35 | |
36 // Defaults | |
913 | 37 #define DM_PROG_AUTHOR "By Matti 'ccr' Hamalainen (C) Copyright 2015 TNSP" |
341 | 38 #define DM_PROG_LICENSE "Et all, see README / COPYING for more information." |
0 | 39 |
40 /* Error codes | |
41 */ | |
42 enum { | |
770 | 43 // General error codes |
44 DMERR_OK = 0, | |
45 DMERR_PROGRESS, // Status OK, but operation in progress | |
831
a855f88f86ee
Reorder internal error code.
Matti Hamalainen <ccr@tnsp.org>
parents:
816
diff
changeset
|
46 |
a855f88f86ee
Reorder internal error code.
Matti Hamalainen <ccr@tnsp.org>
parents:
816
diff
changeset
|
47 DMERR_INTERNAL, |
26
2f463a59d732
Implement rudimentary resource system.
Matti Hamalainen <ccr@tnsp.org>
parents:
19
diff
changeset
|
48 |
770 | 49 DMERR_FOPEN, |
50 DMERR_FREAD, | |
51 DMERR_FWRITE, | |
52 DMERR_FSEEK, | |
53 DMERR_NOT_FOUND, // Resource/data not found | |
0 | 54 |
770 | 55 DMERR_INVALID_DATA, // Some data was invalid |
56 DMERR_MALLOC, // Memory allocation failure | |
57 DMERR_ALREADY_INIT, // Resource has already been initialized | |
58 DMERR_INIT_FAIL, // General initialization failure | |
59 DMERR_INVALID_ARGS, | |
0 | 60 |
770 | 61 DMERR_NULLPTR, // NULL pointer specified in critical argument |
62 DMERR_NOT_SUPPORTED,// Operation not supported | |
63 DMERR_OUT_OF_DATA, | |
64 DMERR_EXTRA_DATA, | |
65 DMERR_BOUNDS, | |
1102
e06abfde6c39
Cosmetics pass: Remove excess whitespace.
Matti Hamalainen <ccr@tnsp.org>
parents:
1048
diff
changeset
|
66 |
908
03bda6477ad4
Add new error code DMERR_DATA_ERROR.
Matti Hamalainen <ccr@tnsp.org>
parents:
889
diff
changeset
|
67 DMERR_DATA_ERROR, // Data decoding/encoding/parsing error |
0 | 68 |
770 | 69 // PACK-file subsystem |
70 DMERR_NOTPACK, | |
71 DMERR_VERSION, | |
72 DMERR_INVALID, | |
73 DMERR_COMPRESSION, | |
0 | 74 }; |
75 | |
955 | 76 |
813 | 77 // Directory/path separator stuff |
78 #define DM_DIR_SEPARATOR '/' | |
79 | |
0 | 80 |
81 // Resource management defines | |
82 #define DMRES_NAME_LEN 32 | |
83 #define DMRES_DATA_PACK "data.pak" // Name of the data-file | |
601
588998ccc07a
Change resource directory path DATA/ -> data/
Matti Hamalainen <ccr@tnsp.org>
parents:
569
diff
changeset
|
84 #define DMRES_DATA_PATH "data/" // Sub-directory path |
0 | 85 #define DMRES_RES_FILE "res.txt" // Resource data file |
86 | |
87 | |
88 /* Define a boolean type | |
89 */ | |
90 #if !defined(FALSE) && !defined(TRUE) && !defined(BOOL) | |
91 typedef enum { FALSE = 0, TRUE = 1 } BOOL; | |
92 #endif | |
93 | |
94 #ifndef BOOL | |
770 | 95 # ifdef bool |
96 # define BOOL bool | |
97 # else | |
98 # define BOOL int | |
99 # endif | |
0 | 100 #endif |
101 | |
102 | |
305
036fde2fd630
Add mathematical constants DM_PI, DM_PI2 and DM_E.
Matti Hamalainen <ccr@tnsp.org>
parents:
294
diff
changeset
|
103 /* Math constants |
036fde2fd630
Add mathematical constants DM_PI, DM_PI2 and DM_E.
Matti Hamalainen <ccr@tnsp.org>
parents:
294
diff
changeset
|
104 */ |
036fde2fd630
Add mathematical constants DM_PI, DM_PI2 and DM_E.
Matti Hamalainen <ccr@tnsp.org>
parents:
294
diff
changeset
|
105 #define DM_PI 3.14159265358f |
036fde2fd630
Add mathematical constants DM_PI, DM_PI2 and DM_E.
Matti Hamalainen <ccr@tnsp.org>
parents:
294
diff
changeset
|
106 #define DM_PI2 6.28318530718f |
036fde2fd630
Add mathematical constants DM_PI, DM_PI2 and DM_E.
Matti Hamalainen <ccr@tnsp.org>
parents:
294
diff
changeset
|
107 #define DM_E 2.71828182846f |
036fde2fd630
Add mathematical constants DM_PI, DM_PI2 and DM_E.
Matti Hamalainen <ccr@tnsp.org>
parents:
294
diff
changeset
|
108 |
036fde2fd630
Add mathematical constants DM_PI, DM_PI2 and DM_E.
Matti Hamalainen <ccr@tnsp.org>
parents:
294
diff
changeset
|
109 |
0 | 110 /* Fixed point math type |
111 */ | |
112 typedef union | |
113 { | |
36
f3407a58e01e
Change DMFixedPoint types and appropriate JSS functions back to using signed
Matti Hamalainen <ccr@tnsp.org>
parents:
26
diff
changeset
|
114 Sint64 dw; |
f3407a58e01e
Change DMFixedPoint types and appropriate JSS functions back to using signed
Matti Hamalainen <ccr@tnsp.org>
parents:
26
diff
changeset
|
115 Sint32 w[2]; |
0 | 116 } DMFixedPoint; |
117 | |
118 | |
119 typedef union | |
120 { | |
36
f3407a58e01e
Change DMFixedPoint types and appropriate JSS functions back to using signed
Matti Hamalainen <ccr@tnsp.org>
parents:
26
diff
changeset
|
121 Sint32 dw; |
f3407a58e01e
Change DMFixedPoint types and appropriate JSS functions back to using signed
Matti Hamalainen <ccr@tnsp.org>
parents:
26
diff
changeset
|
122 Sint16 w[2]; |
0 | 123 } DMFixedPoint32; |
124 | |
125 | |
126 /* Macros for fixed point math | |
127 */ | |
956
d4e411192238
Remove check for GCC >= 3.x, it's only sane to support 4+.
Matti Hamalainen <ccr@tnsp.org>
parents:
955
diff
changeset
|
128 #define FP_SET(a, k) a.dw = k ## ULL |
138
459a1be2bd0f
A minor improvement to FP_CONV() fixed point macro.
Matti Hamalainen <ccr@tnsp.org>
parents:
118
diff
changeset
|
129 #define FP_CONV(a, k) a.dw = (k) |
0 | 130 |
131 #ifndef SDL_BYTEORDER | |
132 # error Undefined byteorder! | |
133 #endif | |
134 | |
135 #if (SDL_BYTEORDER == SDL_BIG_ENDIAN) | |
136 # define FP_SETH(a, k) a.w[0] = (k) | |
137 # define FP_SETL(a, k) a.w[1] = (k) | |
138 # define FP_SETHL(a, h, l) { a.w[0] = (h); a.w[1] = (l); } | |
809
eba3b87f3f84
Add some separate macros for 64/32 precision fixed point types.
Matti Hamalainen <ccr@tnsp.org>
parents:
805
diff
changeset
|
139 # define FP_GETH32(a) a.w[0] |
eba3b87f3f84
Add some separate macros for 64/32 precision fixed point types.
Matti Hamalainen <ccr@tnsp.org>
parents:
805
diff
changeset
|
140 # define FP_GETL32(a) a.w[1] |
eba3b87f3f84
Add some separate macros for 64/32 precision fixed point types.
Matti Hamalainen <ccr@tnsp.org>
parents:
805
diff
changeset
|
141 # define FP_GETH16(a) a.w[0] |
eba3b87f3f84
Add some separate macros for 64/32 precision fixed point types.
Matti Hamalainen <ccr@tnsp.org>
parents:
805
diff
changeset
|
142 # define FP_GETL16(a) a.w[1] |
0 | 143 #elif (SDL_BYTEORDER == SDL_LIL_ENDIAN) |
144 # define FP_SETH(a, k) a.w[1] = (k) | |
145 # define FP_SETL(a, k) a.w[0] = (k) | |
146 # define FP_SETHL(a, h, l) { a.w[1] = (h); a.w[0] = (l); } | |
809
eba3b87f3f84
Add some separate macros for 64/32 precision fixed point types.
Matti Hamalainen <ccr@tnsp.org>
parents:
805
diff
changeset
|
147 # define FP_GETH32(a) a.w[1] |
eba3b87f3f84
Add some separate macros for 64/32 precision fixed point types.
Matti Hamalainen <ccr@tnsp.org>
parents:
805
diff
changeset
|
148 # define FP_GETL32(a) a.w[0] |
eba3b87f3f84
Add some separate macros for 64/32 precision fixed point types.
Matti Hamalainen <ccr@tnsp.org>
parents:
805
diff
changeset
|
149 # define FP_GETH16(a) a.w[1] |
eba3b87f3f84
Add some separate macros for 64/32 precision fixed point types.
Matti Hamalainen <ccr@tnsp.org>
parents:
805
diff
changeset
|
150 # define FP_GETL16(a) a.w[0] |
0 | 151 #else |
152 # error Unsupported byte order! | |
153 #endif | |
154 | |
809
eba3b87f3f84
Add some separate macros for 64/32 precision fixed point types.
Matti Hamalainen <ccr@tnsp.org>
parents:
805
diff
changeset
|
155 #define FP_PRINTF64(a) printf("%.8x:%.8x", FP_GETH32(a), FP_GETL32(a)) |
eba3b87f3f84
Add some separate macros for 64/32 precision fixed point types.
Matti Hamalainen <ccr@tnsp.org>
parents:
805
diff
changeset
|
156 #define FP_PRINTF32(a) printf("%.4x:%.4x", FP_GETH16(a), FP_GETL16(a)) |
0 | 157 |
158 #define FP_ADD(a, b) a.dw += b.dw | |
159 #define FP_SUB(a, b) a.dw -= b.dw | |
160 #define FP_ADD_R(r, a, b) r.dw = a.dw + b.dw | |
161 #define FP_SUB_R(r, a, b) r.dw = a.dw - b.dw | |
162 #define FP_DIV(a, b) a.dw /= b.dw | |
163 #define FP_MUL(a, b) a.dw *= b.dw | |
164 #define FP_DIV_R(r, a, b) r.dw = (a.dw / b.dw) | |
165 #define FP_MUL_R(r, a, b) r.dw = (a.dw * b.dw) | |
166 | |
167 | |
168 /* Miscellaneous types | |
169 */ | |
170 typedef struct | |
171 { | |
172 #if (SDL_BYTEORDER == SDL_BIG_ENDIAN) | |
173 Uint8 a,g,b,r; | |
174 #elif (SDL_BYTEORDER == SDL_LIL_ENDIAN) | |
175 Uint8 r,g,b,a; | |
176 #endif | |
971
f654435df15e
Rename DMRGBA32 struct to DMColor and remove the original redundant DMColor
Matti Hamalainen <ccr@tnsp.org>
parents:
958
diff
changeset
|
177 } DMColor; |
0 | 178 |
179 | |
180 typedef float DMFloat; | |
181 | |
182 | |
118
c36e0316de9f
Move DM_SWAP() macro to dmlib.h
Matti Hamalainen <ccr@tnsp.org>
parents:
108
diff
changeset
|
183 // Macro for swapping two lvalues of same type |
c36e0316de9f
Move DM_SWAP() macro to dmlib.h
Matti Hamalainen <ccr@tnsp.org>
parents:
108
diff
changeset
|
184 #define DM_SWAP(T, A, B) { if ((B) < (A)) { T swtmp = (B); B = (A); A = swtmp; } } |
c36e0316de9f
Move DM_SWAP() macro to dmlib.h
Matti Hamalainen <ccr@tnsp.org>
parents:
108
diff
changeset
|
185 |
c36e0316de9f
Move DM_SWAP() macro to dmlib.h
Matti Hamalainen <ccr@tnsp.org>
parents:
108
diff
changeset
|
186 |
0 | 187 /* Drawing modes used by blitting and some other functions. |
188 */ | |
189 enum | |
190 { | |
191 DMD_NONE = 0x0000, | |
192 DMD_TRANSPARENT = 0x0001, | |
193 DMD_SATURATE = 0x0002, | |
1102
e06abfde6c39
Cosmetics pass: Remove excess whitespace.
Matti Hamalainen <ccr@tnsp.org>
parents:
1048
diff
changeset
|
194 |
0 | 195 DMD_ANTIALIAS = 0x0004, |
1102
e06abfde6c39
Cosmetics pass: Remove excess whitespace.
Matti Hamalainen <ccr@tnsp.org>
parents:
1048
diff
changeset
|
196 |
0 | 197 DMD_NMODES = 6 |
198 }; | |
199 | |
200 | |
201 // Available bitdepths. Not all functions may support every one of these. | |
202 enum | |
203 { | |
204 DMD_8BIT = 0, | |
205 DMD_32BIT, | |
1102
e06abfde6c39
Cosmetics pass: Remove excess whitespace.
Matti Hamalainen <ccr@tnsp.org>
parents:
1048
diff
changeset
|
206 |
0 | 207 DMD_NBITDEPTHS |
208 }; | |
209 | |
210 | |
211 static inline int dmBitsPerPixel2Index(int bpp) | |
212 { | |
213 return (bpp == 8 ? 0 : (bpp == 32 ? 1 : -1)); | |
214 } | |
215 | |
216 | |
980
43594ac98f91
Move dmClamp*() functions back to dmlib.h
Matti Hamalainen <ccr@tnsp.org>
parents:
976
diff
changeset
|
217 static inline DMFloat dmClamp10(const DMFloat a) |
43594ac98f91
Move dmClamp*() functions back to dmlib.h
Matti Hamalainen <ccr@tnsp.org>
parents:
976
diff
changeset
|
218 { |
43594ac98f91
Move dmClamp*() functions back to dmlib.h
Matti Hamalainen <ccr@tnsp.org>
parents:
976
diff
changeset
|
219 return (a < 0.0f ? 0.0f : (a > 1.0f ? 1.0f : a)); |
43594ac98f91
Move dmClamp*() functions back to dmlib.h
Matti Hamalainen <ccr@tnsp.org>
parents:
976
diff
changeset
|
220 } |
43594ac98f91
Move dmClamp*() functions back to dmlib.h
Matti Hamalainen <ccr@tnsp.org>
parents:
976
diff
changeset
|
221 |
43594ac98f91
Move dmClamp*() functions back to dmlib.h
Matti Hamalainen <ccr@tnsp.org>
parents:
976
diff
changeset
|
222 |
43594ac98f91
Move dmClamp*() functions back to dmlib.h
Matti Hamalainen <ccr@tnsp.org>
parents:
976
diff
changeset
|
223 static inline int dmClamp(const int v, const int min, const int max) |
43594ac98f91
Move dmClamp*() functions back to dmlib.h
Matti Hamalainen <ccr@tnsp.org>
parents:
976
diff
changeset
|
224 { |
43594ac98f91
Move dmClamp*() functions back to dmlib.h
Matti Hamalainen <ccr@tnsp.org>
parents:
976
diff
changeset
|
225 return (v < min ? min : (v > max ? max : v)); |
43594ac98f91
Move dmClamp*() functions back to dmlib.h
Matti Hamalainen <ccr@tnsp.org>
parents:
976
diff
changeset
|
226 } |
43594ac98f91
Move dmClamp*() functions back to dmlib.h
Matti Hamalainen <ccr@tnsp.org>
parents:
976
diff
changeset
|
227 |
43594ac98f91
Move dmClamp*() functions back to dmlib.h
Matti Hamalainen <ccr@tnsp.org>
parents:
976
diff
changeset
|
228 |
0 | 229 /* Arbitrary line drawing |
230 */ | |
231 #ifdef DM_GFX_LINES | |
232
79dac918c81e
Modularize line clipping etc. a lot, and export all line drawing and
Matti Hamalainen <ccr@tnsp.org>
parents:
153
diff
changeset
|
232 #define DM_HEADER |
79dac918c81e
Modularize line clipping etc. a lot, and export all line drawing and
Matti Hamalainen <ccr@tnsp.org>
parents:
153
diff
changeset
|
233 #include "dmlinefunc.h" |
234
a2abd0b991b6
Modularize line drawing related templates and functions, add clipping
Matti Hamalainen <ccr@tnsp.org>
parents:
232
diff
changeset
|
234 |
262
9d015d32841a
Clean up the line clipping a bit, in preparation for fixes.
Matti Hamalainen <ccr@tnsp.org>
parents:
234
diff
changeset
|
235 enum |
9d015d32841a
Clean up the line clipping a bit, in preparation for fixes.
Matti Hamalainen <ccr@tnsp.org>
parents:
234
diff
changeset
|
236 { |
9d015d32841a
Clean up the line clipping a bit, in preparation for fixes.
Matti Hamalainen <ccr@tnsp.org>
parents:
234
diff
changeset
|
237 CLIP_TOP = 1, |
9d015d32841a
Clean up the line clipping a bit, in preparation for fixes.
Matti Hamalainen <ccr@tnsp.org>
parents:
234
diff
changeset
|
238 CLIP_BOTTOM = 2, |
9d015d32841a
Clean up the line clipping a bit, in preparation for fixes.
Matti Hamalainen <ccr@tnsp.org>
parents:
234
diff
changeset
|
239 CLIP_RIGHT = 4, |
9d015d32841a
Clean up the line clipping a bit, in preparation for fixes.
Matti Hamalainen <ccr@tnsp.org>
parents:
234
diff
changeset
|
240 CLIP_LEFT = 8 |
9d015d32841a
Clean up the line clipping a bit, in preparation for fixes.
Matti Hamalainen <ccr@tnsp.org>
parents:
234
diff
changeset
|
241 }; |
9d015d32841a
Clean up the line clipping a bit, in preparation for fixes.
Matti Hamalainen <ccr@tnsp.org>
parents:
234
diff
changeset
|
242 |
234
a2abd0b991b6
Modularize line drawing related templates and functions, add clipping
Matti Hamalainen <ccr@tnsp.org>
parents:
232
diff
changeset
|
243 #define DM_CLIP_FUNC dmClipLineCoordsFloat |
a2abd0b991b6
Modularize line drawing related templates and functions, add clipping
Matti Hamalainen <ccr@tnsp.org>
parents:
232
diff
changeset
|
244 #define DM_COORD_TYPE DMFloat |
a2abd0b991b6
Modularize line drawing related templates and functions, add clipping
Matti Hamalainen <ccr@tnsp.org>
parents:
232
diff
changeset
|
245 #include "dmlineclip.h" |
a2abd0b991b6
Modularize line drawing related templates and functions, add clipping
Matti Hamalainen <ccr@tnsp.org>
parents:
232
diff
changeset
|
246 |
232
79dac918c81e
Modularize line clipping etc. a lot, and export all line drawing and
Matti Hamalainen <ccr@tnsp.org>
parents:
153
diff
changeset
|
247 #undef DM_HEADER |
0 | 248 #endif |
249 | |
95
0430f484641b
Add unscaled blitting functions.
Matti Hamalainen <ccr@tnsp.org>
parents:
90
diff
changeset
|
250 |
0430f484641b
Add unscaled blitting functions.
Matti Hamalainen <ccr@tnsp.org>
parents:
90
diff
changeset
|
251 /* Various blitting functions |
0 | 252 */ |
253 #ifdef DM_GFX_BLITS | |
254 typedef int (*DMScaledBlitFunc)(SDL_Surface *src, const int x0, const int y0, const int dwidth, const int dheight, SDL_Surface *dst); | |
255 DMScaledBlitFunc dmGetScaledBlitFunc(SDL_PixelFormat *src, SDL_PixelFormat *dst, int mode); | |
256 int dmScaledBlitSurfaceAny(SDL_Surface *src, const int x0, const int y0, const int dwidth, const int dheight, SDL_Surface *dst, int mode); | |
19
10f58ff516b3
Add function prototypes for two special case scaled blit functions.
Matti Hamalainen <ccr@tnsp.org>
parents:
0
diff
changeset
|
257 |
95
0430f484641b
Add unscaled blitting functions.
Matti Hamalainen <ccr@tnsp.org>
parents:
90
diff
changeset
|
258 typedef int (*DMUnscaledBlitFunc)(SDL_Surface *src, const int x0, const int y0, SDL_Surface *dst); |
0430f484641b
Add unscaled blitting functions.
Matti Hamalainen <ccr@tnsp.org>
parents:
90
diff
changeset
|
259 DMUnscaledBlitFunc dmGetUnscaledBlitFunc(SDL_PixelFormat *src, SDL_PixelFormat *dst, int mode); |
0430f484641b
Add unscaled blitting functions.
Matti Hamalainen <ccr@tnsp.org>
parents:
90
diff
changeset
|
260 int dmUnscaledBlitSurfaceAny(SDL_Surface *src, const int x0, const int y0, SDL_Surface *dst, int mode); |
232
79dac918c81e
Modularize line clipping etc. a lot, and export all line drawing and
Matti Hamalainen <ccr@tnsp.org>
parents:
153
diff
changeset
|
261 |
610
e74ad60b1e85
Add new scaled surface conversion function.
Matti Hamalainen <ccr@tnsp.org>
parents:
601
diff
changeset
|
262 SDL_Surface *dmConvertScaledSurface(SDL_Surface *src, SDL_PixelFormat *fmt, Uint32 flags, const int dwidth, const int dheight); |
e74ad60b1e85
Add new scaled surface conversion function.
Matti Hamalainen <ccr@tnsp.org>
parents:
601
diff
changeset
|
263 |
e74ad60b1e85
Add new scaled surface conversion function.
Matti Hamalainen <ccr@tnsp.org>
parents:
601
diff
changeset
|
264 |
232
79dac918c81e
Modularize line clipping etc. a lot, and export all line drawing and
Matti Hamalainen <ccr@tnsp.org>
parents:
153
diff
changeset
|
265 #define DM_HEADER |
79dac918c81e
Modularize line clipping etc. a lot, and export all line drawing and
Matti Hamalainen <ccr@tnsp.org>
parents:
153
diff
changeset
|
266 #include "dmblitfunc.h" |
79dac918c81e
Modularize line clipping etc. a lot, and export all line drawing and
Matti Hamalainen <ccr@tnsp.org>
parents:
153
diff
changeset
|
267 #undef DM_HEADER |
612
696f03f30c0e
Make certain static inline graphics functions always available, no need to
Matti Hamalainen <ccr@tnsp.org>
parents:
611
diff
changeset
|
268 |
696f03f30c0e
Make certain static inline graphics functions always available, no need to
Matti Hamalainen <ccr@tnsp.org>
parents:
611
diff
changeset
|
269 #endif // DM_GFX_BLITS |
0 | 270 |
95
0430f484641b
Add unscaled blitting functions.
Matti Hamalainen <ccr@tnsp.org>
parents:
90
diff
changeset
|
271 |
0 | 272 /* Misc functions |
273 */ | |
274 #ifdef DM_GFX_MISC | |
612
696f03f30c0e
Make certain static inline graphics functions always available, no need to
Matti Hamalainen <ccr@tnsp.org>
parents:
611
diff
changeset
|
275 |
0 | 276 void dmFillRect(SDL_Surface *screen, int x0, int y0, int x1, int y1, const Uint32 col); |
277 void dmDrawHLine(SDL_Surface *screen, int x0, int x1, int yc, const Uint32 col); | |
278 void dmDrawVLine(SDL_Surface *screen, int y0, int y1, int xc, const Uint32 col); | |
150
e147c07e41cb
Add dmDrawBox3D() and dmFillBox3D().
Matti Hamalainen <ccr@tnsp.org>
parents:
138
diff
changeset
|
279 |
e147c07e41cb
Add dmDrawBox3D() and dmFillBox3D().
Matti Hamalainen <ccr@tnsp.org>
parents:
138
diff
changeset
|
280 void dmDrawBox3D(SDL_Surface *screen, int x0, int y0, int x1, int y1, Uint32 ucol, Uint32 dcol); |
e147c07e41cb
Add dmDrawBox3D() and dmFillBox3D().
Matti Hamalainen <ccr@tnsp.org>
parents:
138
diff
changeset
|
281 void dmFillBox3D(SDL_Surface *screen, int x0, int y0, int x1, int y1, Uint32 bgcol, Uint32 ucol, Uint32 dcol); |
e147c07e41cb
Add dmDrawBox3D() and dmFillBox3D().
Matti Hamalainen <ccr@tnsp.org>
parents:
138
diff
changeset
|
282 |
612
696f03f30c0e
Make certain static inline graphics functions always available, no need to
Matti Hamalainen <ccr@tnsp.org>
parents:
611
diff
changeset
|
283 #endif // DM_GFX_MISC |
696f03f30c0e
Make certain static inline graphics functions always available, no need to
Matti Hamalainen <ccr@tnsp.org>
parents:
611
diff
changeset
|
284 |
90
1ab3fd8b9afc
Move some very tiny gfx functions to the dmlib header as static inline ones.
Matti Hamalainen <ccr@tnsp.org>
parents:
60
diff
changeset
|
285 |
1ab3fd8b9afc
Move some very tiny gfx functions to the dmlib header as static inline ones.
Matti Hamalainen <ccr@tnsp.org>
parents:
60
diff
changeset
|
286 static inline void dmClearSurface(SDL_Surface *screen, const Uint32 col) |
1ab3fd8b9afc
Move some very tiny gfx functions to the dmlib header as static inline ones.
Matti Hamalainen <ccr@tnsp.org>
parents:
60
diff
changeset
|
287 { |
1ab3fd8b9afc
Move some very tiny gfx functions to the dmlib header as static inline ones.
Matti Hamalainen <ccr@tnsp.org>
parents:
60
diff
changeset
|
288 SDL_FillRect(screen, NULL, col); |
1ab3fd8b9afc
Move some very tiny gfx functions to the dmlib header as static inline ones.
Matti Hamalainen <ccr@tnsp.org>
parents:
60
diff
changeset
|
289 } |
1ab3fd8b9afc
Move some very tiny gfx functions to the dmlib header as static inline ones.
Matti Hamalainen <ccr@tnsp.org>
parents:
60
diff
changeset
|
290 |
1ab3fd8b9afc
Move some very tiny gfx functions to the dmlib header as static inline ones.
Matti Hamalainen <ccr@tnsp.org>
parents:
60
diff
changeset
|
291 |
1ab3fd8b9afc
Move some very tiny gfx functions to the dmlib header as static inline ones.
Matti Hamalainen <ccr@tnsp.org>
parents:
60
diff
changeset
|
292 static inline Uint32 dmMapRGB(SDL_Surface *screen, int r, int g, int b) |
1ab3fd8b9afc
Move some very tiny gfx functions to the dmlib header as static inline ones.
Matti Hamalainen <ccr@tnsp.org>
parents:
60
diff
changeset
|
293 { |
1ab3fd8b9afc
Move some very tiny gfx functions to the dmlib header as static inline ones.
Matti Hamalainen <ccr@tnsp.org>
parents:
60
diff
changeset
|
294 return SDL_MapRGB(screen->format, r, g, b); |
1ab3fd8b9afc
Move some very tiny gfx functions to the dmlib header as static inline ones.
Matti Hamalainen <ccr@tnsp.org>
parents:
60
diff
changeset
|
295 } |
1ab3fd8b9afc
Move some very tiny gfx functions to the dmlib header as static inline ones.
Matti Hamalainen <ccr@tnsp.org>
parents:
60
diff
changeset
|
296 |
1ab3fd8b9afc
Move some very tiny gfx functions to the dmlib header as static inline ones.
Matti Hamalainen <ccr@tnsp.org>
parents:
60
diff
changeset
|
297 |
1ab3fd8b9afc
Move some very tiny gfx functions to the dmlib header as static inline ones.
Matti Hamalainen <ccr@tnsp.org>
parents:
60
diff
changeset
|
298 static inline Uint32 dmMapRGBA(SDL_Surface *screen, int r, int g, int b, int a) |
1ab3fd8b9afc
Move some very tiny gfx functions to the dmlib header as static inline ones.
Matti Hamalainen <ccr@tnsp.org>
parents:
60
diff
changeset
|
299 { |
1ab3fd8b9afc
Move some very tiny gfx functions to the dmlib header as static inline ones.
Matti Hamalainen <ccr@tnsp.org>
parents:
60
diff
changeset
|
300 return SDL_MapRGBA(screen->format, r, g, b, a); |
1ab3fd8b9afc
Move some very tiny gfx functions to the dmlib header as static inline ones.
Matti Hamalainen <ccr@tnsp.org>
parents:
60
diff
changeset
|
301 } |
1ab3fd8b9afc
Move some very tiny gfx functions to the dmlib header as static inline ones.
Matti Hamalainen <ccr@tnsp.org>
parents:
60
diff
changeset
|
302 |
1ab3fd8b9afc
Move some very tiny gfx functions to the dmlib header as static inline ones.
Matti Hamalainen <ccr@tnsp.org>
parents:
60
diff
changeset
|
303 |
1ab3fd8b9afc
Move some very tiny gfx functions to the dmlib header as static inline ones.
Matti Hamalainen <ccr@tnsp.org>
parents:
60
diff
changeset
|
304 static inline int dmDirectBlitSurface(SDL_Surface *bmp, SDL_Surface *screen) |
1ab3fd8b9afc
Move some very tiny gfx functions to the dmlib header as static inline ones.
Matti Hamalainen <ccr@tnsp.org>
parents:
60
diff
changeset
|
305 { |
1ab3fd8b9afc
Move some very tiny gfx functions to the dmlib header as static inline ones.
Matti Hamalainen <ccr@tnsp.org>
parents:
60
diff
changeset
|
306 return SDL_BlitSurface(bmp, NULL, screen, NULL); |
1ab3fd8b9afc
Move some very tiny gfx functions to the dmlib header as static inline ones.
Matti Hamalainen <ccr@tnsp.org>
parents:
60
diff
changeset
|
307 } |
0 | 308 |
309 | |
611
828d86cd10e0
Add new dmCopySurface() helper/wrapper function.
Matti Hamalainen <ccr@tnsp.org>
parents:
610
diff
changeset
|
310 static inline SDL_Surface *dmCopySurface(SDL_Surface *src) |
828d86cd10e0
Add new dmCopySurface() helper/wrapper function.
Matti Hamalainen <ccr@tnsp.org>
parents:
610
diff
changeset
|
311 { |
828d86cd10e0
Add new dmCopySurface() helper/wrapper function.
Matti Hamalainen <ccr@tnsp.org>
parents:
610
diff
changeset
|
312 if (src != NULL) |
828d86cd10e0
Add new dmCopySurface() helper/wrapper function.
Matti Hamalainen <ccr@tnsp.org>
parents:
610
diff
changeset
|
313 return SDL_ConvertSurface(src, src->format, src->flags); |
828d86cd10e0
Add new dmCopySurface() helper/wrapper function.
Matti Hamalainen <ccr@tnsp.org>
parents:
610
diff
changeset
|
314 else |
828d86cd10e0
Add new dmCopySurface() helper/wrapper function.
Matti Hamalainen <ccr@tnsp.org>
parents:
610
diff
changeset
|
315 return NULL; |
828d86cd10e0
Add new dmCopySurface() helper/wrapper function.
Matti Hamalainen <ccr@tnsp.org>
parents:
610
diff
changeset
|
316 } |
828d86cd10e0
Add new dmCopySurface() helper/wrapper function.
Matti Hamalainen <ccr@tnsp.org>
parents:
610
diff
changeset
|
317 |
828d86cd10e0
Add new dmCopySurface() helper/wrapper function.
Matti Hamalainen <ccr@tnsp.org>
parents:
610
diff
changeset
|
318 |
0 | 319 /* Global variables |
320 */ | |
321 extern char *dmProgName, | |
322 *dmProgDesc, | |
323 *dmProgVersion, | |
324 *dmProgAuthor, | |
325 *dmProgLicense; | |
326 | |
327 extern int dmVerbosity; | |
328 void dmInitProg(char *name, char *desc, char *version, char *author, char *license); | |
329 void dmPrintBanner(FILE *outFile, const char *name, const char *usage); | |
330 | |
331 void dmMsgVA(int level, const char *fmt, va_list ap); | |
332 void dmMsg(int level, const char *fmt, ...); | |
333 void dmPrintVA(int level, const char *fmt, va_list ap); | |
334 void dmPrint(int level, const char *fmt, ...); | |
335 | |
958
985225a93aeb
Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents:
956
diff
changeset
|
336 int dmErrorVA(const int error, const char *fmt, va_list); |
985225a93aeb
Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents:
956
diff
changeset
|
337 int dmError(const int error, const char *fmt, ...); |
985225a93aeb
Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents:
956
diff
changeset
|
338 void dmErrorMsg(const char *fmt, ...); |
955 | 339 int dmGetErrno(); |
340 const char *dmErrorStr(const int error); | |
341 | |
1046
7e54b2d08ce7
Add special debug error message function/macro that can be
Matti Hamalainen <ccr@tnsp.org>
parents:
980
diff
changeset
|
342 #ifdef DM_DEBUG |
7e54b2d08ce7
Add special debug error message function/macro that can be
Matti Hamalainen <ccr@tnsp.org>
parents:
980
diff
changeset
|
343 # define dmErrorDBG dmError |
1048
509e6ed3a24e
Finishing touches to the DM_DEBUG stuff.
Matti Hamalainen <ccr@tnsp.org>
parents:
1047
diff
changeset
|
344 # define dmErrorDBGMsg dmErrorMsg |
1046
7e54b2d08ce7
Add special debug error message function/macro that can be
Matti Hamalainen <ccr@tnsp.org>
parents:
980
diff
changeset
|
345 #else |
7e54b2d08ce7
Add special debug error message function/macro that can be
Matti Hamalainen <ccr@tnsp.org>
parents:
980
diff
changeset
|
346 # define dmErrorDBG(ecode, fmt, ...) (ecode) // Dummy |
1048
509e6ed3a24e
Finishing touches to the DM_DEBUG stuff.
Matti Hamalainen <ccr@tnsp.org>
parents:
1047
diff
changeset
|
347 # define dmErrorDBGMsg(fmt, ...) |
1046
7e54b2d08ce7
Add special debug error message function/macro that can be
Matti Hamalainen <ccr@tnsp.org>
parents:
980
diff
changeset
|
348 #endif |
7e54b2d08ce7
Add special debug error message function/macro that can be
Matti Hamalainen <ccr@tnsp.org>
parents:
980
diff
changeset
|
349 |
0 | 350 void * dmMalloc(size_t); |
351 void * dmMalloc0(size_t); | |
352 void * dmRealloc(void *, size_t); | |
353 void * dmCalloc(size_t, size_t); | |
354 void dmFree(void *); | |
355 | |
356 char * dm_strdup(const char *); | |
744
2726d91e3409
Add implementation of dm_strndup().
Matti Hamalainen <ccr@tnsp.org>
parents:
612
diff
changeset
|
357 char * dm_strndup(const char *, const size_t n); |
0 | 358 char * dm_strdup_vprintf(const char *, va_list); |
359 char * dm_strdup_printf(const char *, ...); | |
360 | |
813 | 361 char * dm_basefilename(const char *filename); |
362 char * dm_strdup_fext(const char *filename, const char *fmt); | |
816 | 363 char * dm_strrcasecmp(char *str, const char *needle); |
0 | 364 |
955 | 365 BOOL dmGetIntVal(const char *s, unsigned int *i); |
366 | |
367 | |
294
dd9809a93425
Improve mutex debugging facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
288
diff
changeset
|
368 /* Mutexes |
dd9809a93425
Improve mutex debugging facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
288
diff
changeset
|
369 */ |
dd9809a93425
Improve mutex debugging facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
288
diff
changeset
|
370 #ifdef DM_MUTEX_DEBUG |
dd9809a93425
Improve mutex debugging facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
288
diff
changeset
|
371 |
dd9809a93425
Improve mutex debugging facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
288
diff
changeset
|
372 typedef struct |
dd9809a93425
Improve mutex debugging facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
288
diff
changeset
|
373 { |
dd9809a93425
Improve mutex debugging facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
288
diff
changeset
|
374 BOOL used; |
dd9809a93425
Improve mutex debugging facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
288
diff
changeset
|
375 Uint32 id; |
dd9809a93425
Improve mutex debugging facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
288
diff
changeset
|
376 int state; |
dd9809a93425
Improve mutex debugging facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
288
diff
changeset
|
377 } DMMutexLock; |
dd9809a93425
Improve mutex debugging facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
288
diff
changeset
|
378 |
dd9809a93425
Improve mutex debugging facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
288
diff
changeset
|
379 typedef struct |
dd9809a93425
Improve mutex debugging facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
288
diff
changeset
|
380 { |
dd9809a93425
Improve mutex debugging facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
288
diff
changeset
|
381 char *cr_file; |
dd9809a93425
Improve mutex debugging facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
288
diff
changeset
|
382 int cr_line; |
dd9809a93425
Improve mutex debugging facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
288
diff
changeset
|
383 SDL_mutex *m; |
dd9809a93425
Improve mutex debugging facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
288
diff
changeset
|
384 DMMutexLock locks[8]; |
dd9809a93425
Improve mutex debugging facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
288
diff
changeset
|
385 } DMMutex; |
dd9809a93425
Improve mutex debugging facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
288
diff
changeset
|
386 |
dd9809a93425
Improve mutex debugging facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
288
diff
changeset
|
387 #define dmMutexLock(x) dmDOMutexLock(x, __FILE__, (int) __LINE__) |
dd9809a93425
Improve mutex debugging facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
288
diff
changeset
|
388 #define dmMutexUnlock(x) dmDOMutexUnlock(x, __FILE__, (int) __LINE__) |
dd9809a93425
Improve mutex debugging facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
288
diff
changeset
|
389 #define dmCreateMutex(x) dmDOCreateMutex(__FILE__, (int) __LINE__) |
dd9809a93425
Improve mutex debugging facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
288
diff
changeset
|
390 |
dd9809a93425
Improve mutex debugging facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
288
diff
changeset
|
391 int dmDOMutexLock(DMMutex *mutex, const char *file, const int line); |
dd9809a93425
Improve mutex debugging facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
288
diff
changeset
|
392 int dmDOMutexUnlock(DMMutex *mutex, const char *file, const int line); |
dd9809a93425
Improve mutex debugging facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
288
diff
changeset
|
393 DMMutex * dmDOCreateMutex(const char *file, const int line); |
dd9809a93425
Improve mutex debugging facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
288
diff
changeset
|
394 void dmDestroyMutex(DMMutex *mutex); |
dd9809a93425
Improve mutex debugging facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
288
diff
changeset
|
395 |
dd9809a93425
Improve mutex debugging facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
288
diff
changeset
|
396 #else |
dd9809a93425
Improve mutex debugging facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
288
diff
changeset
|
397 #define DMMutex SDL_mutex |
dd9809a93425
Improve mutex debugging facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
288
diff
changeset
|
398 #define dmCreateMutex() SDL_CreateMutex() |
dd9809a93425
Improve mutex debugging facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
288
diff
changeset
|
399 #define dmDestroyMutex(x) SDL_DestroyMutex(x) |
dd9809a93425
Improve mutex debugging facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
288
diff
changeset
|
400 #define dmMutexLock(x) SDL_mutexP(x) |
dd9809a93425
Improve mutex debugging facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
288
diff
changeset
|
401 #define dmMutexUnlock(x) SDL_mutexV(x) |
dd9809a93425
Improve mutex debugging facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
288
diff
changeset
|
402 #endif |
dd9809a93425
Improve mutex debugging facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
288
diff
changeset
|
403 |
0 | 404 /* Endianess swapping macros |
405 */ | |
955 | 406 #define DM_SWAP_16_LE_BE(value) ((Uint16) ( \ |
0 | 407 (Uint16) ((Uint16) (value) >> 8) | \ |
408 (Uint16) ((Uint16) (value) << 8)) ) | |
409 | |
410 | |
955 | 411 #define DM_SWAP_32_LE_BE(value) ((Uint32) ( \ |
0 | 412 (((Uint32) (value) & (Uint32) 0x000000ffU) << 24) | \ |
413 (((Uint32) (value) & (Uint32) 0x0000ff00U) << 8) | \ | |
414 (((Uint32) (value) & (Uint32) 0x00ff0000U) >> 8) | \ | |
415 (((Uint32) (value) & (Uint32) 0xff000000U) >> 24))) | |
416 | |
955 | 417 #define DM_SWAP_64_LE_BE(value) ((Uint64) ( \ |
418 (((Uint64) (value) & (Uint64) 0x00000000000000ffULL) << 56) | \ | |
419 (((Uint64) (value) & (Uint64) 0x000000000000ff00ULL) << 40) | \ | |
420 (((Uint64) (value) & (Uint64) 0x0000000000ff0000ULL) << 24) | \ | |
421 (((Uint64) (value) & (Uint64) 0x00000000ff000000ULL) << 8) | \ | |
422 (((Uint64) (value) & (Uint64) 0x000000ff00000000ULL) >> 8) | \ | |
423 (((Uint64) (value) & (Uint64) 0x0000ff0000000000ULL) >> 24) | \ | |
424 (((Uint64) (value) & (Uint64) 0x00ff000000000000ULL) >> 40) | \ | |
0 | 425 (((Uint64) (value) & (Uint64) 0xff00000000000000ULL) >> 56))) |
873 | 426 |
0 | 427 |
428 /* Macros that swap only when needed ... | |
429 */ | |
430 #if (SDL_BYTEORDER == SDL_BIG_ENDIAN) | |
770 | 431 # define DM_LE16_TO_NATIVE(value) DM_SWAP_16_LE_BE(value) |
432 # define DM_LE32_TO_NATIVE(value) DM_SWAP_32_LE_BE(value) | |
433 # define DM_NATIVE_TO_LE16(value) DM_SWAP_16_LE_BE(value) | |
434 # define DM_NATIVE_TO_LE32(value) DM_SWAP_32_LE_BE(value) | |
0 | 435 |
770 | 436 # define DM_BE16_TO_NATIVE(value) ((Uint16) (value)) |
437 # define DM_BE32_TO_NATIVE(value) ((Uint32) (value)) | |
438 # define DM_NATIVE_TO_BE16(value) ((Uint16) (value)) | |
439 # define DM_NATIVE_TO_BE32(value) ((Uint32) (value)) | |
0 | 440 |
872
b01d04e44b6f
Assume we always have 64bit type.
Matti Hamalainen <ccr@tnsp.org>
parents:
871
diff
changeset
|
441 # define DM_LE64_TO_NATIVE(value) DM_SWAP_64_LE_BE(value) |
b01d04e44b6f
Assume we always have 64bit type.
Matti Hamalainen <ccr@tnsp.org>
parents:
871
diff
changeset
|
442 # define DM_NATIVE_TO_LE64(value) DM_SWAP_64_LE_BE(value) |
b01d04e44b6f
Assume we always have 64bit type.
Matti Hamalainen <ccr@tnsp.org>
parents:
871
diff
changeset
|
443 # define DM_BE64_TO_NATIVE(value) ((Uint64) (value)) |
b01d04e44b6f
Assume we always have 64bit type.
Matti Hamalainen <ccr@tnsp.org>
parents:
871
diff
changeset
|
444 # define DM_NATIVE_TO_BE64(value) ((Uint64) (value)) |
0 | 445 |
446 #elif (SDL_BYTEORDER == SDL_LIL_ENDIAN) | |
447 | |
770 | 448 # define DM_LE16_TO_NATIVE(value) ((Uint16) (value)) |
449 # define DM_LE32_TO_NATIVE(value) ((Uint32) (value)) | |
450 # define DM_NATIVE_TO_LE16(value) ((Uint16) (value)) | |
451 # define DM_NATIVE_TO_LE32(value) ((Uint32) (value)) | |
0 | 452 |
770 | 453 # define DM_BE16_TO_NATIVE(value) DM_SWAP_16_LE_BE(value) |
454 # define DM_BE32_TO_NATIVE(value) DM_SWAP_32_LE_BE(value) | |
455 # define DM_NATIVE_TO_BE16(value) DM_SWAP_16_LE_BE(value) | |
456 # define DM_NATIVE_TO_BE32(value) DM_SWAP_32_LE_BE(value) | |
0 | 457 |
872
b01d04e44b6f
Assume we always have 64bit type.
Matti Hamalainen <ccr@tnsp.org>
parents:
871
diff
changeset
|
458 # define DM_LE64_TO_NATIVE(value) ((Uint64) (value)) |
b01d04e44b6f
Assume we always have 64bit type.
Matti Hamalainen <ccr@tnsp.org>
parents:
871
diff
changeset
|
459 # define DM_NATIVE_TO_LE64(value) ((Uint64) (value)) |
b01d04e44b6f
Assume we always have 64bit type.
Matti Hamalainen <ccr@tnsp.org>
parents:
871
diff
changeset
|
460 # define DM_BE64_TO_NATIVE(value) DM_SWAP_64_LE_BE(value) |
b01d04e44b6f
Assume we always have 64bit type.
Matti Hamalainen <ccr@tnsp.org>
parents:
871
diff
changeset
|
461 # define DM_NATIVE_TO_BE64(value) DM_SWAP_64_LE_BE(value) |
0 | 462 #endif |
463 | |
464 | |
465 #ifdef __cplusplus | |
466 } | |
467 #endif | |
359
59045853853d
Make resource management re-entrant.
Matti Hamalainen <ccr@tnsp.org>
parents:
341
diff
changeset
|
468 |
0 | 469 #endif // DMLIB_H |