Skip to content

Commit 6f4c532

Browse files
Merge branch 'master' into add-sdlhidapi.inc
2 parents 2ee0d33 + f933108 commit 6f4c532

17 files changed

+1772
-537
lines changed

units/ctypes.inc

Lines changed: 29 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,6 @@ type
2828
cbool = LongBool;
2929
{$EXTERNALSYM cbool}
3030

31-
pcint = ^cint;
32-
cint = Integer;
33-
{$EXTERNALSYM cint}
34-
3531
pcint8 = ^cint8;
3632
cint8 = ShortInt;
3733
{$EXTERNALSYM cint8}
@@ -60,12 +56,6 @@ type
6056
cuint32 = LongWord;
6157
{$EXTERNALSYM cuint32}
6258

63-
culong = LongWord;
64-
{$EXTERNALSYM culong}
65-
66-
cuint = LongWord;
67-
{$EXTERNALSYM cuint}
68-
6959
{$IFNDEF Has_Int64}
7060
pcint64 = ^cint64;
7161
cint64 = record
@@ -96,11 +86,39 @@ type
9686
{$ELSE}
9787
csize_t = cuint64;
9888
{$ENDIF}
99-
{$EXTERNALSYM SIZE_T}
89+
{$EXTERNALSYM csize_t}
10090

10191
pcfloat = ^cfloat;
10292
cfloat = Single;
10393
{$EXTERNALSYM cfloat}
94+
95+
pcint = ^cint;
96+
pcuint = ^cuint;
97+
pclong = ^clong;
98+
pculong = ^culong;
99+
{
100+
Integer type sizes based on:
101+
https://en.cppreference.com/w/c/language/arithmetic_types#Data_models
102+
}
103+
cint = cint32;
104+
cuint = cuint32;
105+
{$IF DEFINED(CPU32) OR DEFINED(CPU32BITS)}
106+
clong = cint32;
107+
culong = cuint32;
108+
{$ELSE} // 64-bit
109+
{$IFDEF MSWINDOWS}
110+
clong = cint32;
111+
culong = cuint32;
112+
{$ELSE}
113+
clong = cint64;
114+
culong = cuint64;
115+
{$ENDIF}
116+
{$ENDIF}
117+
{$EXTERNALSYM cint}
118+
{$EXTERNALSYM cuint}
119+
{$EXTERNALSYM clong}
120+
{$EXTERNALSYM culong}
121+
104122
{$ENDIF}
105123

106124
{ Data types for all compilers }

units/sdl2.pas

Lines changed: 49 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -168,14 +168,14 @@ interface
168168
{$I sdlmutex.inc} // 2.0.14 WIP
169169
{$I sdltimer.inc} // 2.0.18
170170
{$I sdlpixels.inc} // 2.0.14 WIP
171-
{$I sdlrect.inc} // 2.0.14
171+
{$I sdlrect.inc} // 2.24.0
172172
{$I sdlrwops.inc} // 2.0.14
173173
{$I sdlaudio.inc}
174174
{$I sdlblendmode.inc} // 2.0.14
175175
{$I sdlsurface.inc} // 2.0.14
176-
{$I sdlshape.inc} // 2.0.14
177-
{$I sdlvideo.inc} // 2.0.14
178-
{$I sdlhints.inc} // 2.0.22
176+
{$I sdlvideo.inc} // 2.24.0
177+
{$I sdlshape.inc} // 2.24.0
178+
{$I sdlhints.inc} // 2.26.0
179179
{$I sdlloadso.inc} // 2.24.1
180180
{$I sdlmessagebox.inc} // 2.0.14
181181
{$I sdlrenderer.inc} // 2.0.22
@@ -184,21 +184,21 @@ interface
184184
{$I sdlmouse.inc} // 2.0.24
185185
{$I sdlguid.inc} // 2.24.0
186186
{$I sdljoystick.inc} // 2.24.0
187-
{$I sdlsensor.inc}
188-
{$I sdlgamecontroller.inc} // 2.0.22
187+
{$I sdlsensor.inc} // 2.26.0
188+
{$I sdlgamecontroller.inc} // 2.24.0
189189
{$I sdlhaptic.inc}
190190
{$I sdlhidapi.inc} // 2.0.18
191-
{$I sdltouch.inc}
191+
{$I sdltouch.inc} // 2.24.0
192192
{$I sdlgesture.inc}
193193
{$I sdlsyswm.inc}
194-
{$I sdlevents.inc}
194+
{$I sdlevents.inc} // 2.24.0
195195
{$I sdllocale.inc} // 2.0.14
196196
{$I sdlclipboard.inc} // 2.24.1
197197
{$I sdlcpuinfo.inc} // 2.0.14
198198
{$I sdlfilesystem.inc} // 2.24.1
199199
{$I sdllog.inc} // 2.0.14
200200
{$I sdlmisc.inc} // 2.0.14
201-
{$I sdlsystem.inc}
201+
{$I sdlsystem.inc} // 2.24.0
202202
{$I sdl.inc} // 2.0.14
203203

