Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 31 additions & 0 deletions tests/testaudiomacros.pas
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
{
This file is part of:
SDL3 for Pascal
(https://github.com/PascalGameDevelopment/SDL3-for-Pascal)
SPDX-License-Identifier: Zlib
}

{ Test some macros from SDL_audio.inc }

program testaudiomacros;

uses
SDL3;

begin

SDL_Log('SDL_AUDIO_BITSIZE(SDL_AUDIO_S16) returns: %d (should be 16)',[SDL_AUDIO_BITSIZE(SDL_AUDIO_S16)]);
SDL_Log('SDL_AUDIO_BITSIZE(SDL_AUDIO_F32LE) returns: %d (should be 32)',[SDL_AUDIO_BITSIZE(SDL_AUDIO_F32LE)]);
SDL_Log('SDL_AUDIO_BYTESIZE(SDL_AUDIO_S16) returns: %d (should be 2)',[SDL_AUDIO_BYTESIZE(SDL_AUDIO_S16)]);
SDL_Log('SDL_AUDIO_ISFLOAT(SDL_AUDIO_S16) returns: %d (should be 0)',[SDL_AUDIO_ISFLOAT(SDL_AUDIO_S16)]);
SDL_Log('SDL_AUDIO_ISBIGENDIAN(SDL_AUDIO_S16LE) returns: %d (should be 0)',[SDL_AUDIO_ISBIGENDIAN(SDL_AUDIO_S16LE)]);
SDL_Log('SDL_AUDIO_ISBIGENDIAN(SDL_AUDIO_S16BE) returns: %d (should be )',[SDL_AUDIO_ISBIGENDIAN(SDL_AUDIO_S16BE)]);
SDL_Log('SDL_AUDIO_ISLITTLEENDIAN(SDL_AUDIO_S16BE) returns: %d (should be 0)',[SDL_AUDIO_ISLITTLEENDIAN(SDL_AUDIO_S16BE)]);
SDL_Log('SDL_AUDIO_ISLITTLEENDIAN(SDL_AUDIO_S16LE) returns: %d (should be )',[SDL_AUDIO_ISLITTLEENDIAN(SDL_AUDIO_S16LE)]);
SDL_Log('SDL_AUDIO_ISSIGNED(SDL_AUDIO_U8) returns: %d (should be 0)',[SDL_AUDIO_ISSIGNED(SDL_AUDIO_U8)]);
SDL_Log('SDL_AUDIO_ISINT(SDL_AUDIO_F32) returns: %d (should be 0)',[SDL_AUDIO_ISINT(SDL_AUDIO_F32)]);
SDL_Log('SDL_AUDIO_ISUNSIGNED(SDL_AUDIO_S16) returns: %d (should be 0)',[SDL_AUDIO_ISUNSIGNED(SDL_AUDIO_S16)]);

end.

73 changes: 72 additions & 1 deletion units/SDL3.pas
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,7 @@ interface
{$I SDL_log.inc} // 3.1.6-prev
{$I SDL_version.inc} // 3.1.6-prev
{$I SDL_revision.inc} // 3.1.6-prev
{$I SDL_guid.inc} // 3.1.6-prev
{$I SDL_stdinc.inc} // 3.1.6-prev (unfinished)
{$I SDL_rect.inc} // 3.1.6-prev
{$I SDL_properties.inc} // 3.1.6-prev
Expand All @@ -87,9 +88,21 @@ interface
{$I SDL_iostream.inc} // 3.1.6-prev (unfinished)
{$I SDL_surface.inc} // 3.1.6-prev
{$I SDL_video.inc} // 3.1.6-prev
{$I SDL_render.inc} // 3.1.6-prev
{$I SDL_timer.inc} // 3.1.6-prev
{$I SDL_error.inc} // 3.1.6-prev
{$I SDL_power.inc} // 3.1.6-prev
{$I SDL_audio.inc} // 3.1.6-prev
{$I SDL_sensor.inc} // 3.1.6-prev
{$I SDL_scancode.inc} // 3.1.6-prev
{$I SDL_keycode.inc} // 3.1.6-prev
{$I SDL_mouse.inc} // 3.1.6-prev
{$I SDL_keyboard.inc} // 3.1.6-prev
{$I SDL_joystick.inc} // 3.1.6-prev
{$I SDL_pen.inc} // 3.1.6-prev
{$I SDL_touch.inc} // 3.1.6-prev
{$I SDL_camera.inc} // 3.1.6-prev
{$I SDL_events.inc} // 3.1.6-prev
{$I SDL_render.inc} // 3.1.6-prev


implementation
Expand Down Expand Up @@ -214,6 +227,64 @@ function SDL_NS_TO_US(NS: Integer): Integer;
SDL_NS_TO_US:=NS div SDL_NS_PER_US;
end;

{ Macros from SDL_audio.h }
function SDL_DEFINE_AUDIO_FORMAT(signed: cuint16; bigendian: cuint16;
float: cuint16; size: Integer): TSDL_AudioFormat;
begin
Result:=(signed shl 15) or (bigendian shl 12) or (float shl 8) or (size and SDL_AUDIO_MASK_BITSIZE);
end;

function SDL_AUDIO_BITSIZE(x: TSDL_AudioFormat): Integer;
begin
Result:=x and SDL_AUDIO_MASK_BITSIZE;
end;

function SDL_AUDIO_BYTESIZE(x: TSDL_AudioFormat): Integer;
begin
Result:=SDL_AUDIO_BITSIZE(x) div 8;
end;

function SDL_AUDIO_ISFLOAT(x: TSDL_AudioFormat): Integer;
begin
Result:=x and SDL_AUDIO_MASK_FLOAT;
end;

function SDL_AUDIO_ISBIGENDIAN(x: TSDL_AudioFormat): Integer;
begin
Result:=x and SDL_AUDIO_MASK_BIG_ENDIAN;
end;

function SDL_AUDIO_ISLITTLEENDIAN(x: TSDL_AudioFormat): Integer;
begin
Result:=not(x) and SDL_AUDIO_MASK_BIG_ENDIAN;
end;

function SDL_AUDIO_ISSIGNED(x: TSDL_AudioFormat): Integer;
begin
Result:=x and SDL_AUDIO_MASK_SIGNED;
end;

function SDL_AUDIO_ISINT(x: TSDL_AudioFormat): Integer;
begin
Result:=not(x) and SDL_AUDIO_MASK_FLOAT;
end;

function SDL_AUDIO_ISUNSIGNED(x: TSDL_AudioFormat): Integer;
begin
Result:=not(x) and SDL_AUDIO_MASK_SIGNED;
end;

function SDL_AUDIO_FRAMESIZE(x: TSDL_AudioSpec): Integer;
begin
Result:=SDL_AUDIO_BYTESIZE(x.format * x.channels);
end;

{ Macros from SDL_keycode.h }
function SDL_SCANCODE_TO_KEYCODE(X: TSDL_Scancode): TSDL_Keycode;
begin
Result:=X or SDLK_SCANCODE_MASK;
end;

{ Macros from SDL_video.h }
function SDL_WINDOWPOS_UNDEFINED_DISPLAY(X: Integer): Integer;
begin
Expand Down
Loading