LZScene
1{*******************************************************************************
2
3SDL2.pas v1.0 29/07/2013 first version for DelphiXE
4v1.1 27/08/2013 add MACOS compability
5
6Simple DirectMedia Layer
7Copyright (C) 1997-2013 Sam Lantinga <slouken@libsdl.org>
8
9Pascal-Header-Conversion SDL from the JEDI-Team written by Domenique Louis and others.
10Pascal-Header-Conversion SDL2 from the Copyright (C) 2012/13 Tim Blume aka End.
11
12convert SDL/SDL2 to SDL2 for DelphiXE by Kotai 2013 www.remakesonline.com
13
14The initial developer of this Pascal code was :
15Dominqiue Louis <Dominique@SavageSoftware.com.au>
16
17
18*******************************************************************************}
19
20
21{$define Debug} { uncomment for debugging }
22{$define no_smpeg}
23
24
25
26{$IFNDEF FPC}
27{$IFDEF Debug}
28{$F+,D+,Q-,L+,R+,I-,S+,Y+,A+}
29{$ELSE}
30{$F+,Q-,R-,S-,I-,A+}
31{$ENDIF}
32{$ELSE} {FPC}
33//{$M+}
34{$ENDIF} {FPC}
35
36
37{$IFDEF LINUX}
38{$DEFINE UNIX}
39{$ENDIF}
40
41
42{$IFDEF ver70}
43{$IFDEF Windows}
44{$DEFINE Win16}
45{$ENDIF Windows}
46{$IFDEF MSDOS}
47{$DEFINE NO_EXPORTS}
48{$ENDIF MSDOS}
49{$IFDEF DPMI}
50{$DEFINE BP_DPMI}
51{$ENDIF}
52{$DEFINE OS_16_BIT}
53{$DEFINE __OS_DOS__}
54{$ENDIF ver70}
55
56
57{$IFDEF ver80}
58{$DEFINE Delphi} {Delphi 1.x}
59{$DEFINE Delphi16}
60{$DEFINE Win16}
61{$DEFINE OS_16_BIT}
62{$DEFINE __OS_DOS__}
63{$ENDIF ver80}
64
65
66{$IFDEF ver90}
67{$DEFINE Delphi} {Delphi 2.x}
68{$DEFINE WIN32}
69{$DEFINE WINDOWS}
70{$ENDIF ver90}
71
72
73{$IFDEF ver100}
74{$DEFINE Delphi} {Delphi 3.x}
75{$DEFINE WIN32}
76{$DEFINE WINDOWS}
77{$ENDIF ver100}
78
79
80{$IFDEF ver93}
81{$DEFINE Delphi} {C++ Builder 1.x}
82{$DEFINE WINDOWS}
83{$ENDIF ver93}
84
85
86{$IFDEF ver110}
87{$DEFINE Delphi} {C++ Builder 3.x}
88{$DEFINE WINDOWS}
89{$ENDIF ver110}
90
91
92{$IFDEF ver120}
93{$DEFINE Delphi} {Delphi 4.x}
94{$DEFINE Delphi4UP}
95{$DEFINE Has_Int64}
96{$DEFINE WINDOWS}
97{$ENDIF ver120}
98
99
100{$IFDEF ver130}
101{$DEFINE Delphi} {Delphi / C++ Builder 5.x}
102{$DEFINE Delphi4UP}
103{$DEFINE Delphi5UP}
104{$DEFINE Has_Int64}
105{$DEFINE WINDOWS}
106{$ENDIF ver130}
107
108
109{$IFDEF ver140}
110{$DEFINE Delphi} {Delphi / C++ Builder 6.x}
111{$DEFINE Delphi4UP}
112{$DEFINE Delphi5UP}
113{$DEFINE Delphi6UP}
114{$DEFINE Has_Int64}
115{$DEFINE HAS_TYPES}
116{$ENDIF ver140}
117
118
119{$IFDEF ver150}
120{$DEFINE Delphi} {Delphi 7.x}
121{$DEFINE Delphi4UP}
122{$DEFINE Delphi5UP}
123{$DEFINE Delphi6UP}
124{$DEFINE Delphi7UP}
125{$WARN UNSAFE_TYPE OFF} {Disable warning for unsafe types}
126{$DEFINE Has_Int64}
127{$DEFINE Has_UInt64}
128{$DEFINE Has_Native}
129{$DEFINE HAS_TYPES}
130{$ENDIF ver150}
131
132
133{$IFDEF ver160}
134{$DEFINE Delphi} {Delphi 8.x}
135{$DEFINE Delphi4UP}
136{$DEFINE Delphi5UP}
137{$DEFINE Delphi6UP}
138{$DEFINE Delphi7UP}
139{$DEFINE Delphi8UP}
140{$DEFINE Has_Int64}
141{$DEFINE Has_UInt64}
142{$DEFINE Has_Native}
143{$DEFINE HAS_TYPES}
144{$ENDIF ver160}
145
146
147{$IFDEF ver170}
148{$DEFINE Delphi} {Delphi / C++ Builder 2005}
149{$DEFINE Delphi4UP}
150{$DEFINE Delphi5UP}
151{$DEFINE Delphi6UP}
152{$DEFINE Delphi7UP}
153{$DEFINE Delphi8UP}
154{$DEFINE Delphi9UP}
155{$WARN UNSAFE_TYPE OFF} {Disable warning for unsafe types}
156{$DEFINE Has_Int64}
157{$DEFINE Has_UInt64}
158{$DEFINE Has_Native}
159{$DEFINE HAS_TYPES}
160{$ENDIF ver170}
161
162
163{$IFDEF ver180}
164{$DEFINE Delphi} {Delphi / C++ Builder 2006 / 2007}
165{$DEFINE Delphi4UP}
166{$DEFINE Delphi5UP}
167{$DEFINE Delphi6UP}
168{$DEFINE Delphi7UP}
169{$DEFINE Delphi8UP}
170{$DEFINE Delphi9UP}
171{$DEFINE Delphi10UP}
172{$WARN UNSAFE_TYPE OFF} {Disable warning for unsafe types}
173{$DEFINE Has_Int64}
174{$DEFINE Has_UInt64}
175{$DEFINE Has_Native}
176{$DEFINE HAS_TYPES}
177{$ENDIF ver180}
178
179
180{$IFDEF ver185}
181{$DEFINE Delphi} {Delphi / C++ Builder 2007}
182{$DEFINE Delphi4UP}
183{$DEFINE Delphi5UP}
184{$DEFINE Delphi6UP}
185{$DEFINE Delphi7UP}
186{$DEFINE Delphi8UP}
187{$DEFINE Delphi9UP}
188{$DEFINE Delphi10UP}
189{$DEFINE Delphi11UP}
190{$WARN UNSAFE_TYPE OFF} {Disable warning for unsafe types}
191{$DEFINE Has_Int64}
192{$DEFINE Has_UInt64}
193{$DEFINE Has_Native}
194{$DEFINE HAS_TYPES}
195{$ENDIF ver185}
196
197
198{$IFDEF ver190}
199{$DEFINE Delphi} {Delphi / C++ Builder 2007 }
200{$DEFINE Delphi4UP}
201{$DEFINE Delphi5UP}
202{$DEFINE Delphi6UP}
203{$DEFINE Delphi7UP}
204{$DEFINE Delphi8UP}
205{$DEFINE Delphi9UP}
206{$DEFINE Delphi10UP}
207{$DEFINE Delphi11UP}
208{$DEFINE Delphi12UP}
209{$WARN UNSAFE_TYPE OFF} {Disable warning for unsafe types}
210{$DEFINE Has_Int64}
211{$DEFINE Has_UInt64}
212{$DEFINE Has_Native}
213{$DEFINE HAS_TYPES}
214{$ENDIF ver190}
215
216
217{$IFDEF ver200}
218{$DEFINE Delphi} {Delphi / C++ Builder 2009 }
219{$DEFINE Delphi4UP}
220{$DEFINE Delphi5UP}
221{$DEFINE Delphi6UP}
222{$DEFINE Delphi7UP}
223{$DEFINE Delphi8UP}
224{$DEFINE Delphi9UP}
225{$DEFINE Delphi10UP}
226{$DEFINE Delphi11UP}
227{$DEFINE Delphi12UP}
228{$DEFINE Delphi13UP}
229{$WARN UNSAFE_TYPE OFF} {Disable warning for unsafe types}
230{$DEFINE Has_Int64}
231{$DEFINE Has_UInt64}
232{$DEFINE Has_Native}
233{$DEFINE HAS_TYPES}
234{$ENDIF ver200}
235
236
237{$IFDEF ver210}
238{$DEFINE Delphi} {Delphi / C++ Builder 2010}
239{$DEFINE Delphi4UP}
240{$DEFINE Delphi5UP}
241{$DEFINE Delphi6UP}
242{$DEFINE Delphi7UP}
243{$DEFINE Delphi8UP}
244{$DEFINE Delphi9UP}
245{$DEFINE Delphi10UP}
246{$DEFINE Delphi11UP}
247{$DEFINE Delphi12UP}
248{$DEFINE Delphi13UP}
249{$DEFINE Delphi14UP}
250{$WARN UNSAFE_TYPE OFF} {Disable warning for unsafe types}
251{$DEFINE Has_Int64}
252{$DEFINE Has_UInt64}
253{$DEFINE Has_Native}
254{$DEFINE HAS_TYPES}
255{$ENDIF ver210}
256
257
258{$IFDEF ver220}
259{$DEFINE Delphi} {Delphi / C++ Builder XE}
260{$DEFINE Delphi4UP}
261{$DEFINE Delphi5UP}
262{$DEFINE Delphi6UP}
263{$DEFINE Delphi7UP}
264{$DEFINE Delphi8UP}
265{$DEFINE Delphi9UP}
266{$DEFINE Delphi10UP}
267{$DEFINE Delphi11UP}
268{$DEFINE Delphi12UP}
269{$DEFINE Delphi13UP}
270{$DEFINE Delphi14UP}
271{$DEFINE Delphi15UP}
272{$WARN UNSAFE_TYPE OFF} {Disable warning for unsafe types}
273{$DEFINE Has_Int64}
274{$DEFINE Has_UInt64}
275{$DEFINE Has_Native}
276{$DEFINE HAS_TYPES}
277{$ENDIF ver220}
278
279
280{$IFDEF ver230}
281{$DEFINE Delphi} {Delphi / C++ Builder XE2}
282{$DEFINE Delphi4UP}
283{$DEFINE Delphi5UP}
284{$DEFINE Delphi6UP}
285{$DEFINE Delphi7UP}
286{$DEFINE Delphi8UP}
287{$DEFINE Delphi9UP}
288{$DEFINE Delphi10UP}
289{$DEFINE Delphi11UP}
290{$DEFINE Delphi12UP}
291{$DEFINE Delphi13UP}
292{$DEFINE Delphi14UP}
293{$DEFINE Delphi15UP}
294{$DEFINE Delphi16UP}
295{$WARN UNSAFE_TYPE OFF} {Disable warning for unsafe types}
296{$DEFINE Has_Int64}
297{$DEFINE Has_UInt64}
298{$DEFINE Has_Native}
299{$DEFINE HAS_TYPES}
300{$ENDIF ver230}
301
302
303{$IFDEF ver240}
304{$DEFINE Delphi} {Delphi / C++ Builder XE3}
305{$DEFINE Delphi4UP}
306{$DEFINE Delphi5UP}
307{$DEFINE Delphi6UP}
308{$DEFINE Delphi7UP}
309{$DEFINE Delphi8UP}
310{$DEFINE Delphi9UP}
311{$DEFINE Delphi10UP}
312{$DEFINE Delphi11UP}
313{$DEFINE Delphi12UP}
314{$DEFINE Delphi13UP}
315{$DEFINE Delphi14UP}
316{$DEFINE Delphi15UP}
317{$DEFINE Delphi16UP}
318{$DEFINE Delphi17UP}
319{$WARN UNSAFE_TYPE OFF} {Disable warning for unsafe types}
320{$DEFINE Has_Int64}
321{$DEFINE Has_UInt64}
322{$DEFINE Has_Native}
323{$DEFINE HAS_TYPES}
324{$ENDIF ver240}
325
326
327{$IFDEF ver250}
328{$DEFINE Delphi} {Delphi / C++ Builder XE4}
329{$DEFINE Delphi4UP}
330{$DEFINE Delphi5UP}
331{$DEFINE Delphi6UP}
332{$DEFINE Delphi7UP}
333{$DEFINE Delphi8UP}
334{$DEFINE Delphi9UP}
335{$DEFINE Delphi10UP}
336{$DEFINE Delphi11UP}
337{$DEFINE Delphi12UP}
338{$DEFINE Delphi13UP}
339{$DEFINE Delphi14UP}
340{$DEFINE Delphi15UP}
341{$DEFINE Delphi16UP}
342{$DEFINE Delphi17UP}
343{$DEFINE Delphi18UP}
344{$WARN UNSAFE_TYPE OFF} {Disable warning for unsafe types}
345{$DEFINE Has_Int64}
346{$DEFINE Has_UInt64}
347{$DEFINE Has_Native}
348{$DEFINE HAS_TYPES}
349{$ENDIF ver250}
350
351
352{$IFDEF UNIX}
353{$ifdef VER140} // Kylix 1 & 2
354{$DEFINE KYLIX}
355{$DEFINE KYLIX1UP}
356{$DEFINE KYLIX2UP}
357{$DEFINE HAS_TYPES}
358{$endif}
359
360
361{$ifdef VER150} // Kylix 3
362{$DEFINE KYLIX}
363{$DEFINE KYLIX1UP}
364{$DEFINE KYLIX2UP}
365{$DEFINE KYLIX3UP}
366{$DEFINE HAS_TYPES}
367{$endif}
368{$ENDIF UNIX}
369
370
371{$IFDEF VirtualPascal} { Virtual Pascal 2.x }
372{$DEFINE Delphi} { Use Delphi Syntax }
373{$DEFINE VP2}
374{&Delphi+}
375{$ENDIF VirtualPascal}
376
377
378{$IFDEF Delphi}
379{$IFDEF MSWINDOWS}
380{$DEFINE Windows}
381{$ENDIF MSWINDOWS}
382{$DEFINE USE_STDCALL}
383{$IFDEF WIN32}
384{$DEFINE DELPHI32}
385{$ELSE}
386{$IFDEF WIN64}
387{$DEFINE DELPHI64}
388{$ELSE}
389{$DEFINE DELPHI16}
390{$ENDIF}
391{$ENDIF}
392//{$ALIGN ON}
393{$ENDIF Delphi}
394
395
396{$IFDEF FPC}
397{$MODE Delphi} { use Delphi compatibility mode }
398{$H+}
399{$PACKRECORDS C} // Added for record
400{$MACRO ON} // Added For OpenGL
401{$DEFINE Delphi}
402{$DEFINE UseAT}
403{$UNDEF USE_STDCALL}
404{$DEFINE OS_BigMem}
405{$DEFINE NO_EXPORTS}
406{$DEFINE Has_UInt64}
407{$DEFINE Has_Int64}
408{$DEFINE Has_Native}
409{$DEFINE NOCRT}
410{$IFDEF UNIX}
411{$DEFINE fpc_unix}
412{$ELSE}
413{$DEFINE __OS_DOS__}
414{$ENDIF}
415{$IFDEF WIN32}
416{$DEFINE UseWin}
417{$ENDIF}
418{$DEFINE HAS_TYPES}
419{$ENDIF FPC}
420
421
422{$IFDEF Win16}
423{$K+} {smart callbacks}
424{$ENDIF Win16}
425
426
427{$IFDEF OS2}
428{$UNDEF Windows}
429{$DEFINE UseWin}
430{$DEFINE OS_BigMem}
431{$ENDIF OS2}
432
433
434{$IFDEF __TMT__}
435{$DEFINE OS_BigMem}
436{$DEFINE NO_EXPORTS}
437{$DEFINE __OS_DOS__}
438{$DEFINE UseAT}
439{$IFNDEF MSDOS}
440{$DEFINE USE_STDCALL}
441{$ENDIF}
442
443
444{$IFDEF __WIN32__}
445{$DEFINE Win32}
446{$DEFINE UseWin}
447{$DEFINE NOCRT}
448{$DEFINE Win32}
449{$IFNDEF __CON__}
450{$DEFINE Windows}
451{$ENDIF}
452{$ENDIF}
453
454
455{$A+} // Word alignment data
456{$OA+} // Objects and structures align
457{$ENDIF}
458
459
460{$IFDEF Win32}
461{$DEFINE OS_BigMem}
462{$ELSE Win32}
463{$IFDEF ver70}
464{$DEFINE assembler}
465{$ENDIF} { use 16-bit assembler! }
466{$ENDIF Win32}
467
468
469{ ************************** dos/dos-like platforms **************}
470{$IFDEF Windows}
471{$DEFINE __OS_DOS__}
472{$DEFINE UseWin}
473// {$DEFINE MSWINDOWS}
474{$ENDIF Delphi}
475
476
477{$IFDEF OS2}
478{$DEFINE __OS_DOS__}
479{$DEFINE Can_Use_DLL}
480{$ENDIF Delphi}
481
482
483{$IFDEF UseWin}
484{$DEFINE Can_Use_DLL}
485{$ENDIF}
486
487
488{$IFDEF Win16}
489{$DEFINE Can_Use_DLL}
490{$ENDIF}
491
492
493{$IFDEF BP_DPMI}
494{$DEFINE Can_Use_DLL}
495{$ENDIF}
496
497
498{$IFDEF USE_STDCALL}
499{$IFNDEF __TMT__}
500{$DEFINE BY_NAME}
501{$ENDIF}
502{$ENDIF}
503
504
505{$IFNDEF ver70}
506{$UNDEF assembler}
507{$ENDIF}
508
509
510{*************** define LITTLE ENDIAN platforms ********************}
511
512
513
514
515{$IFDEF Delphi}
516{$DEFINE IA32}
517{$ENDIF}
518
519
520{$IFDEF KYLIX}
521{$DEFINE IA32}
522{$ENDIF}
523
524
525{$IFDEF FPC}
526{$IFDEF FPC_LITTLE_ENDIAN}
527{$DEFINE IA32}
528{$ENDIF}
529{$ENDIF}
530
531
532{*************** define 16/32/64 Bit ********************}
533
534
535{$IFDEF WINDOWS}
536{$IFDEF WIN16}
537{$DEFINE 16BIT}
538{$ENDIF}
539{$IFDEF WIN32}
540{$DEFINE 32BIT}
541{$ENDIF}
542{$IFDEF WIN64}
543{$DEFINE 64BIT}
544{$ENDIF}
545{$ELSE}
546//TODO!!
547{$DEFINE 32BIT}
548{$ENDIF}
549
550