204204
implementation
@@ -255,14 +255,53 @@ function SDL_PointInRect(const p: PSDL_Point; const r: PSDL_Rect): Boolean;
255255

256256
function SDL_RectEmpty(const r: PSDL_Rect): Boolean;
257257
begin
258-
Result := (r^.w <= 0) or (r^.h <= 0);
258+
Result := (r = NIL) or (r^.w <= 0) or (r^.h <= 0);
259259
end;
260260

261261
function SDL_RectEquals(const a, b: PSDL_Rect): Boolean;
262262
begin
263263
Result := (a^.x = b^.x) and (a^.y = b^.y) and (a^.w = b^.w) and (a^.h = b^.h);
264264
end;
265265

266+
function SDL_PointInFRect(const p: PSDL_FPoint; const r: PSDL_FRect): Boolean;
267+
begin
268+
Result :=
269+
(p^.x >= r^.x) and (p^.x < (r^.x + r^.w))
270+
and
271+
(p^.y >= r^.y) and (p^.y < (r^.y + r^.h))
272+
end;
273+
274+
function SDL_FRectEmpty(const r: PSDL_FRect): Boolean;
275+
begin
276+
Result := (r = NIL) or (r^.w <= cfloat(0.0)) or (r^.h <= cfloat(0.0))
277+
end;
278+
279+
{ FIXME: This the Pascal System.Abs() function, instead of the C SDL_fabsf() function. }
280+
function SDL_FRectEqualsEpsilon(const a, b: PSDL_FRect; const epsilon: cfloat): Boolean;
281+
begin
282+
Result :=
283+
(a <> NIL) and
284+
(b <> NIL) and
285+
(
286+
(a = b)
287+
or
288+
(
289+
(Abs(a^.x - b^.x) <= epsilon)
290+
and
291+
(Abs(a^.y - b^.y) <= epsilon)
292+
and
293+
(Abs(a^.w - b^.w) <= epsilon)
294+
and
295+
(Abs(a^.h - b^.h) <= epsilon)
296+
)
297+
)
298+
end;
299+
300+
function SDL_FRectEquals(const a, b: PSDL_FRect): Boolean; Inline;
301+
begin
302+
Result := SDL_FRectEqualsEpsilon(a, b, SDL_FLT_EPSILON)
303+
end;
304+
266305
//from "sdl_atomic.h"
267306
function SDL_AtomicIncRef(atomic: PSDL_Atomic): cint;
268307
begin
@@ -388,13 +427,6 @@ function SDL_SHAPEMODEALPHA(mode: TWindowShapeMode): Boolean;
388427
Result := (mode = ShapeModeDefault) or (mode = ShapeModeBinarizeAlpha) or (mode = ShapeModeReverseBinarizeAlpha);
389428
end;
390429

391-
//from "sdl_sysvideo.h"
392-
393-
function FULLSCREEN_VISIBLE(W: PSDL_Window): Variant;
394-
begin
395-
Result := ((W^.flags and SDL_WINDOW_FULLSCREEN) and (W^.flags and SDL_WINDOW_SHOWN) and not (W^.flags and SDL_WINDOW_MINIMIZED));
396-
end;
397-
398430
//from "sdl_video.h"
399431

400432
function SDL_WINDOWPOS_UNDEFINED_DISPLAY(X: Variant): Variant;

units/sdl2_image.pas

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -167,8 +167,12 @@ function IMG_SaveJPG_RW(surface: PSDL_Surface; dst: PSDL_RWops; freedst: cint32;
167167
external IMG_LibName {$IFDEF DELPHI} {$IFDEF MACOS} name '_IMG_SaveJPG_RW' {$ENDIF} {$ENDIF};
168168

169169
{* We'll use SDL for reporting errors *}
170-
function IMG_SetError(fmt: PAnsiChar): cint32; cdecl;
170+
function IMG_SetError(fmt: PAnsiChar; args: array of const): cint; cdecl;
171+
external SDL_LibName
172+
name {$IF DEFINED(DELPHI) AND DEFINED(MACOS)} '_SDL_SetError' {$ELSE} 'SDL_SetError' {$ENDIF};
171173
function IMG_GetError: PAnsiChar; cdecl;
174+
external SDL_LibName
175+
name {$IF DEFINED(DELPHI) AND DEFINED(MACOS)} '_SDL_GetError' {$ELSE} 'SDL_GetError' {$ENDIF};
172176

173177
implementation
174178

@@ -179,14 +183,4 @@ procedure SDL_IMAGE_VERSION(Out X: TSDL_Version);
179183
X.patch := SDL_IMAGE_PATCHLEVEL;
180184
end;
181185

182-
function IMG_SetError(fmt: PAnsiChar): cint32; cdecl;
183-
begin
184-
Result := SDL_SetError(fmt);
185-
end;
186-
187-
function IMG_GetError: PAnsiChar; cdecl;
188-
begin
189-
Result := SDL_GetError();
190-
end;
191-
192186
end.

units/sdl2_mixer.pas

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -665,9 +665,15 @@ function Mix_GetChunk(channel: cint): PMix_Chunk cdecl; external MIX_LibName {$I
665665
procedure Mix_CloseAudio cdecl; external MIX_LibName {$IFDEF DELPHI} {$IFDEF MACOS} name '_MIX_CloseAudio' {$ENDIF} {$ENDIF};
666666

667667
{* We'll use SDL for reporting errors *}
668-
function Mix_SetError(const fmt: PAnsiChar): cint32; cdecl;
668+
function Mix_SetError(const fmt: PAnsiChar; args: array of const): cint; cdecl;
669+
external SDL_LibName
670+
name {$IF DEFINED(DELPHI) AND DEFINED(MACOS)} '_SDL_SetError' {$ELSE} 'SDL_SetError' {$ENDIF};
669671
function Mix_GetError: PAnsiChar; cdecl;
672+
external SDL_LibName
673+
name {$IF DEFINED(DELPHI) AND DEFINED(MACOS)} '_SDL_GetError' {$ELSE} 'SDL_GetError' {$ENDIF};
670674
procedure Mix_ClearError(); cdecl;
675+
external SDL_LibName
676+
name {$IF DEFINED(DELPHI) AND DEFINED(MACOS)} '_SDL_ClearError' {$ELSE} 'SDL_ClearError' {$ENDIF};
671677

672678
implementation
673679

@@ -698,19 +704,4 @@ function Mix_LoadWAV(_file: PAnsiChar): PMix_Chunk;
698704
Result := Mix_LoadWAV_RW(SDL_RWFromFile(_file, 'rb'), 1);
699705
end;
700706

701-
function Mix_SetError(const fmt: PAnsiChar): cint32; cdecl;
702-
begin
703-
Result := SDL_SetError(fmt);
704-
end;
705-
706-
function Mix_GetError: PAnsiChar; cdecl;
707-
begin
708-
Result := SDL_GetError();
709-
end;
710-
711-
procedure Mix_ClearError; cdecl;
712-
begin
713-
SDL_ClearError()
714-
end;
715-
716707
end.

units/sdl2_net.pas

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -345,8 +345,11 @@ procedure SDLNet_FreeSocketSet(set_: TSDLNet_SocketSet) cdecl; external SDLNet_L
345345
{* Error reporting functions *}
346346
{***********************************************************************}
347347

348-
procedure SDLNet_SetError(const fmt: PAnsiChar); cdecl;
348+
procedure SDLNet_SetError(const fmt: PAnsiChar; args: array of const); cdecl;
349+
external SDLNet_LibName {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDLNet_SetError' {$ENDIF} {$ENDIF};
350+
349351
function SDLNet_GetError(): PAnsiChar; cdecl;
352+
external SDLNet_LibName {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDLNet_GetError' {$ENDIF} {$ENDIF};
350353

351354
{***********************************************************************}
352355
{* Inline functions to read/write network data *}
@@ -397,16 +400,6 @@ function SDLNet_SocketReady(sock: TSDLNet_GenericSocket): cint;
397400
Result := sock.ready;
398401
end;
399402

400-
procedure SDLNet_SetError(const fmt: PAnsiChar); cdecl;
401-
begin
402-
SDL_SetError(fmt);
403-
end;
404-
405-
function SDLNet_GetError(): PAnsiChar; cdecl;
406-
begin
407-
Result := SDL_GetError();
408-
end;
409-
410403
(*
411404
procedure SDLNet_Write16(value: cuint16; areap: Pointer);
412405
begin

units/sdl2_ttf.pas

Lines changed: 14 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -2071,9 +2071,15 @@ function TTF_RenderGlyph32_LCD(font: PTTF_Font; ch: cuint32; fg: TSDL_Color; bg:
20712071
external TTF_LibName {$IFDEF DELPHI} {$IFDEF MACOS} name '_TTF_RenderGlyph32_LCD' {$ENDIF} {$ENDIF};
20722072

20732073
{* For compatibility with previous versions, here are the old functions *}
2074-
function TTF_RenderText(font: PTTF_Font; text: PAnsiChar; fg, bg: TSDL_Color): PSDL_Surface;
2075-
function TTF_RenderUTF8(font: PTTF_Font; text: PAnsiChar; fg, bg: TSDL_Color): PSDL_Surface;
2076-
function TTF_RenderUNICODE(font: PTTF_Font; text: pcuint16; fg, bg: TSDL_Color): PSDL_Surface;
2074+
function TTF_RenderText(font: PTTF_Font; text: PAnsiChar; fg, bg: TSDL_Color): PSDL_Surface; cdecl;
2075+
external TTF_LibName
2076+
name {$IF DEFINED(DELPHI) AND DEFINED(MACOS)} '_TTF_RenderText_Shaded' {$ELSE} 'TTF_RenderText_Shaded' {$ENDIF};
2077+
function TTF_RenderUTF8(font: PTTF_Font; text: PAnsiChar; fg, bg: TSDL_Color): PSDL_Surface; cdecl;
2078+
external TTF_LibName
2079+
name {$IF DEFINED(DELPHI) AND DEFINED(MACOS)} '_TTF_RenderUTF8_Shaded' {$ELSE} 'TTF_RenderUTF8_Shaded' {$ENDIF};
2080+
function TTF_RenderUNICODE(font: PTTF_Font; text: pcuint16; fg, bg: TSDL_Color): PSDL_Surface; cdecl;
2081+
external TTF_LibName
2082+
name {$IF DEFINED(DELPHI) AND DEFINED(MACOS)} '_TTF_RenderUNICODE_Shaded' {$ELSE} 'TTF_RenderUNICODE_Shaded' {$ENDIF};
20772083

20782084
{*
20792085
* Dispose of a previously-created font.
@@ -2252,14 +2258,18 @@ function TTF_GetFontSDF(font: PTTF_Font): TSDL_bool; cdecl;
22522258
*
22532259
* \sa TTF_GetError
22542260
}
2255-
function TTF_SetError(const fmt: PAnsiChar): cint; cdecl;
2261+
function TTF_SetError(const fmt: PAnsiChar; args: array of const): cint; cdecl;
2262+
external SDL_LibName
2263+
name {$IF DEFINED(DELPHI) AND DEFINED(MACOS)} '_SDL_SetError' {$ELSE} 'SDL_SetError' {$ENDIF};
22562264

22572265
{*
22582266
* Get last SDL_ttf error
22592267
*
22602268
* \sa TTF_SetError
22612269
}
22622270
function TTF_GetError: PAnsiChar; cdecl;
2271+
external SDL_LibName
2272+
name {$IF DEFINED(DELPHI) AND DEFINED(MACOS)} '_SDL_GetError' {$ELSE} 'SDL_GetError' {$ENDIF};
22632273

22642274
{*
22652275
* Direction flags
@@ -2393,30 +2403,5 @@ function SDL_TTF_VERSION_ATLEAST(X, Y, Z: Integer): Boolean;
23932403
((SDL_TTF_MAJOR_VERSION > X) or (SDL_TTF_MINOR_VERSION > Y) or (SDL_TTF_PATCHLEVEL >= Z));
23942404
end;
23952405

2396-
function TTF_SetError(const fmt: PAnsiChar): cint; cdecl;
2397-
begin
2398-
Result := SDL_SetError(fmt);
2399-
end;
2400-
2401-
function TTF_GetError: PAnsiChar; cdecl;
2402-
begin
2403-
Result := SDL_GetError();
2404-
end;
2405-
2406-
function TTF_RenderText(font: PTTF_Font; text: PAnsiChar; fg, bg: TSDL_Color): PSDL_Surface;
2407-
begin
2408-
Result := TTF_RenderText_Shaded(font, text, fg, bg);
2409-
end;
2410-
2411-
function TTF_RenderUTF8(font: PTTF_Font; text: PAnsiChar; fg, bg: TSDL_Color): PSDL_Surface;
2412-
begin
2413-
Result := TTF_RenderUTF8_Shaded(font, text, fg, bg);
2414-
end;
2415-
2416-
function TTF_RenderUNICODE(font: PTTF_Font; text: pcuint16; fg, bg: TSDL_Color): PSDL_Surface;
2417-
begin
2418-
Result := TTF_RenderUNICODE_Shaded(font, text, fg, bg);
2419-
end;
2420-
24212406
end.
24222407

units/sdlerror.inc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
*
1414
* \return -1, there is no error handling for this function
1515
*}
16-
function SDL_SetError(const fmt: PAnsiChar): cint; cdecl;
16+
function SDL_SetError(const fmt: PAnsiChar; args: array of const): cint; cdecl;
1717
external SDL_LibName {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_SetError' {$ENDIF} {$ENDIF};
1818

1919
{**

0 commit comments

Comments
 (0)