mirror of https://github.com/libsdl-org/SDL
rwops: Renamed SDL_RWops to SDL_IOStream, and other related symbols.
This commit is contained in:
parent
fe33b2a81b
commit
fc7afa9cbf
|
@ -1804,15 +1804,15 @@ expression e2;
|
||||||
@@
|
@@
|
||||||
@@
|
@@
|
||||||
- RW_SEEK_CUR
|
- RW_SEEK_CUR
|
||||||
+ SDL_RW_SEEK_CUR
|
+ SDL_IO_SEEK_CUR
|
||||||
@@
|
@@
|
||||||
@@
|
@@
|
||||||
- RW_SEEK_END
|
- RW_SEEK_END
|
||||||
+ SDL_RW_SEEK_END
|
+ SDL_IO_SEEK_END
|
||||||
@@
|
@@
|
||||||
@@
|
@@
|
||||||
- RW_SEEK_SET
|
- RW_SEEK_SET
|
||||||
+ SDL_RW_SEEK_SET
|
+ SDL_IO_SEEK_SET
|
||||||
@@
|
@@
|
||||||
@@
|
@@
|
||||||
- SDL_SensorClose
|
- SDL_SensorClose
|
||||||
|
@ -3051,30 +3051,65 @@ typedef SDL_version, SDL_Version;
|
||||||
@@
|
@@
|
||||||
@@
|
@@
|
||||||
- SDL_RWclose
|
- SDL_RWclose
|
||||||
+ SDL_CloseRW
|
+ SDL_CloseIO
|
||||||
(...)
|
(...)
|
||||||
@@
|
@@
|
||||||
@@
|
@@
|
||||||
- SDL_RWread
|
- SDL_RWread
|
||||||
+ SDL_ReadRW
|
+ SDL_ReadIO
|
||||||
(...)
|
(...)
|
||||||
@@
|
@@
|
||||||
@@
|
@@
|
||||||
- SDL_RWwrite
|
- SDL_RWwrite
|
||||||
+ SDL_WriteRW
|
+ SDL_WriteIO
|
||||||
(...)
|
(...)
|
||||||
@@
|
@@
|
||||||
@@
|
@@
|
||||||
- SDL_RWtell
|
- SDL_RWtell
|
||||||
+ SDL_TellRW
|
+ SDL_TellIO
|
||||||
(...)
|
(...)
|
||||||
@@
|
@@
|
||||||
@@
|
@@
|
||||||
- SDL_RWsize
|
- SDL_RWsize
|
||||||
+ SDL_SizeRW
|
+ SDL_SizeIO
|
||||||
(...)
|
(...)
|
||||||
@@
|
@@
|
||||||
@@
|
@@
|
||||||
- SDL_RWseek
|
- SDL_RWseek
|
||||||
+ SDL_SeekRW
|
+ SDL_SeekIO
|
||||||
(...)
|
(...)
|
||||||
|
@@
|
||||||
|
@@
|
||||||
|
- SDL_LoadBMP_RW
|
||||||
|
+ SDL_LoadBMP_IO
|
||||||
|
(...)
|
||||||
|
@@
|
||||||
|
@@
|
||||||
|
- SDL_LoadWAV_RW
|
||||||
|
+ SDL_LoadWAV_IO
|
||||||
|
(...)
|
||||||
|
@@
|
||||||
|
@@
|
||||||
|
- SDL_SaveBMP_RW
|
||||||
|
+ SDL_SaveBMP_IO
|
||||||
|
(...)
|
||||||
|
@@
|
||||||
|
@@
|
||||||
|
- SDL_RWFromFile
|
||||||
|
+ SDL_IOFromFile
|
||||||
|
(...)
|
||||||
|
@@
|
||||||
|
@@
|
||||||
|
- SDL_RWFromMem
|
||||||
|
+ SDL_IOFromMem
|
||||||
|
(...)
|
||||||
|
@@
|
||||||
|
@@
|
||||||
|
- SDL_RWFromConstMem
|
||||||
|
+ SDL_IOFromConstMem
|
||||||
|
(...)
|
||||||
|
@@
|
||||||
|
typedef SDL_RWops, SDL_IOStream;
|
||||||
|
@@
|
||||||
|
- SDL_RWops
|
||||||
|
+ SDL_IOStream
|
||||||
|
|
|
@ -301,7 +301,7 @@ Your game probably has data files. Here's how to access them.
|
||||||
Filesystem access works like a Unix filesystem; you have a single directory
|
Filesystem access works like a Unix filesystem; you have a single directory
|
||||||
tree, possibly interpolated from several mounted locations, no drive letters,
|
tree, possibly interpolated from several mounted locations, no drive letters,
|
||||||
'/' for a path separator. You can access them with standard file APIs like
|
'/' for a path separator. You can access them with standard file APIs like
|
||||||
open() or fopen() or SDL_RWops. You can read or write from the filesystem.
|
open() or fopen() or SDL_IOStream. You can read or write from the filesystem.
|
||||||
|
|
||||||
By default, you probably have a "MEMFS" filesystem (all files are stored in
|
By default, you probably have a "MEMFS" filesystem (all files are stored in
|
||||||
memory, but access to them is immediate and doesn't need to block). There are
|
memory, but access to them is immediate and doesn't need to block). There are
|
||||||
|
|
|
@ -191,7 +191,7 @@ SDL_FreeWAV has been removed and calls can be replaced with SDL_free.
|
||||||
|
|
||||||
SDL_LoadWAV() is a proper function now and no longer a macro (but offers the same functionality otherwise).
|
SDL_LoadWAV() is a proper function now and no longer a macro (but offers the same functionality otherwise).
|
||||||
|
|
||||||
SDL_LoadWAV_RW() and SDL_LoadWAV() return an int now: zero on success, -1 on error, like most of SDL. They no longer return a pointer to an SDL_AudioSpec.
|
SDL_LoadWAV_IO() and SDL_LoadWAV() return an int now: zero on success, -1 on error, like most of SDL. They no longer return a pointer to an SDL_AudioSpec.
|
||||||
|
|
||||||
SDL_AudioCVT interface has been removed, the SDL_AudioStream interface (for audio supplied in pieces) or the new SDL_ConvertAudioSamples() function (for converting a complete audio buffer in one call) can be used instead.
|
SDL_AudioCVT interface has been removed, the SDL_AudioStream interface (for audio supplied in pieces) or the new SDL_ConvertAudioSamples() function (for converting a complete audio buffer in one call) can be used instead.
|
||||||
|
|
||||||
|
@ -253,6 +253,7 @@ The following functions have been renamed:
|
||||||
* SDL_AudioStreamGet() => SDL_GetAudioStreamData()
|
* SDL_AudioStreamGet() => SDL_GetAudioStreamData()
|
||||||
* SDL_AudioStreamPut() => SDL_PutAudioStreamData()
|
* SDL_AudioStreamPut() => SDL_PutAudioStreamData()
|
||||||
* SDL_FreeAudioStream() => SDL_DestroyAudioStream()
|
* SDL_FreeAudioStream() => SDL_DestroyAudioStream()
|
||||||
|
* SDL_LoadWAV_RW() => SDL_LoadWAV_IO()
|
||||||
* SDL_NewAudioStream() => SDL_CreateAudioStream()
|
* SDL_NewAudioStream() => SDL_CreateAudioStream()
|
||||||
|
|
||||||
|
|
||||||
|
@ -1152,80 +1153,79 @@ The following symbols have been renamed:
|
||||||
## SDL_rwops.h
|
## SDL_rwops.h
|
||||||
|
|
||||||
The following symbols have been renamed:
|
The following symbols have been renamed:
|
||||||
* RW_SEEK_CUR => SDL_RW_SEEK_CUR
|
* RW_SEEK_CUR => SDL_IO_SEEK_CUR
|
||||||
* RW_SEEK_END => SDL_RW_SEEK_END
|
* RW_SEEK_END => SDL_IO_SEEK_END
|
||||||
* RW_SEEK_SET => SDL_RW_SEEK_SET
|
* RW_SEEK_SET => SDL_IO_SEEK_SET
|
||||||
|
|
||||||
SDL_RWops is now an opaque structure. The existing APIs to create a RWops (SDL_RWFromFile, etc) still function as expected, but to make a custom RWops with app-provided function pointers, call SDL_OpenRW and provide the function pointers through there. To call into a RWops's functionality, use the standard APIs (SDL_ReadRW, etc) instead of calling into function pointers directly.
|
SDL_RWops is now an opaque structure, and has been renamed to SDL_IOStream. The SDL3 APIs to create an SDL_IOStream (SDL_IOFromFile, etc) are renamed but otherwise still function as they did in SDL2. However, to make a custom SDL_IOStream with app-provided function pointers, call SDL_OpenIO and provide the function pointers through there. To call into an SDL_IOStream's functionality, use the standard APIs (SDL_ReadIO, etc), as the function pointers are concealed.
|
||||||
|
|
||||||
The RWops function pointers are now in a separate structure called SDL_RWopsInteface, which is provided to SDL_OpenRW. All the functions now take a `void *` userdata argument for their first parameter instead of an SDL_RWops, since that's now an opaque structure.
|
The RWops function pointers are now in a separate structure called SDL_IOStreamInterface, which is provided to SDL_OpenIO when creating a custom SDL_IOStream implementation. All the functions now take a `void *` userdata argument for their first parameter instead of an SDL_IOStream, since that's now an opaque structure.
|
||||||
|
|
||||||
SDL_RWread and SDL_RWwrite (and the read and write function pointers) have a different function signature in SDL3 in addition to being renamed.
|
SDL_RWread and SDL_RWwrite (and the read and write function pointers) have a different function signature in SDL3, in addition to being renamed.
|
||||||
|
|
||||||
Previously they looked more like stdio:
|
Previously they looked more like stdio:
|
||||||
|
|
||||||
```c
|
```c
|
||||||
size_t SDL_RWread(SDL_RWops *context, void *ptr, size_t size, size_t maxnum);
|
size_t SDL_RWread(SDL_IOStream *context, void *ptr, size_t size, size_t maxnum);
|
||||||
size_t SDL_RWwrite(SDL_RWops *context, const void *ptr, size_t size, size_t maxnum);
|
size_t SDL_RWwrite(SDL_IOStream *context, const void *ptr, size_t size, size_t maxnum);
|
||||||
```
|
```
|
||||||
|
|
||||||
But now they look more like POSIX:
|
But now they look more like POSIX:
|
||||||
|
|
||||||
```c
|
```c
|
||||||
size_t SDL_ReadRW(void *userdata, void *ptr, size_t size);
|
size_t SDL_ReadIO(void *userdata, void *ptr, size_t size);
|
||||||
size_t SDL_WriteRW(void *userdata, const void *ptr, size_t size);
|
size_t SDL_WriteIO(void *userdata, const void *ptr, size_t size);
|
||||||
```
|
```
|
||||||
|
|
||||||
Code that used to look like this:
|
Code that used to look like this:
|
||||||
```c
|
```c
|
||||||
size_t custom_read(void *ptr, size_t size, size_t nitems, SDL_RWops *stream)
|
size_t custom_read(void *ptr, size_t size, size_t nitems, SDL_IOStream *stream)
|
||||||
{
|
{
|
||||||
return SDL_RWread(stream, ptr, size, nitems);
|
return SDL_RWread(stream, ptr, size, nitems);
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
should be changed to:
|
should be changed to:
|
||||||
```c
|
```c
|
||||||
size_t custom_read(void *ptr, size_t size, size_t nitems, SDL_RWops *stream)
|
size_t custom_read(void *ptr, size_t size, size_t nitems, SDL_IOStream *stream, SDL_IOStatus *status)
|
||||||
{
|
{
|
||||||
if (size > 0 && nitems > 0) {
|
if (size > 0 && nitems > 0) {
|
||||||
return SDL_ReadRW(stream, ptr, size * nitems) / size;
|
return SDL_ReadIO(stream, ptr, size * nitems) / size;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
SDL_RWops::type was removed and has no replacement; it wasn't meaningful for app-provided implementations at all, and wasn't much use for SDL's internal implementations, either.
|
SDL_IOStream::type was removed; it wasn't meaningful for app-provided implementations at all, and wasn't much use for SDL's internal implementations, either. If you _have_ to identify the type, you can examine the SDL_IOStream's properties to detect built-in implementations.
|
||||||
|
|
||||||
SDL_RWopsInterface::close implementations should clean up their own userdata, but not call SDL_CloseRW on themselves; now the contract is always that SDL_CloseRW is called, which calls `->close` and then frees the opaque object.
|
SDL_IOStreamInterface::close implementations should clean up their own userdata, but not call SDL_CloseIO on themselves; now the contract is always that SDL_CloseIO is called, which calls `->close` before freeing the opaque object.
|
||||||
|
|
||||||
|
SDL_AllocRW(), SDL_FreeRW(), SDL_RWclose() and direct access to the `->close` function pointer have been removed from the API, so there's only one path to manage RWops lifetimes now: SDL_OpenIO() and SDL_CloseIO().
|
||||||
|
|
||||||
SDL_RWFromFP has been removed from the API, due to issues when the SDL library uses a different C runtime from the application.
|
SDL_RWFromFP has been removed from the API, due to issues when the SDL library uses a different C runtime from the application.
|
||||||
|
|
||||||
SDL_AllocRW(), SDL_FreeRW(), SDL_CloseRW() and direct access to the `->close` function pointer have been removed from the API, so there's only one path to manage RWops lifetimes now: SDL_OpenRW() and SDL_CloseRW().
|
|
||||||
|
|
||||||
|
|
||||||
You can implement this in your own code easily:
|
You can implement this in your own code easily:
|
||||||
```c
|
```c
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
typedef struct RWopsStdioFPData
|
typedef struct IOStreamStdioFPData
|
||||||
{
|
{
|
||||||
FILE *fp;
|
FILE *fp;
|
||||||
SDL_bool autoclose;
|
SDL_bool autoclose;
|
||||||
} RWopsStdioFPData;
|
} IOStreamStdioFPData;
|
||||||
|
|
||||||
static Sint64 SDLCALL stdio_seek(void *userdata, Sint64 offset, int whence)
|
static Sint64 SDLCALL stdio_seek(void *userdata, Sint64 offset, int whence)
|
||||||
{
|
{
|
||||||
FILE *fp = ((RWopsStdioFPData *) userdata)->fp;
|
FILE *fp = ((IOStreamStdioFPData *) userdata)->fp;
|
||||||
int stdiowhence;
|
int stdiowhence;
|
||||||
|
|
||||||
switch (whence) {
|
switch (whence) {
|
||||||
case SDL_RW_SEEK_SET:
|
case SDL_IO_SEEK_SET:
|
||||||
stdiowhence = SEEK_SET;
|
stdiowhence = SEEK_SET;
|
||||||
break;
|
break;
|
||||||
case SDL_RW_SEEK_CUR:
|
case SDL_IO_SEEK_CUR:
|
||||||
stdiowhence = SEEK_CUR;
|
stdiowhence = SEEK_CUR;
|
||||||
break;
|
break;
|
||||||
case SDL_RW_SEEK_END:
|
case SDL_IO_SEEK_END:
|
||||||
stdiowhence = SEEK_END;
|
stdiowhence = SEEK_END;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -1242,9 +1242,9 @@ static Sint64 SDLCALL stdio_seek(void *userdata, Sint64 offset, int whence)
|
||||||
return SDL_Error(SDL_EFSEEK);
|
return SDL_Error(SDL_EFSEEK);
|
||||||
}
|
}
|
||||||
|
|
||||||
static size_t SDLCALL stdio_read(void *userdata, void *ptr, size_t size)
|
static size_t SDLCALL stdio_read(void *userdata, void *ptr, size_t size, SDL_IOStatus *status)
|
||||||
{
|
{
|
||||||
FILE *fp = ((RWopsStdioFPData *) userdata)->fp;
|
FILE *fp = ((IOStreamStdioFPData *) userdata)->fp;
|
||||||
const size_t bytes = fread(ptr, 1, size, fp);
|
const size_t bytes = fread(ptr, 1, size, fp);
|
||||||
if (bytes == 0 && ferror(fp)) {
|
if (bytes == 0 && ferror(fp)) {
|
||||||
SDL_Error(SDL_EFREAD);
|
SDL_Error(SDL_EFREAD);
|
||||||
|
@ -1252,9 +1252,9 @@ static size_t SDLCALL stdio_read(void *userdata, void *ptr, size_t size)
|
||||||
return bytes;
|
return bytes;
|
||||||
}
|
}
|
||||||
|
|
||||||
static size_t SDLCALL stdio_write(void *userdata, const void *ptr, size_t size)
|
static size_t SDLCALL stdio_write(void *userdata, const void *ptr, size_t size, SDL_IOStatus *status)
|
||||||
{
|
{
|
||||||
FILE *fp = ((RWopsStdioFPData *) userdata)->fp;
|
FILE *fp = ((IOStreamStdioFPData *) userdata)->fp;
|
||||||
const size_t bytes = fwrite(ptr, 1, size, fp);
|
const size_t bytes = fwrite(ptr, 1, size, fp);
|
||||||
if (bytes == 0 && ferror(fp)) {
|
if (bytes == 0 && ferror(fp)) {
|
||||||
SDL_Error(SDL_EFWRITE);
|
SDL_Error(SDL_EFWRITE);
|
||||||
|
@ -1264,7 +1264,7 @@ static size_t SDLCALL stdio_write(void *userdata, const void *ptr, size_t size)
|
||||||
|
|
||||||
static int SDLCALL stdio_close(void *userdata)
|
static int SDLCALL stdio_close(void *userdata)
|
||||||
{
|
{
|
||||||
RWopsStdioData *rwopsdata = (RWopsStdioData *) userdata;
|
IOStreamStdioData *rwopsdata = (IOStreamStdioData *) userdata;
|
||||||
int status = 0;
|
int status = 0;
|
||||||
if (rwopsdata->autoclose) {
|
if (rwopsdata->autoclose) {
|
||||||
if (fclose(rwopsdata->fp) != 0) {
|
if (fclose(rwopsdata->fp) != 0) {
|
||||||
|
@ -1274,19 +1274,19 @@ static int SDLCALL stdio_close(void *userdata)
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
SDL_RWops *SDL_RWFromFP(FILE *fp, SDL_bool autoclose)
|
SDL_IOStream *SDL_RWFromFP(FILE *fp, SDL_bool autoclose)
|
||||||
{
|
{
|
||||||
SDL_RWopsInterface iface;
|
SDL_IOStreamInterface iface;
|
||||||
RWopsStdioFPData *rwopsdata;
|
IOStreamStdioFPData *rwopsdata;
|
||||||
SDL_RWops *rwops;
|
SDL_IOStream *rwops;
|
||||||
|
|
||||||
rwopsdata = (RWopsStdioFPData *) SDL_malloc(sizeof (*rwopsdata));
|
rwopsdata = (IOStreamStdioFPData *) SDL_malloc(sizeof (*rwopsdata));
|
||||||
if (!rwopsdata) {
|
if (!rwopsdata) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
SDL_zero(iface);
|
SDL_zero(iface);
|
||||||
/* There's no stdio_size because SDL_SizeRW emulates it the same way we'd do it for stdio anyhow. */
|
/* There's no stdio_size because SDL_SizeIO emulates it the same way we'd do it for stdio anyhow. */
|
||||||
iface.seek = stdio_seek;
|
iface.seek = stdio_seek;
|
||||||
iface.read = stdio_read;
|
iface.read = stdio_read;
|
||||||
iface.write = stdio_write;
|
iface.write = stdio_write;
|
||||||
|
@ -1295,7 +1295,7 @@ SDL_RWops *SDL_RWFromFP(FILE *fp, SDL_bool autoclose)
|
||||||
rwopsdata->fp = fp;
|
rwopsdata->fp = fp;
|
||||||
rwopsdata->autoclose = autoclose;
|
rwopsdata->autoclose = autoclose;
|
||||||
|
|
||||||
rwops = SDL_OpenRW(&iface, rwopsdata);
|
rwops = SDL_OpenIO(&iface, rwopsdata);
|
||||||
if (!rwops) {
|
if (!rwops) {
|
||||||
iface.close(rwopsdata);
|
iface.close(rwopsdata);
|
||||||
}
|
}
|
||||||
|
@ -1303,15 +1303,22 @@ SDL_RWops *SDL_RWFromFP(FILE *fp, SDL_bool autoclose)
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
The internal `FILE *` is available through a standard SDL_IOStream property, for streams made through SDL_IOFromFile() that use stdio behind the scenes; apps use this pointer at their own risk and should make sure that SDL and the app are using the same C runtime.
|
||||||
|
|
||||||
|
|
||||||
The functions SDL_ReadU8(), SDL_ReadU16LE(), SDL_ReadU16BE(), SDL_ReadU32LE(), SDL_ReadU32BE(), SDL_ReadU64LE(), and SDL_ReadU64BE() now return SDL_TRUE if the read succeeded and SDL_FALSE if it didn't, and store the data in a pointer passed in as a parameter.
|
The functions SDL_ReadU8(), SDL_ReadU16LE(), SDL_ReadU16BE(), SDL_ReadU32LE(), SDL_ReadU32BE(), SDL_ReadU64LE(), and SDL_ReadU64BE() now return SDL_TRUE if the read succeeded and SDL_FALSE if it didn't, and store the data in a pointer passed in as a parameter.
|
||||||
|
|
||||||
The following functions have been renamed:
|
The following functions have been renamed:
|
||||||
* SDL_RWclose() => SDL_CloseRW()
|
* SDL_CloseRW() => SDL_CloseIO()
|
||||||
* SDL_RWread() => SDL_ReadRW()
|
* SDL_RWFromConstMem() => SDL_IOFromConstMem()
|
||||||
* SDL_RWseek() => SDL_SeekRW()
|
* SDL_RWFromFile() => SDL_IOFromFile()
|
||||||
* SDL_RWsize() => SDL_SizeRW()
|
* SDL_RWFromMem() => SDL_IOFromMem()
|
||||||
* SDL_RWtell() => SDL_TellRW()
|
* SDL_RWclose() => SDL_CloseIO()
|
||||||
* SDL_RWwrite() => SDL_WriteRW()
|
* SDL_RWread() => SDL_ReadIO()
|
||||||
|
* SDL_RWseek() => SDL_SeekIO()
|
||||||
|
* SDL_RWsize() => SDL_SizeIO()
|
||||||
|
* SDL_RWtell() => SDL_TellIO()
|
||||||
|
* SDL_RWwrite() => SDL_WriteIO()
|
||||||
* SDL_ReadBE16() => SDL_ReadU16BE()
|
* SDL_ReadBE16() => SDL_ReadU16BE()
|
||||||
* SDL_ReadBE32() => SDL_ReadU32BE()
|
* SDL_ReadBE32() => SDL_ReadU32BE()
|
||||||
* SDL_ReadBE64() => SDL_ReadU64BE()
|
* SDL_ReadBE64() => SDL_ReadU64BE()
|
||||||
|
@ -1325,6 +1332,10 @@ The following functions have been renamed:
|
||||||
* SDL_WriteLE32() => SDL_WriteU32LE()
|
* SDL_WriteLE32() => SDL_WriteU32LE()
|
||||||
* SDL_WriteLE64() => SDL_WriteU64LE()
|
* SDL_WriteLE64() => SDL_WriteU64LE()
|
||||||
|
|
||||||
|
|
||||||
|
The following structures have been renamed:
|
||||||
|
* SDL_RWops => SDL_IOStream
|
||||||
|
|
||||||
## SDL_sensor.h
|
## SDL_sensor.h
|
||||||
|
|
||||||
SDL_SensorID has changed from Sint32 to Uint32, with an invalid ID being 0.
|
SDL_SensorID has changed from Sint32 to Uint32, with an invalid ID being 0.
|
||||||
|
@ -1448,8 +1459,10 @@ The following functions have been renamed:
|
||||||
* SDL_GetColorKey() => SDL_GetSurfaceColorKey()
|
* SDL_GetColorKey() => SDL_GetSurfaceColorKey()
|
||||||
* SDL_HasColorKey() => SDL_SurfaceHasColorKey()
|
* SDL_HasColorKey() => SDL_SurfaceHasColorKey()
|
||||||
* SDL_HasSurfaceRLE() => SDL_SurfaceHasRLE()
|
* SDL_HasSurfaceRLE() => SDL_SurfaceHasRLE()
|
||||||
|
* SDL_LoadBMP_RW() => SDL_LoadBMP_IO()
|
||||||
* SDL_LowerBlit() => SDL_BlitSurfaceUnchecked()
|
* SDL_LowerBlit() => SDL_BlitSurfaceUnchecked()
|
||||||
* SDL_LowerBlitScaled() => SDL_BlitSurfaceUncheckedScaled()
|
* SDL_LowerBlitScaled() => SDL_BlitSurfaceUncheckedScaled()
|
||||||
|
* SDL_SaveBMP_RW() => SDL_SaveBMP_IO()
|
||||||
* SDL_SetClipRect() => SDL_SetSurfaceClipRect()
|
* SDL_SetClipRect() => SDL_SetSurfaceClipRect()
|
||||||
* SDL_SetColorKey() => SDL_SetSurfaceColorKey()
|
* SDL_SetColorKey() => SDL_SetSurfaceColorKey()
|
||||||
* SDL_UpperBlit() => SDL_BlitSurface()
|
* SDL_UpperBlit() => SDL_BlitSurface()
|
||||||
|
|
|
@ -42,7 +42,7 @@ Here is a rough list of what works, and what doesn't:
|
||||||
* threads
|
* threads
|
||||||
* timers (via SDL_GetTicks(), SDL_AddTimer(), SDL_GetPerformanceCounter(),
|
* timers (via SDL_GetTicks(), SDL_AddTimer(), SDL_GetPerformanceCounter(),
|
||||||
SDL_GetPerformanceFrequency(), etc.)
|
SDL_GetPerformanceFrequency(), etc.)
|
||||||
* file I/O via SDL_RWops
|
* file I/O via SDL_IOStream
|
||||||
* mouse input (unsupported on Windows Phone)
|
* mouse input (unsupported on Windows Phone)
|
||||||
* audio, via SDL's WASAPI backend (if you want to record, your app must
|
* audio, via SDL's WASAPI backend (if you want to record, your app must
|
||||||
have "Microphone" capabilities enabled in its manifest, and the user must
|
have "Microphone" capabilities enabled in its manifest, and the user must
|
||||||
|
|
|
@ -1306,7 +1306,7 @@ extern DECLSPEC int SDLCALL SDL_SetAudioPostmixCallback(SDL_AudioDeviceID devid,
|
||||||
* Example:
|
* Example:
|
||||||
*
|
*
|
||||||
* ```c
|
* ```c
|
||||||
* SDL_LoadWAV_RW(SDL_RWFromFile("sample.wav", "rb"), 1, &spec, &buf, &len);
|
* SDL_LoadWAV_IO(SDL_IOFromFile("sample.wav", "rb"), 1, &spec, &buf, &len);
|
||||||
* ```
|
* ```
|
||||||
*
|
*
|
||||||
* Note that the SDL_LoadWAV function does this same thing for you, but in a
|
* Note that the SDL_LoadWAV function does this same thing for you, but in a
|
||||||
|
@ -1317,7 +1317,7 @@ extern DECLSPEC int SDLCALL SDL_SetAudioPostmixCallback(SDL_AudioDeviceID devid,
|
||||||
* ```
|
* ```
|
||||||
*
|
*
|
||||||
* \param src The data source for the WAVE data
|
* \param src The data source for the WAVE data
|
||||||
* \param freesrc If SDL_TRUE, calls SDL_CloseRW() on `src` before returning,
|
* \param freesrc If SDL_TRUE, calls SDL_CloseIO() on `src` before returning,
|
||||||
* even in the case of an error
|
* even in the case of an error
|
||||||
* \param spec A pointer to an SDL_AudioSpec that will be set to the WAVE
|
* \param spec A pointer to an SDL_AudioSpec that will be set to the WAVE
|
||||||
* data's format details on successful return
|
* data's format details on successful return
|
||||||
|
@ -1344,7 +1344,7 @@ extern DECLSPEC int SDLCALL SDL_SetAudioPostmixCallback(SDL_AudioDeviceID devid,
|
||||||
* \sa SDL_free
|
* \sa SDL_free
|
||||||
* \sa SDL_LoadWAV
|
* \sa SDL_LoadWAV
|
||||||
*/
|
*/
|
||||||
extern DECLSPEC int SDLCALL SDL_LoadWAV_RW(SDL_RWops * src, SDL_bool freesrc,
|
extern DECLSPEC int SDLCALL SDL_LoadWAV_IO(SDL_IOStream * src, SDL_bool freesrc,
|
||||||
SDL_AudioSpec * spec, Uint8 ** audio_buf,
|
SDL_AudioSpec * spec, Uint8 ** audio_buf,
|
||||||
Uint32 * audio_len);
|
Uint32 * audio_len);
|
||||||
|
|
||||||
|
@ -1354,7 +1354,7 @@ extern DECLSPEC int SDLCALL SDL_LoadWAV_RW(SDL_RWops * src, SDL_bool freesrc,
|
||||||
* This is a convenience function that is effectively the same as:
|
* This is a convenience function that is effectively the same as:
|
||||||
*
|
*
|
||||||
* ```c
|
* ```c
|
||||||
* SDL_LoadWAV_RW(SDL_RWFromFile(path, "rb"), 1, spec, audio_buf, audio_len);
|
* SDL_LoadWAV_IO(SDL_IOFromFile(path, "rb"), 1, spec, audio_buf, audio_len);
|
||||||
* ```
|
* ```
|
||||||
*
|
*
|
||||||
* Note that in SDL2, this was a preprocessor macro and not a real function.
|
* Note that in SDL2, this was a preprocessor macro and not a real function.
|
||||||
|
@ -1383,7 +1383,7 @@ extern DECLSPEC int SDLCALL SDL_LoadWAV_RW(SDL_RWops * src, SDL_bool freesrc,
|
||||||
* \since This function is available since SDL 3.0.0.
|
* \since This function is available since SDL 3.0.0.
|
||||||
*
|
*
|
||||||
* \sa SDL_free
|
* \sa SDL_free
|
||||||
* \sa SDL_LoadWAV_RW
|
* \sa SDL_LoadWAV_IO
|
||||||
*/
|
*/
|
||||||
extern DECLSPEC int SDLCALL SDL_LoadWAV(const char *path, SDL_AudioSpec * spec,
|
extern DECLSPEC int SDLCALL SDL_LoadWAV(const char *path, SDL_AudioSpec * spec,
|
||||||
Uint8 ** audio_buf, Uint32 * audio_len);
|
Uint8 ** audio_buf, Uint32 * audio_len);
|
||||||
|
|
|
@ -268,7 +268,7 @@ extern DECLSPEC int SDLCALL SDL_AddGamepadMapping(const char *mapping);
|
||||||
* constrained environment.
|
* constrained environment.
|
||||||
*
|
*
|
||||||
* \param src the data stream for the mappings to be added
|
* \param src the data stream for the mappings to be added
|
||||||
* \param freesrc if SDL_TRUE, calls SDL_CloseRW() on `src` before returning,
|
* \param freesrc if SDL_TRUE, calls SDL_CloseIO() on `src` before returning,
|
||||||
* even in the case of an error
|
* even in the case of an error
|
||||||
* \returns the number of mappings added or -1 on error; call SDL_GetError()
|
* \returns the number of mappings added or -1 on error; call SDL_GetError()
|
||||||
* for more information.
|
* for more information.
|
||||||
|
@ -279,7 +279,7 @@ extern DECLSPEC int SDLCALL SDL_AddGamepadMapping(const char *mapping);
|
||||||
* \sa SDL_AddGamepadMappingsFromFile
|
* \sa SDL_AddGamepadMappingsFromFile
|
||||||
* \sa SDL_GetGamepadMappingForGUID
|
* \sa SDL_GetGamepadMappingForGUID
|
||||||
*/
|
*/
|
||||||
extern DECLSPEC int SDLCALL SDL_AddGamepadMappingsFromRW(SDL_RWops *src, SDL_bool freesrc);
|
extern DECLSPEC int SDLCALL SDL_AddGamepadMappingsFromRW(SDL_IOStream *src, SDL_bool freesrc);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Load a set of gamepad mappings from a file.
|
* Load a set of gamepad mappings from a file.
|
||||||
|
|
|
@ -2261,7 +2261,7 @@ extern "C" {
|
||||||
* "ignorezero" - Like "truncate", but ignore fact chunk if the number of samples is zero.
|
* "ignorezero" - Like "truncate", but ignore fact chunk if the number of samples is zero.
|
||||||
* "ignore" - Ignore fact chunk entirely. (default)
|
* "ignore" - Ignore fact chunk entirely. (default)
|
||||||
*
|
*
|
||||||
* This hint should be set before calling SDL_LoadWAV() or SDL_LoadWAV_RW()
|
* This hint should be set before calling SDL_LoadWAV() or SDL_LoadWAV_IO()
|
||||||
*/
|
*/
|
||||||
#define SDL_HINT_WAVE_FACT_CHUNK "SDL_WAVE_FACT_CHUNK"
|
#define SDL_HINT_WAVE_FACT_CHUNK "SDL_WAVE_FACT_CHUNK"
|
||||||
|
|
||||||
|
@ -2278,7 +2278,7 @@ extern "C" {
|
||||||
* "ignore" - Ignore the RIFF chunk size and always search up to 4 GiB.
|
* "ignore" - Ignore the RIFF chunk size and always search up to 4 GiB.
|
||||||
* "maximum" - Search for chunks until the end of file. (not recommended)
|
* "maximum" - Search for chunks until the end of file. (not recommended)
|
||||||
*
|
*
|
||||||
* This hint should be set before calling SDL_LoadWAV() or SDL_LoadWAV_RW()
|
* This hint should be set before calling SDL_LoadWAV() or SDL_LoadWAV_IO()
|
||||||
*/
|
*/
|
||||||
#define SDL_HINT_WAVE_RIFF_CHUNK_SIZE "SDL_WAVE_RIFF_CHUNK_SIZE"
|
#define SDL_HINT_WAVE_RIFF_CHUNK_SIZE "SDL_WAVE_RIFF_CHUNK_SIZE"
|
||||||
|
|
||||||
|
@ -2293,7 +2293,7 @@ extern "C" {
|
||||||
* "dropframe" - Decode until the first incomplete sample frame.
|
* "dropframe" - Decode until the first incomplete sample frame.
|
||||||
* "dropblock" - Decode until the first incomplete block. (default)
|
* "dropblock" - Decode until the first incomplete block. (default)
|
||||||
*
|
*
|
||||||
* This hint should be set before calling SDL_LoadWAV() or SDL_LoadWAV_RW()
|
* This hint should be set before calling SDL_LoadWAV() or SDL_LoadWAV_IO()
|
||||||
*/
|
*/
|
||||||
#define SDL_HINT_WAVE_TRUNCATION "SDL_WAVE_TRUNCATION"
|
#define SDL_HINT_WAVE_TRUNCATION "SDL_WAVE_TRUNCATION"
|
||||||
|
|
||||||
|
|
|
@ -70,7 +70,7 @@ typedef enum
|
||||||
* two may be used interchangeably. Though for readability of your code
|
* two may be used interchangeably. Though for readability of your code
|
||||||
* SDL_InitSubSystem() might be preferred.
|
* SDL_InitSubSystem() might be preferred.
|
||||||
*
|
*
|
||||||
* The file I/O (for example: SDL_RWFromFile) and threading (SDL_CreateThread)
|
* The file I/O (for example: SDL_IOFromFile) and threading (SDL_CreateThread)
|
||||||
* subsystems are initialized by default. Message boxes
|
* subsystems are initialized by default. Message boxes
|
||||||
* (SDL_ShowSimpleMessageBox) also attempt to work without initializing the
|
* (SDL_ShowSimpleMessageBox) also attempt to work without initializing the
|
||||||
* video subsystem, in hopes of being useful in showing an error dialog when
|
* video subsystem, in hopes of being useful in showing an error dialog when
|
||||||
|
|
|
@ -69,6 +69,7 @@
|
||||||
#define SDL_AudioStreamPut SDL_PutAudioStreamData
|
#define SDL_AudioStreamPut SDL_PutAudioStreamData
|
||||||
#define SDL_FreeAudioStream SDL_DestroyAudioStream
|
#define SDL_FreeAudioStream SDL_DestroyAudioStream
|
||||||
#define SDL_FreeWAV SDL_free
|
#define SDL_FreeWAV SDL_free
|
||||||
|
#define SDL_LoadWAV_RW SDL_LoadWAV_IO
|
||||||
#define SDL_NewAudioStream SDL_CreateAudioStream
|
#define SDL_NewAudioStream SDL_CreateAudioStream
|
||||||
|
|
||||||
/* ##SDL_events.h */
|
/* ##SDL_events.h */
|
||||||
|
@ -449,15 +450,19 @@
|
||||||
#define SDL_ScaleModeNearest SDL_SCALEMODE_NEAREST
|
#define SDL_ScaleModeNearest SDL_SCALEMODE_NEAREST
|
||||||
|
|
||||||
/* ##SDL_rwops.h */
|
/* ##SDL_rwops.h */
|
||||||
#define RW_SEEK_CUR SDL_RW_SEEK_CUR
|
#define RW_SEEK_CUR SDL_IO_SEEK_CUR
|
||||||
#define RW_SEEK_END SDL_RW_SEEK_END
|
#define RW_SEEK_END SDL_IO_SEEK_END
|
||||||
#define RW_SEEK_SET SDL_RW_SEEK_SET
|
#define RW_SEEK_SET SDL_IO_SEEK_SET
|
||||||
#define SDL_RWclose SDL_CloseRW
|
#define SDL_RWFromConstMem SDL_IOFromConstMem
|
||||||
#define SDL_RWread SDL_ReadRW
|
#define SDL_RWFromFile SDL_IOFromFile
|
||||||
#define SDL_RWseek SDL_SeekRW
|
#define SDL_RWFromMem SDL_IOFromMem
|
||||||
#define SDL_RWsize SDL_SizeRW
|
#define SDL_RWclose SDL_CloseIO
|
||||||
#define SDL_RWtell SDL_TellRW
|
#define SDL_RWops SDL_IOStream
|
||||||
#define SDL_RWwrite SDL_WriteRW
|
#define SDL_RWread SDL_ReadIO
|
||||||
|
#define SDL_RWseek SDL_SeekIO
|
||||||
|
#define SDL_RWsize SDL_SizeIO
|
||||||
|
#define SDL_RWtell SDL_TellIO
|
||||||
|
#define SDL_RWwrite SDL_WriteIO
|
||||||
#define SDL_ReadBE16 SDL_ReadU16BE
|
#define SDL_ReadBE16 SDL_ReadU16BE
|
||||||
#define SDL_ReadBE32 SDL_ReadU32BE
|
#define SDL_ReadBE32 SDL_ReadU32BE
|
||||||
#define SDL_ReadBE64 SDL_ReadU64BE
|
#define SDL_ReadBE64 SDL_ReadU64BE
|
||||||
|
@ -493,8 +498,10 @@
|
||||||
#define SDL_GetColorKey SDL_GetSurfaceColorKey
|
#define SDL_GetColorKey SDL_GetSurfaceColorKey
|
||||||
#define SDL_HasColorKey SDL_SurfaceHasColorKey
|
#define SDL_HasColorKey SDL_SurfaceHasColorKey
|
||||||
#define SDL_HasSurfaceRLE SDL_SurfaceHasRLE
|
#define SDL_HasSurfaceRLE SDL_SurfaceHasRLE
|
||||||
|
#define SDL_LoadBMP_RW SDL_LoadBMP_IO
|
||||||
#define SDL_LowerBlit SDL_BlitSurfaceUnchecked
|
#define SDL_LowerBlit SDL_BlitSurfaceUnchecked
|
||||||
#define SDL_LowerBlitScaled SDL_BlitSurfaceUncheckedScaled
|
#define SDL_LowerBlitScaled SDL_BlitSurfaceUncheckedScaled
|
||||||
|
#define SDL_SaveBMP_RW SDL_SaveBMP_IO
|
||||||
#define SDL_SetClipRect SDL_SetSurfaceClipRect
|
#define SDL_SetClipRect SDL_SetSurfaceClipRect
|
||||||
#define SDL_SetColorKey SDL_SetSurfaceColorKey
|
#define SDL_SetColorKey SDL_SetSurfaceColorKey
|
||||||
#define SDL_UpperBlit SDL_BlitSurface
|
#define SDL_UpperBlit SDL_BlitSurface
|
||||||
|
@ -558,6 +565,7 @@
|
||||||
#define SDL_AudioStreamPut SDL_AudioStreamPut_renamed_SDL_PutAudioStreamData
|
#define SDL_AudioStreamPut SDL_AudioStreamPut_renamed_SDL_PutAudioStreamData
|
||||||
#define SDL_FreeAudioStream SDL_FreeAudioStream_renamed_SDL_DestroyAudioStream
|
#define SDL_FreeAudioStream SDL_FreeAudioStream_renamed_SDL_DestroyAudioStream
|
||||||
#define SDL_FreeWAV SDL_FreeWAV_renamed_SDL_free
|
#define SDL_FreeWAV SDL_FreeWAV_renamed_SDL_free
|
||||||
|
#define SDL_LoadWAV_RW SDL_LoadWAV_RW_renamed_SDL_LoadWAV_IO
|
||||||
#define SDL_NewAudioStream SDL_NewAudioStream_renamed_SDL_CreateAudioStream
|
#define SDL_NewAudioStream SDL_NewAudioStream_renamed_SDL_CreateAudioStream
|
||||||
|
|
||||||
/* ##SDL_events.h */
|
/* ##SDL_events.h */
|
||||||
|
@ -939,15 +947,19 @@
|
||||||
#define SDL_ScaleModeNearest SDL_ScaleModeNearest_renamed_SDL_SCALEMODE_NEAREST
|
#define SDL_ScaleModeNearest SDL_ScaleModeNearest_renamed_SDL_SCALEMODE_NEAREST
|
||||||
|
|
||||||
/* ##SDL_rwops.h */
|
/* ##SDL_rwops.h */
|
||||||
#define RW_SEEK_CUR RW_SEEK_CUR_renamed_SDL_RW_SEEK_CUR
|
#define RW_SEEK_CUR RW_SEEK_CUR_renamed_SDL_IO_SEEK_CUR
|
||||||
#define RW_SEEK_END RW_SEEK_END_renamed_SDL_RW_SEEK_END
|
#define RW_SEEK_END RW_SEEK_END_renamed_SDL_IO_SEEK_END
|
||||||
#define RW_SEEK_SET RW_SEEK_SET_renamed_SDL_RW_SEEK_SET
|
#define RW_SEEK_SET RW_SEEK_SET_renamed_SDL_IO_SEEK_SET
|
||||||
#define SDL_RWclose SDL_RWclose_renamed_SDL_CloseRW
|
#define SDL_RWFromConstMem SDL_RWFromConstMem_renamed_SDL_IOFromConstMem
|
||||||
#define SDL_RWread SDL_RWread_renamed_SDL_ReadRW
|
#define SDL_RWFromFile SDL_RWFromFile_renamed_SDL_IOFromFile
|
||||||
#define SDL_RWseek SDL_RWseek_renamed_SDL_SeekRW
|
#define SDL_RWFromMem SDL_RWFromMem_renamed_SDL_IOFromMem
|
||||||
#define SDL_RWsize SDL_RWsize_renamed_SDL_SizeRW
|
#define SDL_RWclose SDL_RWclose_renamed_SDL_CloseIO
|
||||||
#define SDL_RWtell SDL_RWtell_renamed_SDL_TellRW
|
#define SDL_RWops SDL_RWops_renamed_SDL_IOStream
|
||||||
#define SDL_RWwrite SDL_RWwrite_renamed_SDL_WriteRW
|
#define SDL_RWread SDL_RWread_renamed_SDL_ReadIO
|
||||||
|
#define SDL_RWseek SDL_RWseek_renamed_SDL_SeekIO
|
||||||
|
#define SDL_RWsize SDL_RWsize_renamed_SDL_SizeIO
|
||||||
|
#define SDL_RWtell SDL_RWtell_renamed_SDL_TellIO
|
||||||
|
#define SDL_RWwrite SDL_RWwrite_renamed_SDL_WriteIO
|
||||||
#define SDL_ReadBE16 SDL_ReadBE16_renamed_SDL_ReadU16BE
|
#define SDL_ReadBE16 SDL_ReadBE16_renamed_SDL_ReadU16BE
|
||||||
#define SDL_ReadBE32 SDL_ReadBE32_renamed_SDL_ReadU32BE
|
#define SDL_ReadBE32 SDL_ReadBE32_renamed_SDL_ReadU32BE
|
||||||
#define SDL_ReadBE64 SDL_ReadBE64_renamed_SDL_ReadU64BE
|
#define SDL_ReadBE64 SDL_ReadBE64_renamed_SDL_ReadU64BE
|
||||||
|
@ -983,8 +995,10 @@
|
||||||
#define SDL_GetColorKey SDL_GetColorKey_renamed_SDL_GetSurfaceColorKey
|
#define SDL_GetColorKey SDL_GetColorKey_renamed_SDL_GetSurfaceColorKey
|
||||||
#define SDL_HasColorKey SDL_HasColorKey_renamed_SDL_SurfaceHasColorKey
|
#define SDL_HasColorKey SDL_HasColorKey_renamed_SDL_SurfaceHasColorKey
|
||||||
#define SDL_HasSurfaceRLE SDL_HasSurfaceRLE_renamed_SDL_SurfaceHasRLE
|
#define SDL_HasSurfaceRLE SDL_HasSurfaceRLE_renamed_SDL_SurfaceHasRLE
|
||||||
|
#define SDL_LoadBMP_RW SDL_LoadBMP_RW_renamed_SDL_LoadBMP_IO
|
||||||
#define SDL_LowerBlit SDL_LowerBlit_renamed_SDL_BlitSurfaceUnchecked
|
#define SDL_LowerBlit SDL_LowerBlit_renamed_SDL_BlitSurfaceUnchecked
|
||||||
#define SDL_LowerBlitScaled SDL_LowerBlitScaled_renamed_SDL_BlitSurfaceUncheckedScaled
|
#define SDL_LowerBlitScaled SDL_LowerBlitScaled_renamed_SDL_BlitSurfaceUncheckedScaled
|
||||||
|
#define SDL_SaveBMP_RW SDL_SaveBMP_RW_renamed_SDL_SaveBMP_IO
|
||||||
#define SDL_SetClipRect SDL_SetClipRect_renamed_SDL_SetSurfaceClipRect
|
#define SDL_SetClipRect SDL_SetClipRect_renamed_SDL_SetSurfaceClipRect
|
||||||
#define SDL_SetColorKey SDL_SetColorKey_renamed_SDL_SetSurfaceColorKey
|
#define SDL_SetColorKey SDL_SetColorKey_renamed_SDL_SetSurfaceColorKey
|
||||||
#define SDL_UpperBlit SDL_UpperBlit_renamed_SDL_BlitSurface
|
#define SDL_UpperBlit SDL_UpperBlit_renamed_SDL_BlitSurface
|
||||||
|
|
|
@ -39,21 +39,21 @@
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* RWops status, set by a read or write operation */
|
/* SDL_IOStream status, set by a read or write operation */
|
||||||
typedef enum SDL_RWopsStatus
|
typedef enum SDL_IOStatus
|
||||||
{
|
{
|
||||||
SDL_RWOPS_STATUS_READY, /**< Everything is ready */
|
SDL_IO_STATUS_READY, /**< Everything is ready */
|
||||||
SDL_RWOPS_STATUS_ERROR, /**< Read or write I/O error */
|
SDL_IO_STATUS_ERROR, /**< Read or write I/O error */
|
||||||
SDL_RWOPS_STATUS_EOF, /**< End of file */
|
SDL_IO_STATUS_EOF, /**< End of file */
|
||||||
SDL_RWOPS_STATUS_NOT_READY, /**< Non blocking I/O, not ready */
|
SDL_IO_STATUS_NOT_READY, /**< Non blocking I/O, not ready */
|
||||||
SDL_RWOPS_STATUS_READONLY, /**< Tried to write a read-only buffer */
|
SDL_IO_STATUS_READONLY, /**< Tried to write a read-only buffer */
|
||||||
SDL_RWOPS_STATUS_WRITEONLY /**< Tried to read a write-only buffer */
|
SDL_IO_STATUS_WRITEONLY /**< Tried to read a write-only buffer */
|
||||||
} SDL_RWopsStatus;
|
} SDL_IOStatus;
|
||||||
|
|
||||||
typedef struct SDL_RWopsInterface
|
typedef struct SDL_IOStreamInterface
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Return the number of bytes in this rwops
|
* Return the number of bytes in this SDL_IOStream
|
||||||
*
|
*
|
||||||
* \return the total size of the data stream, or -1 on error.
|
* \return the total size of the data stream, or -1 on error.
|
||||||
*/
|
*/
|
||||||
|
@ -61,7 +61,7 @@ typedef struct SDL_RWopsInterface
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Seek to \c offset relative to \c whence, one of stdio's whence values:
|
* Seek to \c offset relative to \c whence, one of stdio's whence values:
|
||||||
* SDL_RW_SEEK_SET, SDL_RW_SEEK_CUR, SDL_RW_SEEK_END
|
* SDL_IO_SEEK_SET, SDL_IO_SEEK_CUR, SDL_IO_SEEK_END
|
||||||
*
|
*
|
||||||
* \return the final offset in the data stream, or -1 on error.
|
* \return the final offset in the data stream, or -1 on error.
|
||||||
*/
|
*/
|
||||||
|
@ -72,52 +72,52 @@ typedef struct SDL_RWopsInterface
|
||||||
* at by \c ptr.
|
* at by \c ptr.
|
||||||
*
|
*
|
||||||
* On an incomplete read, you should set `*status` to a value from the
|
* On an incomplete read, you should set `*status` to a value from the
|
||||||
* SDL_RWopsStatus enum. You do not have to explicitly set this on
|
* SDL_IOStatus enum. You do not have to explicitly set this on
|
||||||
* a complete, successful read.
|
* a complete, successful read.
|
||||||
*
|
*
|
||||||
* \return the number of bytes read
|
* \return the number of bytes read
|
||||||
*/
|
*/
|
||||||
size_t (SDLCALL *read)(void *userdata, void *ptr, size_t size, SDL_RWopsStatus *status);
|
size_t (SDLCALL *read)(void *userdata, void *ptr, size_t size, SDL_IOStatus *status);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Write exactly \c size bytes from the area pointed at by \c ptr
|
* Write exactly \c size bytes from the area pointed at by \c ptr
|
||||||
* to data stream.
|
* to data stream.
|
||||||
*
|
*
|
||||||
* On an incomplete write, you should set `*status` to a value from the
|
* On an incomplete write, you should set `*status` to a value from the
|
||||||
* SDL_RWopsStatus enum. You do not have to explicitly set this on
|
* SDL_IOStatus enum. You do not have to explicitly set this on
|
||||||
* a complete, successful write.
|
* a complete, successful write.
|
||||||
*
|
*
|
||||||
* \return the number of bytes written
|
* \return the number of bytes written
|
||||||
*/
|
*/
|
||||||
size_t (SDLCALL *write)(void *userdata, const void *ptr, size_t size, SDL_RWopsStatus *status);
|
size_t (SDLCALL *write)(void *userdata, const void *ptr, size_t size, SDL_IOStatus *status);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Close and free any allocated resources.
|
* Close and free any allocated resources.
|
||||||
*
|
*
|
||||||
* The RWops is still destroyed even if this fails, so clean up anything
|
* The SDL_IOStream is still destroyed even if this fails, so clean up anything
|
||||||
* even if flushing to disk returns an error.
|
* even if flushing to disk returns an error.
|
||||||
*
|
*
|
||||||
* \return 0 if successful or -1 on write error when flushing data.
|
* \return 0 if successful or -1 on write error when flushing data.
|
||||||
*/
|
*/
|
||||||
int (SDLCALL *close)(void *userdata);
|
int (SDLCALL *close)(void *userdata);
|
||||||
} SDL_RWopsInterface;
|
} SDL_IOStreamInterface;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This is the read/write operation structure -- opaque, as of SDL3!
|
* This is the read/write operation structure -- opaque, as of SDL3!
|
||||||
*/
|
*/
|
||||||
typedef struct SDL_RWops SDL_RWops;
|
typedef struct SDL_IOStream SDL_IOStream;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \name RWFrom functions
|
* \name IOFrom functions
|
||||||
*
|
*
|
||||||
* Functions to create SDL_RWops structures from various data streams.
|
* Functions to create SDL_IOStream structures from various data streams.
|
||||||
*/
|
*/
|
||||||
/* @{ */
|
/* @{ */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Use this function to create a new SDL_RWops structure for reading from
|
* Use this function to create a new SDL_IOStream structure for reading from
|
||||||
* and/or writing to a named file.
|
* and/or writing to a named file.
|
||||||
*
|
*
|
||||||
* The `mode` string is treated roughly the same as in a call to the C
|
* The `mode` string is treated roughly the same as in a call to the C
|
||||||
|
@ -155,168 +155,168 @@ typedef struct SDL_RWops SDL_RWops;
|
||||||
* This function supports Unicode filenames, but they must be encoded in UTF-8
|
* This function supports Unicode filenames, but they must be encoded in UTF-8
|
||||||
* format, regardless of the underlying operating system.
|
* format, regardless of the underlying operating system.
|
||||||
*
|
*
|
||||||
* As a fallback, SDL_RWFromFile() will transparently open a matching filename
|
* As a fallback, SDL_IOFromFile() will transparently open a matching filename
|
||||||
* in an Android app's `assets`.
|
* in an Android app's `assets`.
|
||||||
*
|
*
|
||||||
* Destroying the SDL_RWops will close the file handle SDL is holding internally.
|
* Destroying the SDL_IOStream will close the file handle SDL is holding internally.
|
||||||
*
|
*
|
||||||
* The following properties may be set at creation time by SDL:
|
* The following properties may be set at creation time by SDL:
|
||||||
*
|
*
|
||||||
* - `SDL_PROP_RWOPS_WINDOWS_HANDLE_POINTER`: a pointer, that can be cast
|
* - `SDL_PROP_IOSTREAM_WINDOWS_HANDLE_POINTER`: a pointer, that can be cast
|
||||||
* to a win32 `HANDLE`, that this RWops is using to access the filesystem.
|
* to a win32 `HANDLE`, that this SDL_IOStream is using to access the filesystem.
|
||||||
* If the program isn't running on Windows, or SDL used some other method
|
* If the program isn't running on Windows, or SDL used some other method
|
||||||
* to access the filesystem, this property will not be set.
|
* to access the filesystem, this property will not be set.
|
||||||
* - `SDL_PROP_RWOPS_STDIO_HANDLE_POINTER`: a pointer, that can be cast
|
* - `SDL_PROP_IOSTREAM_STDIO_HANDLE_POINTER`: a pointer, that can be cast
|
||||||
* to a stdio `FILE *`, that this RWops is using to access the filesystem.
|
* to a stdio `FILE *`, that this SDL_IOStream is using to access the filesystem.
|
||||||
* If SDL used some other method to access the filesystem, this property
|
* If SDL used some other method to access the filesystem, this property
|
||||||
* will not be set. PLEASE NOTE that if SDL is using a different C runtime
|
* will not be set. PLEASE NOTE that if SDL is using a different C runtime
|
||||||
* than your app, trying to use this pointer will almost certainly result
|
* than your app, trying to use this pointer will almost certainly result
|
||||||
* in a crash! This is mostly a problem on Windows; make sure you build SDL
|
* in a crash! This is mostly a problem on Windows; make sure you build SDL
|
||||||
* and your app with the same compiler and settings to avoid it.
|
* and your app with the same compiler and settings to avoid it.
|
||||||
* - `SDL_PROP_RWOPS_ANDROID_AASSET_POINTER`: a pointer, that can be cast
|
* - `SDL_PROP_IOSTREAM_ANDROID_AASSET_POINTER`: a pointer, that can be cast
|
||||||
* to an Android NDK `AAsset *`, that this RWops is using to access the
|
* to an Android NDK `AAsset *`, that this SDL_IOStream is using to access the
|
||||||
* filesystem. If SDL used some other method to access the filesystem, this
|
* filesystem. If SDL used some other method to access the filesystem, this
|
||||||
* property will not be set.
|
* property will not be set.
|
||||||
*
|
*
|
||||||
* \param file a UTF-8 string representing the filename to open
|
* \param file a UTF-8 string representing the filename to open
|
||||||
* \param mode an ASCII string representing the mode to be used for opening
|
* \param mode an ASCII string representing the mode to be used for opening
|
||||||
* the file.
|
* the file.
|
||||||
* \returns a pointer to the SDL_RWops structure that is created, or NULL on
|
* \returns a pointer to the SDL_IOStream structure that is created, or NULL on
|
||||||
* failure; call SDL_GetError() for more information.
|
* failure; call SDL_GetError() for more information.
|
||||||
*
|
*
|
||||||
* \since This function is available since SDL 3.0.0.
|
* \since This function is available since SDL 3.0.0.
|
||||||
*
|
*
|
||||||
* \sa SDL_RWFromConstMem
|
* \sa SDL_IOFromConstMem
|
||||||
* \sa SDL_RWFromMem
|
* \sa SDL_IOFromMem
|
||||||
* \sa SDL_ReadRW
|
* \sa SDL_ReadIO
|
||||||
* \sa SDL_SeekRW
|
* \sa SDL_SeekIO
|
||||||
* \sa SDL_TellRW
|
* \sa SDL_TellIO
|
||||||
* \sa SDL_WriteRW
|
* \sa SDL_WriteIO
|
||||||
*/
|
*/
|
||||||
extern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromFile(const char *file, const char *mode);
|
extern DECLSPEC SDL_IOStream *SDLCALL SDL_IOFromFile(const char *file, const char *mode);
|
||||||
|
|
||||||
#define SDL_PROP_RWOPS_WINDOWS_HANDLE_POINTER "SDL.rwops.windows.handle"
|
#define SDL_PROP_IOSTREAM_WINDOWS_HANDLE_POINTER "SDL.iostream.windows.handle"
|
||||||
#define SDL_PROP_RWOPS_STDIO_HANDLE_POINTER "SDL.rwops.stdio.handle"
|
#define SDL_PROP_IOSTREAM_STDIO_HANDLE_POINTER "SDL.iostream.stdio.handle"
|
||||||
#define SDL_PROP_RWOPS_ANDROID_AASSET_POINTER "SDL.rwops.android.aasset"
|
#define SDL_PROP_IOSTREAM_ANDROID_AASSET_POINTER "SDL.opstream.android.aasset"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Use this function to prepare a read-write memory buffer for use with
|
* Use this function to prepare a read-write memory buffer for use with
|
||||||
* SDL_RWops.
|
* SDL_IOStream.
|
||||||
*
|
*
|
||||||
* This function sets up an SDL_RWops struct based on a memory area of a
|
* This function sets up an SDL_IOStream struct based on a memory area of a
|
||||||
* certain size, for both read and write access.
|
* certain size, for both read and write access.
|
||||||
*
|
*
|
||||||
* This memory buffer is not copied by the RWops; the pointer you provide must
|
* This memory buffer is not copied by the SDL_IOStream; the pointer you provide must
|
||||||
* remain valid until you close the stream. Closing the stream will not free
|
* remain valid until you close the stream. Closing the stream will not free
|
||||||
* the original buffer.
|
* the original buffer.
|
||||||
*
|
*
|
||||||
* If you need to make sure the RWops never writes to the memory buffer, you
|
* If you need to make sure the SDL_IOStream never writes to the memory buffer, you
|
||||||
* should use SDL_RWFromConstMem() with a read-only buffer of memory instead.
|
* should use SDL_IOFromConstMem() with a read-only buffer of memory instead.
|
||||||
*
|
*
|
||||||
* \param mem a pointer to a buffer to feed an SDL_RWops stream
|
* \param mem a pointer to a buffer to feed an SDL_IOStream stream
|
||||||
* \param size the buffer size, in bytes
|
* \param size the buffer size, in bytes
|
||||||
* \returns a pointer to a new SDL_RWops structure, or NULL if it fails; call
|
* \returns a pointer to a new SDL_IOStream structure, or NULL if it fails; call
|
||||||
* SDL_GetError() for more information.
|
* SDL_GetError() for more information.
|
||||||
*
|
*
|
||||||
* \since This function is available since SDL 3.0.0.
|
* \since This function is available since SDL 3.0.0.
|
||||||
*
|
*
|
||||||
* \sa SDL_RWFromConstMem
|
* \sa SDL_IOFromConstMem
|
||||||
* \sa SDL_RWFromFile
|
* \sa SDL_IOFromFile
|
||||||
* \sa SDL_RWFromMem
|
* \sa SDL_IOFromMem
|
||||||
* \sa SDL_ReadRW
|
* \sa SDL_ReadIO
|
||||||
* \sa SDL_SeekRW
|
* \sa SDL_SeekIO
|
||||||
* \sa SDL_TellRW
|
* \sa SDL_TellIO
|
||||||
* \sa SDL_WriteRW
|
* \sa SDL_WriteIO
|
||||||
*/
|
*/
|
||||||
extern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromMem(void *mem, size_t size);
|
extern DECLSPEC SDL_IOStream *SDLCALL SDL_IOFromMem(void *mem, size_t size);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Use this function to prepare a read-only memory buffer for use with RWops.
|
* Use this function to prepare a read-only memory buffer for use with SDL_IOStream.
|
||||||
*
|
*
|
||||||
* This function sets up an SDL_RWops struct based on a memory area of a
|
* This function sets up an SDL_IOStream struct based on a memory area of a
|
||||||
* certain size. It assumes the memory area is not writable.
|
* certain size. It assumes the memory area is not writable.
|
||||||
*
|
*
|
||||||
* Attempting to write to this RWops stream will report an error without
|
* Attempting to write to this SDL_IOStream stream will report an error without
|
||||||
* writing to the memory buffer.
|
* writing to the memory buffer.
|
||||||
*
|
*
|
||||||
* This memory buffer is not copied by the RWops; the pointer you provide must
|
* This memory buffer is not copied by the SDL_IOStream; the pointer you provide must
|
||||||
* remain valid until you close the stream. Closing the stream will not free
|
* remain valid until you close the stream. Closing the stream will not free
|
||||||
* the original buffer.
|
* the original buffer.
|
||||||
*
|
*
|
||||||
* If you need to write to a memory buffer, you should use SDL_RWFromMem()
|
* If you need to write to a memory buffer, you should use SDL_IOFromMem()
|
||||||
* with a writable buffer of memory instead.
|
* with a writable buffer of memory instead.
|
||||||
*
|
*
|
||||||
* \param mem a pointer to a read-only buffer to feed an SDL_RWops stream
|
* \param mem a pointer to a read-only buffer to feed an SDL_IOStream stream
|
||||||
* \param size the buffer size, in bytes
|
* \param size the buffer size, in bytes
|
||||||
* \returns a pointer to a new SDL_RWops structure, or NULL if it fails; call
|
* \returns a pointer to a new SDL_IOStream structure, or NULL if it fails; call
|
||||||
* SDL_GetError() for more information.
|
* SDL_GetError() for more information.
|
||||||
*
|
*
|
||||||
* \since This function is available since SDL 3.0.0.
|
* \since This function is available since SDL 3.0.0.
|
||||||
*
|
*
|
||||||
* \sa SDL_RWFromConstMem
|
* \sa SDL_IOFromConstMem
|
||||||
* \sa SDL_RWFromFile
|
* \sa SDL_IOFromFile
|
||||||
* \sa SDL_RWFromMem
|
* \sa SDL_IOFromMem
|
||||||
* \sa SDL_ReadRW
|
* \sa SDL_ReadIO
|
||||||
* \sa SDL_SeekRW
|
* \sa SDL_SeekIO
|
||||||
* \sa SDL_TellRW
|
* \sa SDL_TellIO
|
||||||
*/
|
*/
|
||||||
extern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromConstMem(const void *mem, size_t size);
|
extern DECLSPEC SDL_IOStream *SDLCALL SDL_IOFromConstMem(const void *mem, size_t size);
|
||||||
|
|
||||||
/* @} *//* RWFrom functions */
|
/* @} *//* IOFrom functions */
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a custom SDL_RWops.
|
* Create a custom SDL_IOStream.
|
||||||
*
|
*
|
||||||
* Applications do not need to use this function unless they are providing
|
* Applications do not need to use this function unless they are providing
|
||||||
* their own SDL_RWops implementation. If you just need an SDL_RWops to
|
* their own SDL_IOStream implementation. If you just need an SDL_IOStream to
|
||||||
* read/write a common data source, you should use the built-in
|
* read/write a common data source, you should use the built-in
|
||||||
* implementations in SDL, like SDL_RWFromFile() or SDL_RWFromMem(), etc.
|
* implementations in SDL, like SDL_IOFromFile() or SDL_IOFromMem(), etc.
|
||||||
*
|
*
|
||||||
* You must free the returned pointer with SDL_CloseRW().
|
* You must free the returned pointer with SDL_CloseIO().
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* \param iface The function pointers that implement this RWops.
|
* \param iface The function pointers that implement this SDL_IOStream.
|
||||||
* \param userdata The app-controlled pointer that is passed to iface's functions when called.
|
* \param userdata The app-controlled pointer that is passed to iface's functions when called.
|
||||||
* \returns a pointer to the allocated memory on success, or NULL on failure;
|
* \returns a pointer to the allocated memory on success, or NULL on failure;
|
||||||
* call SDL_GetError() for more information.
|
* call SDL_GetError() for more information.
|
||||||
*
|
*
|
||||||
* \since This function is available since SDL 3.0.0.
|
* \since This function is available since SDL 3.0.0.
|
||||||
*
|
*
|
||||||
* \sa SDL_CloseRW
|
* \sa SDL_CloseIO
|
||||||
*/
|
*/
|
||||||
extern DECLSPEC SDL_RWops *SDLCALL SDL_OpenRW(const SDL_RWopsInterface *iface, void *userdata);
|
extern DECLSPEC SDL_IOStream *SDLCALL SDL_OpenIO(const SDL_IOStreamInterface *iface, void *userdata);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Close and free an allocated SDL_RWops structure.
|
* Close and free an allocated SDL_IOStream structure.
|
||||||
*
|
*
|
||||||
* SDL_CloseRW() closes and cleans up the SDL_RWops stream. It releases any
|
* SDL_CloseIO() closes and cleans up the SDL_IOStream stream. It releases any
|
||||||
* resources used by the stream and frees the SDL_RWops itself with
|
* resources used by the stream and frees the SDL_IOStream itself with
|
||||||
* SDL_CloseRW(). This returns 0 on success, or -1 if the stream failed to
|
* SDL_CloseIO(). This returns 0 on success, or -1 if the stream failed to
|
||||||
* flush to its output (e.g. to disk).
|
* flush to its output (e.g. to disk).
|
||||||
*
|
*
|
||||||
* Note that if this fails to flush the stream to disk, this function reports
|
* Note that if this fails to flush the stream to disk, this function reports
|
||||||
* an error, but the SDL_RWops is still invalid once this function returns.
|
* an error, but the SDL_IOStream is still invalid once this function returns.
|
||||||
*
|
*
|
||||||
* \param context SDL_RWops structure to close
|
* \param context SDL_IOStream structure to close
|
||||||
* \returns 0 on success or a negative error code on failure; call
|
* \returns 0 on success or a negative error code on failure; call
|
||||||
* SDL_GetError() for more information.
|
* SDL_GetError() for more information.
|
||||||
*
|
*
|
||||||
* \since This function is available since SDL 3.0.0.
|
* \since This function is available since SDL 3.0.0.
|
||||||
*
|
*
|
||||||
* \sa SDL_RWFromConstMem
|
* \sa SDL_IOFromConstMem
|
||||||
* \sa SDL_RWFromFile
|
* \sa SDL_IOFromFile
|
||||||
* \sa SDL_RWFromMem
|
* \sa SDL_IOFromMem
|
||||||
* \sa SDL_ReadRW
|
* \sa SDL_ReadIO
|
||||||
* \sa SDL_SeekRW
|
* \sa SDL_SeekIO
|
||||||
* \sa SDL_WriteRW
|
* \sa SDL_WriteIO
|
||||||
*/
|
*/
|
||||||
extern DECLSPEC int SDLCALL SDL_CloseRW(SDL_RWops *context);
|
extern DECLSPEC int SDLCALL SDL_CloseIO(SDL_IOStream *context);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the properties associated with an SDL_RWops.
|
* Get the properties associated with an SDL_IOStream.
|
||||||
*
|
*
|
||||||
* \param context a pointer to an SDL_RWops structure
|
* \param context a pointer to an SDL_IOStream structure
|
||||||
* \returns a valid property ID on success or 0 on failure; call
|
* \returns a valid property ID on success or 0 on failure; call
|
||||||
* SDL_GetError() for more information.
|
* SDL_GetError() for more information.
|
||||||
*
|
*
|
||||||
|
@ -325,99 +325,99 @@ extern DECLSPEC int SDLCALL SDL_CloseRW(SDL_RWops *context);
|
||||||
* \sa SDL_GetProperty
|
* \sa SDL_GetProperty
|
||||||
* \sa SDL_SetProperty
|
* \sa SDL_SetProperty
|
||||||
*/
|
*/
|
||||||
extern DECLSPEC SDL_PropertiesID SDLCALL SDL_GetRWProperties(SDL_RWops *context);
|
extern DECLSPEC SDL_PropertiesID SDLCALL SDL_GetRWProperties(SDL_IOStream *context);
|
||||||
|
|
||||||
#define SDL_RW_SEEK_SET 0 /**< Seek from the beginning of data */
|
#define SDL_IO_SEEK_SET 0 /**< Seek from the beginning of data */
|
||||||
#define SDL_RW_SEEK_CUR 1 /**< Seek relative to current read point */
|
#define SDL_IO_SEEK_CUR 1 /**< Seek relative to current read point */
|
||||||
#define SDL_RW_SEEK_END 2 /**< Seek relative to the end of data */
|
#define SDL_IO_SEEK_END 2 /**< Seek relative to the end of data */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Query the stream status of a RWops.
|
* Query the stream status of an SDL_IOStream.
|
||||||
*
|
*
|
||||||
* This information can be useful to decide if a short read or write was
|
* This information can be useful to decide if a short read or write was
|
||||||
* due to an error, an EOF, or a non-blocking operation that isn't yet
|
* due to an error, an EOF, or a non-blocking operation that isn't yet
|
||||||
* ready to complete.
|
* ready to complete.
|
||||||
*
|
*
|
||||||
* A RWops's status is only expected to change after a SDL_ReadRW or
|
* An SDL_IOStream's status is only expected to change after a SDL_ReadIO or
|
||||||
* SDL_WriteRW call; don't expect it to change if you just call this
|
* SDL_WriteIO call; don't expect it to change if you just call this
|
||||||
* query function in a tight loop.
|
* query function in a tight loop.
|
||||||
*
|
*
|
||||||
* \param context the SDL_RWops to query.
|
* \param context the SDL_IOStream to query.
|
||||||
* \returns an SDL_RWopsStatus enum with the current state.
|
* \returns an SDL_IOStatus enum with the current state.
|
||||||
*
|
*
|
||||||
* \threadsafety This function should not be called at the same time that
|
* \threadsafety This function should not be called at the same time that
|
||||||
* another thread is operating on the same SDL_RWops.
|
* another thread is operating on the same SDL_IOStream.
|
||||||
*
|
*
|
||||||
* \since This function is available since SDL 3.0.0.
|
* \since This function is available since SDL 3.0.0.
|
||||||
*/
|
*/
|
||||||
extern DECLSPEC SDL_RWopsStatus SDLCALL SDL_GetRWStatus(SDL_RWops *context);
|
extern DECLSPEC SDL_IOStatus SDLCALL SDL_GetRWStatus(SDL_IOStream *context);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Use this function to get the size of the data stream in an SDL_RWops.
|
* Use this function to get the size of the data stream in an SDL_IOStream.
|
||||||
*
|
*
|
||||||
* \param context the SDL_RWops to get the size of the data stream from
|
* \param context the SDL_IOStream to get the size of the data stream from
|
||||||
* \returns the size of the data stream in the SDL_RWops on success or a
|
* \returns the size of the data stream in the SDL_IOStream on success or a
|
||||||
* negative error code on failure; call SDL_GetError() for more
|
* negative error code on failure; call SDL_GetError() for more
|
||||||
* information.
|
* information.
|
||||||
*
|
*
|
||||||
* \since This function is available since SDL 3.0.0.
|
* \since This function is available since SDL 3.0.0.
|
||||||
*/
|
*/
|
||||||
extern DECLSPEC Sint64 SDLCALL SDL_SizeRW(SDL_RWops *context);
|
extern DECLSPEC Sint64 SDLCALL SDL_SizeIO(SDL_IOStream *context);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Seek within an SDL_RWops data stream.
|
* Seek within an SDL_IOStream data stream.
|
||||||
*
|
*
|
||||||
* This function seeks to byte `offset`, relative to `whence`.
|
* This function seeks to byte `offset`, relative to `whence`.
|
||||||
*
|
*
|
||||||
* `whence` may be any of the following values:
|
* `whence` may be any of the following values:
|
||||||
*
|
*
|
||||||
* - `SDL_RW_SEEK_SET`: seek from the beginning of data
|
* - `SDL_IO_SEEK_SET`: seek from the beginning of data
|
||||||
* - `SDL_RW_SEEK_CUR`: seek relative to current read point
|
* - `SDL_IO_SEEK_CUR`: seek relative to current read point
|
||||||
* - `SDL_RW_SEEK_END`: seek relative to the end of data
|
* - `SDL_IO_SEEK_END`: seek relative to the end of data
|
||||||
*
|
*
|
||||||
* If this stream can not seek, it will return -1.
|
* If this stream can not seek, it will return -1.
|
||||||
*
|
*
|
||||||
* \param context a pointer to an SDL_RWops structure
|
* \param context a pointer to an SDL_IOStream structure
|
||||||
* \param offset an offset in bytes, relative to **whence** location; can be
|
* \param offset an offset in bytes, relative to **whence** location; can be
|
||||||
* negative
|
* negative
|
||||||
* \param whence any of `SDL_RW_SEEK_SET`, `SDL_RW_SEEK_CUR`,
|
* \param whence any of `SDL_IO_SEEK_SET`, `SDL_IO_SEEK_CUR`,
|
||||||
* `SDL_RW_SEEK_END`
|
* `SDL_IO_SEEK_END`
|
||||||
* \returns the final offset in the data stream after the seek or a negative
|
* \returns the final offset in the data stream after the seek or a negative
|
||||||
* error code on failure; call SDL_GetError() for more information.
|
* error code on failure; call SDL_GetError() for more information.
|
||||||
*
|
*
|
||||||
* \since This function is available since SDL 3.0.0.
|
* \since This function is available since SDL 3.0.0.
|
||||||
*
|
*
|
||||||
* \sa SDL_RWFromConstMem
|
* \sa SDL_IOFromConstMem
|
||||||
* \sa SDL_RWFromFile
|
* \sa SDL_IOFromFile
|
||||||
* \sa SDL_RWFromMem
|
* \sa SDL_IOFromMem
|
||||||
* \sa SDL_ReadRW
|
* \sa SDL_ReadIO
|
||||||
* \sa SDL_TellRW
|
* \sa SDL_TellIO
|
||||||
* \sa SDL_WriteRW
|
* \sa SDL_WriteIO
|
||||||
*/
|
*/
|
||||||
extern DECLSPEC Sint64 SDLCALL SDL_SeekRW(SDL_RWops *context, Sint64 offset, int whence);
|
extern DECLSPEC Sint64 SDLCALL SDL_SeekIO(SDL_IOStream *context, Sint64 offset, int whence);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Determine the current read/write offset in an SDL_RWops data stream.
|
* Determine the current read/write offset in an SDL_IOStream data stream.
|
||||||
*
|
*
|
||||||
* SDL_TellRW is actually a wrapper function that calls the SDL_RWops's `seek`
|
* SDL_TellIO is actually a wrapper function that calls the SDL_IOStream's `seek`
|
||||||
* method, with an offset of 0 bytes from `SDL_RW_SEEK_CUR`, to simplify
|
* method, with an offset of 0 bytes from `SDL_IO_SEEK_CUR`, to simplify
|
||||||
* application development.
|
* application development.
|
||||||
*
|
*
|
||||||
* \param context an SDL_RWops data stream object from which to get the
|
* \param context an SDL_IOStream data stream object from which to get the
|
||||||
* current offset
|
* current offset
|
||||||
* \returns the current offset in the stream, or -1 if the information can not
|
* \returns the current offset in the stream, or -1 if the information can not
|
||||||
* be determined.
|
* be determined.
|
||||||
*
|
*
|
||||||
* \since This function is available since SDL 3.0.0.
|
* \since This function is available since SDL 3.0.0.
|
||||||
*
|
*
|
||||||
* \sa SDL_RWFromConstMem
|
* \sa SDL_IOFromConstMem
|
||||||
* \sa SDL_RWFromFile
|
* \sa SDL_IOFromFile
|
||||||
* \sa SDL_RWFromMem
|
* \sa SDL_IOFromMem
|
||||||
* \sa SDL_ReadRW
|
* \sa SDL_ReadIO
|
||||||
* \sa SDL_SeekRW
|
* \sa SDL_SeekIO
|
||||||
* \sa SDL_WriteRW
|
* \sa SDL_WriteIO
|
||||||
*/
|
*/
|
||||||
extern DECLSPEC Sint64 SDLCALL SDL_TellRW(SDL_RWops *context);
|
extern DECLSPEC Sint64 SDLCALL SDL_TellIO(SDL_IOStream *context);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Read from a data source.
|
* Read from a data source.
|
||||||
|
@ -430,26 +430,26 @@ extern DECLSPEC Sint64 SDLCALL SDL_TellRW(SDL_RWops *context);
|
||||||
* that this is not an error or end-of-file, and the caller can try again
|
* that this is not an error or end-of-file, and the caller can try again
|
||||||
* later.
|
* later.
|
||||||
*
|
*
|
||||||
* SDL_ReadRW() is actually a function wrapper that calls the SDL_RWops's
|
* SDL_ReadIO() is actually a function wrapper that calls the SDL_IOStream's
|
||||||
* `read` method appropriately, to simplify application development.
|
* `read` method appropriately, to simplify application development.
|
||||||
*
|
*
|
||||||
* \param context a pointer to an SDL_RWops structure
|
* \param context a pointer to an SDL_IOStream structure
|
||||||
* \param ptr a pointer to a buffer to read data into
|
* \param ptr a pointer to a buffer to read data into
|
||||||
* \param size the number of bytes to read from the data source.
|
* \param size the number of bytes to read from the data source.
|
||||||
* \returns the number of bytes read, or 0 on end of file or other error.
|
* \returns the number of bytes read, or 0 on end of file or other error.
|
||||||
*
|
*
|
||||||
* \since This function is available since SDL 3.0.0.
|
* \since This function is available since SDL 3.0.0.
|
||||||
*
|
*
|
||||||
* \sa SDL_RWFromConstMem
|
* \sa SDL_IOFromConstMem
|
||||||
* \sa SDL_RWFromFile
|
* \sa SDL_IOFromFile
|
||||||
* \sa SDL_RWFromMem
|
* \sa SDL_IOFromMem
|
||||||
* \sa SDL_SeekRW
|
* \sa SDL_SeekIO
|
||||||
* \sa SDL_WriteRW
|
* \sa SDL_WriteIO
|
||||||
*/
|
*/
|
||||||
extern DECLSPEC size_t SDLCALL SDL_ReadRW(SDL_RWops *context, void *ptr, size_t size);
|
extern DECLSPEC size_t SDLCALL SDL_ReadIO(SDL_IOStream *context, void *ptr, size_t size);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Write to an SDL_RWops data stream.
|
* Write to an SDL_IOStream data stream.
|
||||||
*
|
*
|
||||||
* This function writes exactly `size` bytes from the area pointed at by `ptr`
|
* This function writes exactly `size` bytes from the area pointed at by `ptr`
|
||||||
* to the stream. If this fails for any reason, it'll return less than `size`
|
* to the stream. If this fails for any reason, it'll return less than `size`
|
||||||
|
@ -462,14 +462,14 @@ extern DECLSPEC size_t SDLCALL SDL_ReadRW(SDL_RWops *context, void *ptr, size_t
|
||||||
* written because it would require blocking, this function returns -2 to
|
* written because it would require blocking, this function returns -2 to
|
||||||
* distinguish that this is not an error and the caller can try again later.
|
* distinguish that this is not an error and the caller can try again later.
|
||||||
*
|
*
|
||||||
* SDL_WriteRW is actually a function wrapper that calls the SDL_RWops's
|
* SDL_WriteIO is actually a function wrapper that calls the SDL_IOStream's
|
||||||
* `write` method appropriately, to simplify application development.
|
* `write` method appropriately, to simplify application development.
|
||||||
*
|
*
|
||||||
* It is an error to specify a negative `size`, but this parameter is signed
|
* It is an error to specify a negative `size`, but this parameter is signed
|
||||||
* so you definitely cannot overflow the return value on a successful run with
|
* so you definitely cannot overflow the return value on a successful run with
|
||||||
* enormous amounts of data.
|
* enormous amounts of data.
|
||||||
*
|
*
|
||||||
* \param context a pointer to an SDL_RWops structure
|
* \param context a pointer to an SDL_IOStream structure
|
||||||
* \param ptr a pointer to a buffer containing data to write
|
* \param ptr a pointer to a buffer containing data to write
|
||||||
* \param size the number of bytes to write
|
* \param size the number of bytes to write
|
||||||
* \returns the number of bytes written, which will be less than `num` on
|
* \returns the number of bytes written, which will be less than `num` on
|
||||||
|
@ -477,21 +477,21 @@ extern DECLSPEC size_t SDLCALL SDL_ReadRW(SDL_RWops *context, void *ptr, size_t
|
||||||
*
|
*
|
||||||
* \since This function is available since SDL 3.0.0.
|
* \since This function is available since SDL 3.0.0.
|
||||||
*
|
*
|
||||||
* \sa SDL_RWFromConstMem
|
* \sa SDL_IOFromConstMem
|
||||||
* \sa SDL_RWFromFile
|
* \sa SDL_IOFromFile
|
||||||
* \sa SDL_RWFromMem
|
* \sa SDL_IOFromMem
|
||||||
* \sa SDL_RWprint
|
* \sa SDL_IOprintf
|
||||||
* \sa SDL_ReadRW
|
* \sa SDL_ReadIO
|
||||||
* \sa SDL_SeekRW
|
* \sa SDL_SeekIO
|
||||||
*/
|
*/
|
||||||
extern DECLSPEC size_t SDLCALL SDL_WriteRW(SDL_RWops *context, const void *ptr, size_t size);
|
extern DECLSPEC size_t SDLCALL SDL_WriteIO(SDL_IOStream *context, const void *ptr, size_t size);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Print to an SDL_RWops data stream.
|
* Print to an SDL_IOStream data stream.
|
||||||
*
|
*
|
||||||
* This function does formatted printing to the stream.
|
* This function does formatted printing to the stream.
|
||||||
*
|
*
|
||||||
* \param context a pointer to an SDL_RWops structure
|
* \param context a pointer to an SDL_IOStream structure
|
||||||
* \param fmt a printf() style format string
|
* \param fmt a printf() style format string
|
||||||
* \param ... additional parameters matching % tokens in the `fmt` string, if
|
* \param ... additional parameters matching % tokens in the `fmt` string, if
|
||||||
* any
|
* any
|
||||||
|
@ -500,21 +500,21 @@ extern DECLSPEC size_t SDLCALL SDL_WriteRW(SDL_RWops *context, const void *ptr,
|
||||||
*
|
*
|
||||||
* \since This function is available since SDL 3.0.0.
|
* \since This function is available since SDL 3.0.0.
|
||||||
*
|
*
|
||||||
* \sa SDL_RWFromConstMem
|
* \sa SDL_IOFromConstMem
|
||||||
* \sa SDL_RWFromFile
|
* \sa SDL_IOFromFile
|
||||||
* \sa SDL_RWFromMem
|
* \sa SDL_IOFromMem
|
||||||
* \sa SDL_ReadRW
|
* \sa SDL_ReadIO
|
||||||
* \sa SDL_SeekRW
|
* \sa SDL_SeekIO
|
||||||
* \sa SDL_WriteRW
|
* \sa SDL_WriteIO
|
||||||
*/
|
*/
|
||||||
extern DECLSPEC size_t SDLCALL SDL_RWprintf(SDL_RWops *context, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2);
|
extern DECLSPEC size_t SDLCALL SDL_IOprintf(SDL_IOStream *context, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Print to an SDL_RWops data stream.
|
* Print to an SDL_IOStream data stream.
|
||||||
*
|
*
|
||||||
* This function does formatted printing to the stream.
|
* This function does formatted printing to the stream.
|
||||||
*
|
*
|
||||||
* \param context a pointer to an SDL_RWops structure
|
* \param context a pointer to an SDL_IOStream structure
|
||||||
* \param fmt a printf() style format string
|
* \param fmt a printf() style format string
|
||||||
* \param ap a variable argument list
|
* \param ap a variable argument list
|
||||||
* \returns the number of bytes written, or 0 on error; call SDL_GetError()
|
* \returns the number of bytes written, or 0 on error; call SDL_GetError()
|
||||||
|
@ -522,14 +522,14 @@ extern DECLSPEC size_t SDLCALL SDL_RWprintf(SDL_RWops *context, SDL_PRINTF_FORMA
|
||||||
*
|
*
|
||||||
* \since This function is available since SDL 3.0.0.
|
* \since This function is available since SDL 3.0.0.
|
||||||
*
|
*
|
||||||
* \sa SDL_RWFromConstMem
|
* \sa SDL_IOFromConstMem
|
||||||
* \sa SDL_RWFromFile
|
* \sa SDL_IOFromFile
|
||||||
* \sa SDL_RWFromMem
|
* \sa SDL_IOFromMem
|
||||||
* \sa SDL_ReadRW
|
* \sa SDL_ReadIO
|
||||||
* \sa SDL_SeekRW
|
* \sa SDL_SeekIO
|
||||||
* \sa SDL_WriteRW
|
* \sa SDL_WriteIO
|
||||||
*/
|
*/
|
||||||
extern DECLSPEC size_t SDLCALL SDL_RWvprintf(SDL_RWops *context, SDL_PRINTF_FORMAT_STRING const char *fmt, va_list ap) SDL_PRINTF_VARARG_FUNCV(2);
|
extern DECLSPEC size_t SDLCALL SDL_IOvprintf(SDL_IOStream *context, SDL_PRINTF_FORMAT_STRING const char *fmt, va_list ap) SDL_PRINTF_VARARG_FUNCV(2);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Load all the data from an SDL data stream.
|
* Load all the data from an SDL data stream.
|
||||||
|
@ -540,15 +540,15 @@ extern DECLSPEC size_t SDLCALL SDL_RWvprintf(SDL_RWops *context, SDL_PRINTF_FORM
|
||||||
*
|
*
|
||||||
* The data should be freed with SDL_free().
|
* The data should be freed with SDL_free().
|
||||||
*
|
*
|
||||||
* \param src the SDL_RWops to read all available data from
|
* \param src the SDL_IOStream to read all available data from
|
||||||
* \param datasize if not NULL, will store the number of bytes read
|
* \param datasize if not NULL, will store the number of bytes read
|
||||||
* \param freesrc if SDL_TRUE, calls SDL_CloseRW() on `src` before returning,
|
* \param freesrc if SDL_TRUE, calls SDL_CloseIO() on `src` before returning,
|
||||||
* even in the case of an error
|
* even in the case of an error
|
||||||
* \returns the data, or NULL if there was an error.
|
* \returns the data, or NULL if there was an error.
|
||||||
*
|
*
|
||||||
* \since This function is available since SDL 3.0.0.
|
* \since This function is available since SDL 3.0.0.
|
||||||
*/
|
*/
|
||||||
extern DECLSPEC void *SDLCALL SDL_LoadFile_RW(SDL_RWops *src, size_t *datasize, SDL_bool freesrc);
|
extern DECLSPEC void *SDLCALL SDL_LoadFile_RW(SDL_IOStream *src, size_t *datasize, SDL_bool freesrc);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Load all the data from a file path.
|
* Load all the data from a file path.
|
||||||
|
@ -575,19 +575,19 @@ extern DECLSPEC void *SDLCALL SDL_LoadFile(const char *file, size_t *datasize);
|
||||||
/* @{ */
|
/* @{ */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Use this function to read a byte from an SDL_RWops.
|
* Use this function to read a byte from an SDL_IOStream.
|
||||||
*
|
*
|
||||||
* \param src the SDL_RWops to read from
|
* \param src the SDL_IOStream to read from
|
||||||
* \param value a pointer filled in with the data read
|
* \param value a pointer filled in with the data read
|
||||||
* \returns SDL_TRUE on success or SDL_FALSE on failure; call SDL_GetError()
|
* \returns SDL_TRUE on success or SDL_FALSE on failure; call SDL_GetError()
|
||||||
* for more information.
|
* for more information.
|
||||||
*
|
*
|
||||||
* \since This function is available since SDL 3.0.0.
|
* \since This function is available since SDL 3.0.0.
|
||||||
*/
|
*/
|
||||||
extern DECLSPEC SDL_bool SDLCALL SDL_ReadU8(SDL_RWops *src, Uint8 *value);
|
extern DECLSPEC SDL_bool SDLCALL SDL_ReadU8(SDL_IOStream *src, Uint8 *value);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Use this function to read 16 bits of little-endian data from an SDL_RWops
|
* Use this function to read 16 bits of little-endian data from an SDL_IOStream
|
||||||
* and return in native format.
|
* and return in native format.
|
||||||
*
|
*
|
||||||
* SDL byteswaps the data only if necessary, so the data returned will be in
|
* SDL byteswaps the data only if necessary, so the data returned will be in
|
||||||
|
@ -600,10 +600,10 @@ extern DECLSPEC SDL_bool SDLCALL SDL_ReadU8(SDL_RWops *src, Uint8 *value);
|
||||||
*
|
*
|
||||||
* \since This function is available since SDL 3.0.0.
|
* \since This function is available since SDL 3.0.0.
|
||||||
*/
|
*/
|
||||||
extern DECLSPEC SDL_bool SDLCALL SDL_ReadU16LE(SDL_RWops *src, Uint16 *value);
|
extern DECLSPEC SDL_bool SDLCALL SDL_ReadU16LE(SDL_IOStream *src, Uint16 *value);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Use this function to read 16 bits of little-endian data from an SDL_RWops
|
* Use this function to read 16 bits of little-endian data from an SDL_IOStream
|
||||||
* and return in native format.
|
* and return in native format.
|
||||||
*
|
*
|
||||||
* SDL byteswaps the data only if necessary, so the data returned will be in
|
* SDL byteswaps the data only if necessary, so the data returned will be in
|
||||||
|
@ -616,10 +616,10 @@ extern DECLSPEC SDL_bool SDLCALL SDL_ReadU16LE(SDL_RWops *src, Uint16 *value);
|
||||||
*
|
*
|
||||||
* \since This function is available since SDL 3.0.0.
|
* \since This function is available since SDL 3.0.0.
|
||||||
*/
|
*/
|
||||||
extern DECLSPEC SDL_bool SDLCALL SDL_ReadS16LE(SDL_RWops *src, Sint16 *value);
|
extern DECLSPEC SDL_bool SDLCALL SDL_ReadS16LE(SDL_IOStream *src, Sint16 *value);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Use this function to read 16 bits of big-endian data from an SDL_RWops and
|
* Use this function to read 16 bits of big-endian data from an SDL_IOStream and
|
||||||
* return in native format.
|
* return in native format.
|
||||||
*
|
*
|
||||||
* SDL byteswaps the data only if necessary, so the data returned will be in
|
* SDL byteswaps the data only if necessary, so the data returned will be in
|
||||||
|
@ -632,10 +632,10 @@ extern DECLSPEC SDL_bool SDLCALL SDL_ReadS16LE(SDL_RWops *src, Sint16 *value);
|
||||||
*
|
*
|
||||||
* \since This function is available since SDL 3.0.0.
|
* \since This function is available since SDL 3.0.0.
|
||||||
*/
|
*/
|
||||||
extern DECLSPEC SDL_bool SDLCALL SDL_ReadU16BE(SDL_RWops *src, Uint16 *value);
|
extern DECLSPEC SDL_bool SDLCALL SDL_ReadU16BE(SDL_IOStream *src, Uint16 *value);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Use this function to read 16 bits of big-endian data from an SDL_RWops and
|
* Use this function to read 16 bits of big-endian data from an SDL_IOStream and
|
||||||
* return in native format.
|
* return in native format.
|
||||||
*
|
*
|
||||||
* SDL byteswaps the data only if necessary, so the data returned will be in
|
* SDL byteswaps the data only if necessary, so the data returned will be in
|
||||||
|
@ -648,10 +648,10 @@ extern DECLSPEC SDL_bool SDLCALL SDL_ReadU16BE(SDL_RWops *src, Uint16 *value);
|
||||||
*
|
*
|
||||||
* \since This function is available since SDL 3.0.0.
|
* \since This function is available since SDL 3.0.0.
|
||||||
*/
|
*/
|
||||||
extern DECLSPEC SDL_bool SDLCALL SDL_ReadS16BE(SDL_RWops *src, Sint16 *value);
|
extern DECLSPEC SDL_bool SDLCALL SDL_ReadS16BE(SDL_IOStream *src, Sint16 *value);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Use this function to read 32 bits of little-endian data from an SDL_RWops
|
* Use this function to read 32 bits of little-endian data from an SDL_IOStream
|
||||||
* and return in native format.
|
* and return in native format.
|
||||||
*
|
*
|
||||||
* SDL byteswaps the data only if necessary, so the data returned will be in
|
* SDL byteswaps the data only if necessary, so the data returned will be in
|
||||||
|
@ -664,10 +664,10 @@ extern DECLSPEC SDL_bool SDLCALL SDL_ReadS16BE(SDL_RWops *src, Sint16 *value);
|
||||||
*
|
*
|
||||||
* \since This function is available since SDL 3.0.0.
|
* \since This function is available since SDL 3.0.0.
|
||||||
*/
|
*/
|
||||||
extern DECLSPEC SDL_bool SDLCALL SDL_ReadU32LE(SDL_RWops *src, Uint32 *value);
|
extern DECLSPEC SDL_bool SDLCALL SDL_ReadU32LE(SDL_IOStream *src, Uint32 *value);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Use this function to read 32 bits of little-endian data from an SDL_RWops
|
* Use this function to read 32 bits of little-endian data from an SDL_IOStream
|
||||||
* and return in native format.
|
* and return in native format.
|
||||||
*
|
*
|
||||||
* SDL byteswaps the data only if necessary, so the data returned will be in
|
* SDL byteswaps the data only if necessary, so the data returned will be in
|
||||||
|
@ -680,10 +680,10 @@ extern DECLSPEC SDL_bool SDLCALL SDL_ReadU32LE(SDL_RWops *src, Uint32 *value);
|
||||||
*
|
*
|
||||||
* \since This function is available since SDL 3.0.0.
|
* \since This function is available since SDL 3.0.0.
|
||||||
*/
|
*/
|
||||||
extern DECLSPEC SDL_bool SDLCALL SDL_ReadS32LE(SDL_RWops *src, Sint32 *value);
|
extern DECLSPEC SDL_bool SDLCALL SDL_ReadS32LE(SDL_IOStream *src, Sint32 *value);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Use this function to read 32 bits of big-endian data from an SDL_RWops and
|
* Use this function to read 32 bits of big-endian data from an SDL_IOStream and
|
||||||
* return in native format.
|
* return in native format.
|
||||||
*
|
*
|
||||||
* SDL byteswaps the data only if necessary, so the data returned will be in
|
* SDL byteswaps the data only if necessary, so the data returned will be in
|
||||||
|
@ -696,10 +696,10 @@ extern DECLSPEC SDL_bool SDLCALL SDL_ReadS32LE(SDL_RWops *src, Sint32 *value);
|
||||||
*
|
*
|
||||||
* \since This function is available since SDL 3.0.0.
|
* \since This function is available since SDL 3.0.0.
|
||||||
*/
|
*/
|
||||||
extern DECLSPEC SDL_bool SDLCALL SDL_ReadU32BE(SDL_RWops *src, Uint32 *value);
|
extern DECLSPEC SDL_bool SDLCALL SDL_ReadU32BE(SDL_IOStream *src, Uint32 *value);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Use this function to read 32 bits of big-endian data from an SDL_RWops and
|
* Use this function to read 32 bits of big-endian data from an SDL_IOStream and
|
||||||
* return in native format.
|
* return in native format.
|
||||||
*
|
*
|
||||||
* SDL byteswaps the data only if necessary, so the data returned will be in
|
* SDL byteswaps the data only if necessary, so the data returned will be in
|
||||||
|
@ -712,10 +712,10 @@ extern DECLSPEC SDL_bool SDLCALL SDL_ReadU32BE(SDL_RWops *src, Uint32 *value);
|
||||||
*
|
*
|
||||||
* \since This function is available since SDL 3.0.0.
|
* \since This function is available since SDL 3.0.0.
|
||||||
*/
|
*/
|
||||||
extern DECLSPEC SDL_bool SDLCALL SDL_ReadS32BE(SDL_RWops *src, Sint32 *value);
|
extern DECLSPEC SDL_bool SDLCALL SDL_ReadS32BE(SDL_IOStream *src, Sint32 *value);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Use this function to read 64 bits of little-endian data from an SDL_RWops
|
* Use this function to read 64 bits of little-endian data from an SDL_IOStream
|
||||||
* and return in native format.
|
* and return in native format.
|
||||||
*
|
*
|
||||||
* SDL byteswaps the data only if necessary, so the data returned will be in
|
* SDL byteswaps the data only if necessary, so the data returned will be in
|
||||||
|
@ -728,10 +728,10 @@ extern DECLSPEC SDL_bool SDLCALL SDL_ReadS32BE(SDL_RWops *src, Sint32 *value);
|
||||||
*
|
*
|
||||||
* \since This function is available since SDL 3.0.0.
|
* \since This function is available since SDL 3.0.0.
|
||||||
*/
|
*/
|
||||||
extern DECLSPEC SDL_bool SDLCALL SDL_ReadU64LE(SDL_RWops *src, Uint64 *value);
|
extern DECLSPEC SDL_bool SDLCALL SDL_ReadU64LE(SDL_IOStream *src, Uint64 *value);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Use this function to read 64 bits of little-endian data from an SDL_RWops
|
* Use this function to read 64 bits of little-endian data from an SDL_IOStream
|
||||||
* and return in native format.
|
* and return in native format.
|
||||||
*
|
*
|
||||||
* SDL byteswaps the data only if necessary, so the data returned will be in
|
* SDL byteswaps the data only if necessary, so the data returned will be in
|
||||||
|
@ -744,10 +744,10 @@ extern DECLSPEC SDL_bool SDLCALL SDL_ReadU64LE(SDL_RWops *src, Uint64 *value);
|
||||||
*
|
*
|
||||||
* \since This function is available since SDL 3.0.0.
|
* \since This function is available since SDL 3.0.0.
|
||||||
*/
|
*/
|
||||||
extern DECLSPEC SDL_bool SDLCALL SDL_ReadS64LE(SDL_RWops *src, Sint64 *value);
|
extern DECLSPEC SDL_bool SDLCALL SDL_ReadS64LE(SDL_IOStream *src, Sint64 *value);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Use this function to read 64 bits of big-endian data from an SDL_RWops and
|
* Use this function to read 64 bits of big-endian data from an SDL_IOStream and
|
||||||
* return in native format.
|
* return in native format.
|
||||||
*
|
*
|
||||||
* SDL byteswaps the data only if necessary, so the data returned will be in
|
* SDL byteswaps the data only if necessary, so the data returned will be in
|
||||||
|
@ -760,10 +760,10 @@ extern DECLSPEC SDL_bool SDLCALL SDL_ReadS64LE(SDL_RWops *src, Sint64 *value);
|
||||||
*
|
*
|
||||||
* \since This function is available since SDL 3.0.0.
|
* \since This function is available since SDL 3.0.0.
|
||||||
*/
|
*/
|
||||||
extern DECLSPEC SDL_bool SDLCALL SDL_ReadU64BE(SDL_RWops *src, Uint64 *value);
|
extern DECLSPEC SDL_bool SDLCALL SDL_ReadU64BE(SDL_IOStream *src, Uint64 *value);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Use this function to read 64 bits of big-endian data from an SDL_RWops and
|
* Use this function to read 64 bits of big-endian data from an SDL_IOStream and
|
||||||
* return in native format.
|
* return in native format.
|
||||||
*
|
*
|
||||||
* SDL byteswaps the data only if necessary, so the data returned will be in
|
* SDL byteswaps the data only if necessary, so the data returned will be in
|
||||||
|
@ -776,7 +776,7 @@ extern DECLSPEC SDL_bool SDLCALL SDL_ReadU64BE(SDL_RWops *src, Uint64 *value);
|
||||||
*
|
*
|
||||||
* \since This function is available since SDL 3.0.0.
|
* \since This function is available since SDL 3.0.0.
|
||||||
*/
|
*/
|
||||||
extern DECLSPEC SDL_bool SDLCALL SDL_ReadS64BE(SDL_RWops *src, Sint64 *value);
|
extern DECLSPEC SDL_bool SDLCALL SDL_ReadS64BE(SDL_IOStream *src, Sint64 *value);
|
||||||
/* @} *//* Read endian functions */
|
/* @} *//* Read endian functions */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -787,19 +787,19 @@ extern DECLSPEC SDL_bool SDLCALL SDL_ReadS64BE(SDL_RWops *src, Sint64 *value);
|
||||||
/* @{ */
|
/* @{ */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Use this function to write a byte to an SDL_RWops.
|
* Use this function to write a byte to an SDL_IOStream.
|
||||||
*
|
*
|
||||||
* \param dst the SDL_RWops to write to
|
* \param dst the SDL_IOStream to write to
|
||||||
* \param value the byte value to write
|
* \param value the byte value to write
|
||||||
* \returns SDL_TRUE on successful write, SDL_FALSE on failure; call
|
* \returns SDL_TRUE on successful write, SDL_FALSE on failure; call
|
||||||
* SDL_GetError() for more information.
|
* SDL_GetError() for more information.
|
||||||
*
|
*
|
||||||
* \since This function is available since SDL 3.0.0.
|
* \since This function is available since SDL 3.0.0.
|
||||||
*/
|
*/
|
||||||
extern DECLSPEC SDL_bool SDLCALL SDL_WriteU8(SDL_RWops *dst, Uint8 value);
|
extern DECLSPEC SDL_bool SDLCALL SDL_WriteU8(SDL_IOStream *dst, Uint8 value);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Use this function to write 16 bits in native format to an SDL_RWops as
|
* Use this function to write 16 bits in native format to an SDL_IOStream as
|
||||||
* little-endian data.
|
* little-endian data.
|
||||||
*
|
*
|
||||||
* SDL byteswaps the data only if necessary, so the application always
|
* SDL byteswaps the data only if necessary, so the application always
|
||||||
|
@ -813,10 +813,10 @@ extern DECLSPEC SDL_bool SDLCALL SDL_WriteU8(SDL_RWops *dst, Uint8 value);
|
||||||
*
|
*
|
||||||
* \since This function is available since SDL 3.0.0.
|
* \since This function is available since SDL 3.0.0.
|
||||||
*/
|
*/
|
||||||
extern DECLSPEC SDL_bool SDLCALL SDL_WriteU16LE(SDL_RWops *dst, Uint16 value);
|
extern DECLSPEC SDL_bool SDLCALL SDL_WriteU16LE(SDL_IOStream *dst, Uint16 value);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Use this function to write 16 bits in native format to an SDL_RWops as
|
* Use this function to write 16 bits in native format to an SDL_IOStream as
|
||||||
* little-endian data.
|
* little-endian data.
|
||||||
*
|
*
|
||||||
* SDL byteswaps the data only if necessary, so the application always
|
* SDL byteswaps the data only if necessary, so the application always
|
||||||
|
@ -830,10 +830,10 @@ extern DECLSPEC SDL_bool SDLCALL SDL_WriteU16LE(SDL_RWops *dst, Uint16 value);
|
||||||
*
|
*
|
||||||
* \since This function is available since SDL 3.0.0.
|
* \since This function is available since SDL 3.0.0.
|
||||||
*/
|
*/
|
||||||
extern DECLSPEC SDL_bool SDLCALL SDL_WriteS16LE(SDL_RWops *dst, Sint16 value);
|
extern DECLSPEC SDL_bool SDLCALL SDL_WriteS16LE(SDL_IOStream *dst, Sint16 value);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Use this function to write 16 bits in native format to an SDL_RWops as
|
* Use this function to write 16 bits in native format to an SDL_IOStream as
|
||||||
* big-endian data.
|
* big-endian data.
|
||||||
*
|
*
|
||||||
* SDL byteswaps the data only if necessary, so the application always
|
* SDL byteswaps the data only if necessary, so the application always
|
||||||
|
@ -846,10 +846,10 @@ extern DECLSPEC SDL_bool SDLCALL SDL_WriteS16LE(SDL_RWops *dst, Sint16 value);
|
||||||
*
|
*
|
||||||
* \since This function is available since SDL 3.0.0.
|
* \since This function is available since SDL 3.0.0.
|
||||||
*/
|
*/
|
||||||
extern DECLSPEC SDL_bool SDLCALL SDL_WriteU16BE(SDL_RWops *dst, Uint16 value);
|
extern DECLSPEC SDL_bool SDLCALL SDL_WriteU16BE(SDL_IOStream *dst, Uint16 value);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Use this function to write 16 bits in native format to an SDL_RWops as
|
* Use this function to write 16 bits in native format to an SDL_IOStream as
|
||||||
* big-endian data.
|
* big-endian data.
|
||||||
*
|
*
|
||||||
* SDL byteswaps the data only if necessary, so the application always
|
* SDL byteswaps the data only if necessary, so the application always
|
||||||
|
@ -862,10 +862,10 @@ extern DECLSPEC SDL_bool SDLCALL SDL_WriteU16BE(SDL_RWops *dst, Uint16 value);
|
||||||
*
|
*
|
||||||
* \since This function is available since SDL 3.0.0.
|
* \since This function is available since SDL 3.0.0.
|
||||||
*/
|
*/
|
||||||
extern DECLSPEC SDL_bool SDLCALL SDL_WriteS16BE(SDL_RWops *dst, Sint16 value);
|
extern DECLSPEC SDL_bool SDLCALL SDL_WriteS16BE(SDL_IOStream *dst, Sint16 value);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Use this function to write 32 bits in native format to an SDL_RWops as
|
* Use this function to write 32 bits in native format to an SDL_IOStream as
|
||||||
* little-endian data.
|
* little-endian data.
|
||||||
*
|
*
|
||||||
* SDL byteswaps the data only if necessary, so the application always
|
* SDL byteswaps the data only if necessary, so the application always
|
||||||
|
@ -879,10 +879,10 @@ extern DECLSPEC SDL_bool SDLCALL SDL_WriteS16BE(SDL_RWops *dst, Sint16 value);
|
||||||
*
|
*
|
||||||
* \since This function is available since SDL 3.0.0.
|
* \since This function is available since SDL 3.0.0.
|
||||||
*/
|
*/
|
||||||
extern DECLSPEC SDL_bool SDLCALL SDL_WriteU32LE(SDL_RWops *dst, Uint32 value);
|
extern DECLSPEC SDL_bool SDLCALL SDL_WriteU32LE(SDL_IOStream *dst, Uint32 value);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Use this function to write 32 bits in native format to an SDL_RWops as
|
* Use this function to write 32 bits in native format to an SDL_IOStream as
|
||||||
* little-endian data.
|
* little-endian data.
|
||||||
*
|
*
|
||||||
* SDL byteswaps the data only if necessary, so the application always
|
* SDL byteswaps the data only if necessary, so the application always
|
||||||
|
@ -896,10 +896,10 @@ extern DECLSPEC SDL_bool SDLCALL SDL_WriteU32LE(SDL_RWops *dst, Uint32 value);
|
||||||
*
|
*
|
||||||
* \since This function is available since SDL 3.0.0.
|
* \since This function is available since SDL 3.0.0.
|
||||||
*/
|
*/
|
||||||
extern DECLSPEC SDL_bool SDLCALL SDL_WriteS32LE(SDL_RWops *dst, Sint32 value);
|
extern DECLSPEC SDL_bool SDLCALL SDL_WriteS32LE(SDL_IOStream *dst, Sint32 value);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Use this function to write 32 bits in native format to an SDL_RWops as
|
* Use this function to write 32 bits in native format to an SDL_IOStream as
|
||||||
* big-endian data.
|
* big-endian data.
|
||||||
*
|
*
|
||||||
* SDL byteswaps the data only if necessary, so the application always
|
* SDL byteswaps the data only if necessary, so the application always
|
||||||
|
@ -912,10 +912,10 @@ extern DECLSPEC SDL_bool SDLCALL SDL_WriteS32LE(SDL_RWops *dst, Sint32 value);
|
||||||
*
|
*
|
||||||
* \since This function is available since SDL 3.0.0.
|
* \since This function is available since SDL 3.0.0.
|
||||||
*/
|
*/
|
||||||
extern DECLSPEC SDL_bool SDLCALL SDL_WriteU32BE(SDL_RWops *dst, Uint32 value);
|
extern DECLSPEC SDL_bool SDLCALL SDL_WriteU32BE(SDL_IOStream *dst, Uint32 value);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Use this function to write 32 bits in native format to an SDL_RWops as
|
* Use this function to write 32 bits in native format to an SDL_IOStream as
|
||||||
* big-endian data.
|
* big-endian data.
|
||||||
*
|
*
|
||||||
* SDL byteswaps the data only if necessary, so the application always
|
* SDL byteswaps the data only if necessary, so the application always
|
||||||
|
@ -928,10 +928,10 @@ extern DECLSPEC SDL_bool SDLCALL SDL_WriteU32BE(SDL_RWops *dst, Uint32 value);
|
||||||
*
|
*
|
||||||
* \since This function is available since SDL 3.0.0.
|
* \since This function is available since SDL 3.0.0.
|
||||||
*/
|
*/
|
||||||
extern DECLSPEC SDL_bool SDLCALL SDL_WriteS32BE(SDL_RWops *dst, Sint32 value);
|
extern DECLSPEC SDL_bool SDLCALL SDL_WriteS32BE(SDL_IOStream *dst, Sint32 value);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Use this function to write 64 bits in native format to an SDL_RWops as
|
* Use this function to write 64 bits in native format to an SDL_IOStream as
|
||||||
* little-endian data.
|
* little-endian data.
|
||||||
*
|
*
|
||||||
* SDL byteswaps the data only if necessary, so the application always
|
* SDL byteswaps the data only if necessary, so the application always
|
||||||
|
@ -945,10 +945,10 @@ extern DECLSPEC SDL_bool SDLCALL SDL_WriteS32BE(SDL_RWops *dst, Sint32 value);
|
||||||
*
|
*
|
||||||
* \since This function is available since SDL 3.0.0.
|
* \since This function is available since SDL 3.0.0.
|
||||||
*/
|
*/
|
||||||
extern DECLSPEC SDL_bool SDLCALL SDL_WriteU64LE(SDL_RWops *dst, Uint64 value);
|
extern DECLSPEC SDL_bool SDLCALL SDL_WriteU64LE(SDL_IOStream *dst, Uint64 value);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Use this function to write 64 bits in native format to an SDL_RWops as
|
* Use this function to write 64 bits in native format to an SDL_IOStream as
|
||||||
* little-endian data.
|
* little-endian data.
|
||||||
*
|
*
|
||||||
* SDL byteswaps the data only if necessary, so the application always
|
* SDL byteswaps the data only if necessary, so the application always
|
||||||
|
@ -962,10 +962,10 @@ extern DECLSPEC SDL_bool SDLCALL SDL_WriteU64LE(SDL_RWops *dst, Uint64 value);
|
||||||
*
|
*
|
||||||
* \since This function is available since SDL 3.0.0.
|
* \since This function is available since SDL 3.0.0.
|
||||||
*/
|
*/
|
||||||
extern DECLSPEC SDL_bool SDLCALL SDL_WriteS64LE(SDL_RWops *dst, Sint64 value);
|
extern DECLSPEC SDL_bool SDLCALL SDL_WriteS64LE(SDL_IOStream *dst, Sint64 value);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Use this function to write 64 bits in native format to an SDL_RWops as
|
* Use this function to write 64 bits in native format to an SDL_IOStream as
|
||||||
* big-endian data.
|
* big-endian data.
|
||||||
*
|
*
|
||||||
* SDL byteswaps the data only if necessary, so the application always
|
* SDL byteswaps the data only if necessary, so the application always
|
||||||
|
@ -978,10 +978,10 @@ extern DECLSPEC SDL_bool SDLCALL SDL_WriteS64LE(SDL_RWops *dst, Sint64 value);
|
||||||
*
|
*
|
||||||
* \since This function is available since SDL 3.0.0.
|
* \since This function is available since SDL 3.0.0.
|
||||||
*/
|
*/
|
||||||
extern DECLSPEC SDL_bool SDLCALL SDL_WriteU64BE(SDL_RWops *dst, Uint64 value);
|
extern DECLSPEC SDL_bool SDLCALL SDL_WriteU64BE(SDL_IOStream *dst, Uint64 value);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Use this function to write 64 bits in native format to an SDL_RWops as
|
* Use this function to write 64 bits in native format to an SDL_IOStream as
|
||||||
* big-endian data.
|
* big-endian data.
|
||||||
*
|
*
|
||||||
* SDL byteswaps the data only if necessary, so the application always
|
* SDL byteswaps the data only if necessary, so the application always
|
||||||
|
@ -994,7 +994,7 @@ extern DECLSPEC SDL_bool SDLCALL SDL_WriteU64BE(SDL_RWops *dst, Uint64 value);
|
||||||
*
|
*
|
||||||
* \since This function is available since SDL 3.0.0.
|
* \since This function is available since SDL 3.0.0.
|
||||||
*/
|
*/
|
||||||
extern DECLSPEC SDL_bool SDLCALL SDL_WriteS64BE(SDL_RWops *dst, Sint64 value);
|
extern DECLSPEC SDL_bool SDLCALL SDL_WriteS64BE(SDL_IOStream *dst, Sint64 value);
|
||||||
|
|
||||||
/* @} *//* Write endian functions */
|
/* @} *//* Write endian functions */
|
||||||
|
|
||||||
|
|
|
@ -196,7 +196,7 @@ extern DECLSPEC SDL_Surface *SDLCALL SDL_CreateSurfaceFrom
|
||||||
* \sa SDL_CreateSurface
|
* \sa SDL_CreateSurface
|
||||||
* \sa SDL_CreateSurfaceFrom
|
* \sa SDL_CreateSurfaceFrom
|
||||||
* \sa SDL_LoadBMP
|
* \sa SDL_LoadBMP
|
||||||
* \sa SDL_LoadBMP_RW
|
* \sa SDL_LoadBMP_IO
|
||||||
*/
|
*/
|
||||||
extern DECLSPEC void SDLCALL SDL_DestroySurface(SDL_Surface *surface);
|
extern DECLSPEC void SDLCALL SDL_DestroySurface(SDL_Surface *surface);
|
||||||
|
|
||||||
|
@ -328,7 +328,7 @@ extern DECLSPEC void SDLCALL SDL_UnlockSurface(SDL_Surface *surface);
|
||||||
* will result in a memory leak.
|
* will result in a memory leak.
|
||||||
*
|
*
|
||||||
* \param src the data stream for the surface
|
* \param src the data stream for the surface
|
||||||
* \param freesrc if SDL_TRUE, calls SDL_CloseRW() on `src` before returning,
|
* \param freesrc if SDL_TRUE, calls SDL_CloseIO() on `src` before returning,
|
||||||
* even in the case of an error
|
* even in the case of an error
|
||||||
* \returns a pointer to a new SDL_Surface structure or NULL if there was an
|
* \returns a pointer to a new SDL_Surface structure or NULL if there was an
|
||||||
* error; call SDL_GetError() for more information.
|
* error; call SDL_GetError() for more information.
|
||||||
|
@ -337,9 +337,9 @@ extern DECLSPEC void SDLCALL SDL_UnlockSurface(SDL_Surface *surface);
|
||||||
*
|
*
|
||||||
* \sa SDL_DestroySurface
|
* \sa SDL_DestroySurface
|
||||||
* \sa SDL_LoadBMP
|
* \sa SDL_LoadBMP
|
||||||
* \sa SDL_SaveBMP_RW
|
* \sa SDL_SaveBMP_IO
|
||||||
*/
|
*/
|
||||||
extern DECLSPEC SDL_Surface *SDLCALL SDL_LoadBMP_RW(SDL_RWops *src, SDL_bool freesrc);
|
extern DECLSPEC SDL_Surface *SDLCALL SDL_LoadBMP_IO(SDL_IOStream *src, SDL_bool freesrc);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Load a BMP image from a file.
|
* Load a BMP image from a file.
|
||||||
|
@ -354,7 +354,7 @@ extern DECLSPEC SDL_Surface *SDLCALL SDL_LoadBMP_RW(SDL_RWops *src, SDL_bool fre
|
||||||
* \since This function is available since SDL 3.0.0.
|
* \since This function is available since SDL 3.0.0.
|
||||||
*
|
*
|
||||||
* \sa SDL_DestroySurface
|
* \sa SDL_DestroySurface
|
||||||
* \sa SDL_LoadBMP_RW
|
* \sa SDL_LoadBMP_IO
|
||||||
* \sa SDL_SaveBMP
|
* \sa SDL_SaveBMP
|
||||||
*/
|
*/
|
||||||
extern DECLSPEC SDL_Surface *SDLCALL SDL_LoadBMP(const char *file);
|
extern DECLSPEC SDL_Surface *SDLCALL SDL_LoadBMP(const char *file);
|
||||||
|
@ -370,17 +370,17 @@ extern DECLSPEC SDL_Surface *SDLCALL SDL_LoadBMP(const char *file);
|
||||||
*
|
*
|
||||||
* \param surface the SDL_Surface structure containing the image to be saved
|
* \param surface the SDL_Surface structure containing the image to be saved
|
||||||
* \param dst a data stream to save to
|
* \param dst a data stream to save to
|
||||||
* \param freedst if SDL_TRUE, calls SDL_CloseRW() on `dst` before returning,
|
* \param freedst if SDL_TRUE, calls SDL_CloseIO() on `dst` before returning,
|
||||||
* even in the case of an error
|
* even in the case of an error
|
||||||
* \returns 0 on success or a negative error code on failure; call
|
* \returns 0 on success or a negative error code on failure; call
|
||||||
* SDL_GetError() for more information.
|
* SDL_GetError() for more information.
|
||||||
*
|
*
|
||||||
* \since This function is available since SDL 3.0.0.
|
* \since This function is available since SDL 3.0.0.
|
||||||
*
|
*
|
||||||
* \sa SDL_LoadBMP_RW
|
* \sa SDL_LoadBMP_IO
|
||||||
* \sa SDL_SaveBMP
|
* \sa SDL_SaveBMP
|
||||||
*/
|
*/
|
||||||
extern DECLSPEC int SDLCALL SDL_SaveBMP_RW(SDL_Surface *surface, SDL_RWops *dst, SDL_bool freedst);
|
extern DECLSPEC int SDLCALL SDL_SaveBMP_IO(SDL_Surface *surface, SDL_IOStream *dst, SDL_bool freedst);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Save a surface to a file.
|
* Save a surface to a file.
|
||||||
|
@ -399,7 +399,7 @@ extern DECLSPEC int SDLCALL SDL_SaveBMP_RW(SDL_Surface *surface, SDL_RWops *dst,
|
||||||
* \since This function is available since SDL 3.0.0.
|
* \since This function is available since SDL 3.0.0.
|
||||||
*
|
*
|
||||||
* \sa SDL_LoadBMP
|
* \sa SDL_LoadBMP
|
||||||
* \sa SDL_SaveBMP_RW
|
* \sa SDL_SaveBMP_IO
|
||||||
*/
|
*/
|
||||||
extern DECLSPEC int SDLCALL SDL_SaveBMP(SDL_Surface *surface, const char *file);
|
extern DECLSPEC int SDLCALL SDL_SaveBMP(SDL_Surface *surface, const char *file);
|
||||||
|
|
||||||
|
|
|
@ -1502,7 +1502,7 @@ static void WaveFreeChunkData(WaveChunk *chunk)
|
||||||
chunk->size = 0;
|
chunk->size = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int WaveNextChunk(SDL_RWops *src, WaveChunk *chunk)
|
static int WaveNextChunk(SDL_IOStream *src, WaveChunk *chunk)
|
||||||
{
|
{
|
||||||
Uint32 chunkheader[2];
|
Uint32 chunkheader[2];
|
||||||
Sint64 nextposition = chunk->position + chunk->length;
|
Sint64 nextposition = chunk->position + chunk->length;
|
||||||
|
@ -1520,10 +1520,10 @@ static int WaveNextChunk(SDL_RWops *src, WaveChunk *chunk)
|
||||||
nextposition++;
|
nextposition++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (SDL_SeekRW(src, nextposition, SDL_RW_SEEK_SET) != nextposition) {
|
if (SDL_SeekIO(src, nextposition, SDL_IO_SEEK_SET) != nextposition) {
|
||||||
/* Not sure how we ended up here. Just abort. */
|
/* Not sure how we ended up here. Just abort. */
|
||||||
return -2;
|
return -2;
|
||||||
} else if (SDL_ReadRW(src, chunkheader, sizeof(Uint32) * 2) != (sizeof(Uint32) * 2)) {
|
} else if (SDL_ReadIO(src, chunkheader, sizeof(Uint32) * 2) != (sizeof(Uint32) * 2)) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1534,7 +1534,7 @@ static int WaveNextChunk(SDL_RWops *src, WaveChunk *chunk)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int WaveReadPartialChunkData(SDL_RWops *src, WaveChunk *chunk, size_t length)
|
static int WaveReadPartialChunkData(SDL_IOStream *src, WaveChunk *chunk, size_t length)
|
||||||
{
|
{
|
||||||
WaveFreeChunkData(chunk);
|
WaveFreeChunkData(chunk);
|
||||||
|
|
||||||
|
@ -1548,12 +1548,12 @@ static int WaveReadPartialChunkData(SDL_RWops *src, WaveChunk *chunk, size_t len
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (SDL_SeekRW(src, chunk->position, SDL_RW_SEEK_SET) != chunk->position) {
|
if (SDL_SeekIO(src, chunk->position, SDL_IO_SEEK_SET) != chunk->position) {
|
||||||
/* Not sure how we ended up here. Just abort. */
|
/* Not sure how we ended up here. Just abort. */
|
||||||
return -2;
|
return -2;
|
||||||
}
|
}
|
||||||
|
|
||||||
chunk->size = SDL_ReadRW(src, chunk->data, length);
|
chunk->size = SDL_ReadIO(src, chunk->data, length);
|
||||||
if (chunk->size != length) {
|
if (chunk->size != length) {
|
||||||
/* Expected to be handled by the caller. */
|
/* Expected to be handled by the caller. */
|
||||||
}
|
}
|
||||||
|
@ -1562,7 +1562,7 @@ static int WaveReadPartialChunkData(SDL_RWops *src, WaveChunk *chunk, size_t len
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int WaveReadChunkData(SDL_RWops *src, WaveChunk *chunk)
|
static int WaveReadChunkData(SDL_IOStream *src, WaveChunk *chunk)
|
||||||
{
|
{
|
||||||
return WaveReadPartialChunkData(src, chunk, chunk->length);
|
return WaveReadPartialChunkData(src, chunk, chunk->length);
|
||||||
}
|
}
|
||||||
|
@ -1602,14 +1602,14 @@ static int WaveReadFormat(WaveFile *file)
|
||||||
{
|
{
|
||||||
WaveChunk *chunk = &file->chunk;
|
WaveChunk *chunk = &file->chunk;
|
||||||
WaveFormat *format = &file->format;
|
WaveFormat *format = &file->format;
|
||||||
SDL_RWops *fmtsrc;
|
SDL_IOStream *fmtsrc;
|
||||||
size_t fmtlen = chunk->size;
|
size_t fmtlen = chunk->size;
|
||||||
|
|
||||||
if (fmtlen > SDL_MAX_SINT32) {
|
if (fmtlen > SDL_MAX_SINT32) {
|
||||||
/* Limit given by SDL_RWFromConstMem. */
|
/* Limit given by SDL_IOFromConstMem. */
|
||||||
return SDL_SetError("Data of WAVE fmt chunk too big");
|
return SDL_SetError("Data of WAVE fmt chunk too big");
|
||||||
}
|
}
|
||||||
fmtsrc = SDL_RWFromConstMem(chunk->data, (int)chunk->size);
|
fmtsrc = SDL_IOFromConstMem(chunk->data, (int)chunk->size);
|
||||||
if (!fmtsrc) {
|
if (!fmtsrc) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
@ -1629,7 +1629,7 @@ static int WaveReadFormat(WaveFile *file)
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
} else if (format->encoding == PCM_CODE) {
|
} else if (format->encoding == PCM_CODE) {
|
||||||
SDL_CloseRW(fmtsrc);
|
SDL_CloseIO(fmtsrc);
|
||||||
return SDL_SetError("Missing wBitsPerSample field in WAVE fmt chunk");
|
return SDL_SetError("Missing wBitsPerSample field in WAVE fmt chunk");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1649,19 +1649,19 @@ static int WaveReadFormat(WaveFile *file)
|
||||||
|
|
||||||
/* Extensible header must be at least 22 bytes. */
|
/* Extensible header must be at least 22 bytes. */
|
||||||
if (fmtlen < 40 || format->extsize < 22) {
|
if (fmtlen < 40 || format->extsize < 22) {
|
||||||
SDL_CloseRW(fmtsrc);
|
SDL_CloseIO(fmtsrc);
|
||||||
return SDL_SetError("Extensible WAVE header too small");
|
return SDL_SetError("Extensible WAVE header too small");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!SDL_ReadU16LE(fmtsrc, &format->validsamplebits) ||
|
if (!SDL_ReadU16LE(fmtsrc, &format->validsamplebits) ||
|
||||||
!SDL_ReadU32LE(fmtsrc, &format->channelmask) ||
|
!SDL_ReadU32LE(fmtsrc, &format->channelmask) ||
|
||||||
SDL_ReadRW(fmtsrc, format->subformat, 16) != 16) {
|
SDL_ReadIO(fmtsrc, format->subformat, 16) != 16) {
|
||||||
}
|
}
|
||||||
format->samplesperblock = format->validsamplebits;
|
format->samplesperblock = format->validsamplebits;
|
||||||
format->encoding = WaveGetFormatGUIDEncoding(format);
|
format->encoding = WaveGetFormatGUIDEncoding(format);
|
||||||
}
|
}
|
||||||
|
|
||||||
SDL_CloseRW(fmtsrc);
|
SDL_CloseIO(fmtsrc);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -1769,7 +1769,7 @@ static int WaveCheckFormat(WaveFile *file, size_t datalength)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int WaveLoad(SDL_RWops *src, WaveFile *file, SDL_AudioSpec *spec, Uint8 **audio_buf, Uint32 *audio_len)
|
static int WaveLoad(SDL_IOStream *src, WaveFile *file, SDL_AudioSpec *spec, Uint8 **audio_buf, Uint32 *audio_len)
|
||||||
{
|
{
|
||||||
int result;
|
int result;
|
||||||
Uint32 chunkcount = 0;
|
Uint32 chunkcount = 0;
|
||||||
|
@ -1795,7 +1795,7 @@ static int WaveLoad(SDL_RWops *src, WaveFile *file, SDL_AudioSpec *spec, Uint8 *
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
RIFFstart = SDL_TellRW(src);
|
RIFFstart = SDL_TellIO(src);
|
||||||
if (RIFFstart < 0) {
|
if (RIFFstart < 0) {
|
||||||
return SDL_SetError("Could not seek in file");
|
return SDL_SetError("Could not seek in file");
|
||||||
}
|
}
|
||||||
|
@ -1897,7 +1897,7 @@ static int WaveLoad(SDL_RWops *src, WaveFile *file, SDL_AudioSpec *spec, Uint8 *
|
||||||
file->fact.status = -1;
|
file->fact.status = -1;
|
||||||
} else {
|
} else {
|
||||||
/* Let's use src directly, it's just too convenient. */
|
/* Let's use src directly, it's just too convenient. */
|
||||||
Sint64 position = SDL_SeekRW(src, chunk->position, SDL_RW_SEEK_SET);
|
Sint64 position = SDL_SeekIO(src, chunk->position, SDL_IO_SEEK_SET);
|
||||||
if (position == chunk->position && SDL_ReadU32LE(src, &file->fact.samplelength)) {
|
if (position == chunk->position && SDL_ReadU32LE(src, &file->fact.samplelength)) {
|
||||||
file->fact.status = 1;
|
file->fact.status = 1;
|
||||||
} else {
|
} else {
|
||||||
|
@ -1940,7 +1940,7 @@ static int WaveLoad(SDL_RWops *src, WaveFile *file, SDL_AudioSpec *spec, Uint8 *
|
||||||
if (chunk->fourcc != DATA && chunk->length > 0) {
|
if (chunk->fourcc != DATA && chunk->length > 0) {
|
||||||
Uint8 tmp;
|
Uint8 tmp;
|
||||||
Uint64 position = (Uint64)chunk->position + chunk->length - 1;
|
Uint64 position = (Uint64)chunk->position + chunk->length - 1;
|
||||||
if (position > SDL_MAX_SINT64 || SDL_SeekRW(src, (Sint64)position, SDL_RW_SEEK_SET) != (Sint64)position) {
|
if (position > SDL_MAX_SINT64 || SDL_SeekIO(src, (Sint64)position, SDL_IO_SEEK_SET) != (Sint64)position) {
|
||||||
return SDL_SetError("Could not seek to WAVE chunk data");
|
return SDL_SetError("Could not seek to WAVE chunk data");
|
||||||
} else if (!SDL_ReadU8(src, &tmp)) {
|
} else if (!SDL_ReadU8(src, &tmp)) {
|
||||||
return SDL_SetError("RIFF size truncates chunk");
|
return SDL_SetError("RIFF size truncates chunk");
|
||||||
|
@ -2075,14 +2075,14 @@ static int WaveLoad(SDL_RWops *src, WaveFile *file, SDL_AudioSpec *spec, Uint8 *
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int SDL_LoadWAV_RW(SDL_RWops *src, SDL_bool freesrc, SDL_AudioSpec *spec, Uint8 **audio_buf, Uint32 *audio_len)
|
int SDL_LoadWAV_IO(SDL_IOStream *src, SDL_bool freesrc, SDL_AudioSpec *spec, Uint8 **audio_buf, Uint32 *audio_len)
|
||||||
{
|
{
|
||||||
int result = -1;
|
int result = -1;
|
||||||
WaveFile file;
|
WaveFile file;
|
||||||
|
|
||||||
/* Make sure we are passed a valid data source */
|
/* Make sure we are passed a valid data source */
|
||||||
if (!src) {
|
if (!src) {
|
||||||
goto done; /* Error may come from RWops. */
|
goto done; /* Error may come from SDL_IOStream. */
|
||||||
} else if (!spec) {
|
} else if (!spec) {
|
||||||
SDL_InvalidParamError("spec");
|
SDL_InvalidParamError("spec");
|
||||||
goto done;
|
goto done;
|
||||||
|
@ -2111,19 +2111,19 @@ int SDL_LoadWAV_RW(SDL_RWops *src, SDL_bool freesrc, SDL_AudioSpec *spec, Uint8
|
||||||
|
|
||||||
/* Cleanup */
|
/* Cleanup */
|
||||||
if (!freesrc) {
|
if (!freesrc) {
|
||||||
SDL_SeekRW(src, file.chunk.position, SDL_RW_SEEK_SET);
|
SDL_SeekIO(src, file.chunk.position, SDL_IO_SEEK_SET);
|
||||||
}
|
}
|
||||||
WaveFreeChunkData(&file.chunk);
|
WaveFreeChunkData(&file.chunk);
|
||||||
SDL_free(file.decoderdata);
|
SDL_free(file.decoderdata);
|
||||||
done:
|
done:
|
||||||
if (freesrc && src) {
|
if (freesrc && src) {
|
||||||
SDL_CloseRW(src);
|
SDL_CloseIO(src);
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
int SDL_LoadWAV(const char *path, SDL_AudioSpec *spec, Uint8 **audio_buf, Uint32 *audio_len)
|
int SDL_LoadWAV(const char *path, SDL_AudioSpec *spec, Uint8 **audio_buf, Uint32 *audio_len)
|
||||||
{
|
{
|
||||||
return SDL_LoadWAV_RW(SDL_RWFromFile(path, "rb"), 1, spec, audio_buf, audio_len);
|
return SDL_LoadWAV_IO(SDL_IOFromFile(path, "rb"), 1, spec, audio_buf, audio_len);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -43,7 +43,7 @@ static int DISKAUDIO_WaitDevice(SDL_AudioDevice *device)
|
||||||
|
|
||||||
static int DISKAUDIO_PlayDevice(SDL_AudioDevice *device, const Uint8 *buffer, int buffer_size)
|
static int DISKAUDIO_PlayDevice(SDL_AudioDevice *device, const Uint8 *buffer, int buffer_size)
|
||||||
{
|
{
|
||||||
const int written = (int)SDL_WriteRW(device->hidden->io, buffer, (size_t)buffer_size);
|
const int written = (int)SDL_WriteIO(device->hidden->io, buffer, (size_t)buffer_size);
|
||||||
if (written != buffer_size) { // If we couldn't write, assume fatal error for now
|
if (written != buffer_size) { // If we couldn't write, assume fatal error for now
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
@ -64,11 +64,11 @@ static int DISKAUDIO_CaptureFromDevice(SDL_AudioDevice *device, void *buffer, in
|
||||||
const int origbuflen = buflen;
|
const int origbuflen = buflen;
|
||||||
|
|
||||||
if (h->io) {
|
if (h->io) {
|
||||||
const int br = (int)SDL_ReadRW(h->io, buffer, (size_t)buflen);
|
const int br = (int)SDL_ReadIO(h->io, buffer, (size_t)buflen);
|
||||||
buflen -= br;
|
buflen -= br;
|
||||||
buffer = ((Uint8 *)buffer) + br;
|
buffer = ((Uint8 *)buffer) + br;
|
||||||
if (buflen > 0) { // EOF (or error, but whatever).
|
if (buflen > 0) { // EOF (or error, but whatever).
|
||||||
SDL_CloseRW(h->io);
|
SDL_CloseIO(h->io);
|
||||||
h->io = NULL;
|
h->io = NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -88,7 +88,7 @@ static void DISKAUDIO_CloseDevice(SDL_AudioDevice *device)
|
||||||
{
|
{
|
||||||
if (device->hidden) {
|
if (device->hidden) {
|
||||||
if (device->hidden->io) {
|
if (device->hidden->io) {
|
||||||
SDL_CloseRW(device->hidden->io);
|
SDL_CloseIO(device->hidden->io);
|
||||||
}
|
}
|
||||||
SDL_free(device->hidden->mixbuf);
|
SDL_free(device->hidden->mixbuf);
|
||||||
SDL_free(device->hidden);
|
SDL_free(device->hidden);
|
||||||
|
@ -123,7 +123,7 @@ static int DISKAUDIO_OpenDevice(SDL_AudioDevice *device)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Open the "audio device"
|
// Open the "audio device"
|
||||||
device->hidden->io = SDL_RWFromFile(fname, iscapture ? "rb" : "wb");
|
device->hidden->io = SDL_IOFromFile(fname, iscapture ? "rb" : "wb");
|
||||||
if (!device->hidden->io) {
|
if (!device->hidden->io) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,7 +28,7 @@
|
||||||
struct SDL_PrivateAudioData
|
struct SDL_PrivateAudioData
|
||||||
{
|
{
|
||||||
// The file descriptor for the audio device
|
// The file descriptor for the audio device
|
||||||
SDL_RWops *io;
|
SDL_IOStream *io;
|
||||||
Uint32 io_delay;
|
Uint32 io_delay;
|
||||||
Uint8 *mixbuf;
|
Uint8 *mixbuf;
|
||||||
};
|
};
|
||||||
|
|
|
@ -146,13 +146,13 @@ static void SDL_InitDynamicAPI(void);
|
||||||
va_end(ap); \
|
va_end(ap); \
|
||||||
return retval; \
|
return retval; \
|
||||||
} \
|
} \
|
||||||
_static size_t SDLCALL SDL_RWprintf##name(SDL_RWops *context, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) \
|
_static size_t SDLCALL SDL_IOprintf##name(SDL_IOStream *context, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) \
|
||||||
{ \
|
{ \
|
||||||
size_t retval; \
|
size_t retval; \
|
||||||
va_list ap; \
|
va_list ap; \
|
||||||
initcall; \
|
initcall; \
|
||||||
va_start(ap, fmt); \
|
va_start(ap, fmt); \
|
||||||
retval = jump_table.SDL_RWvprintf(context, fmt, ap); \
|
retval = jump_table.SDL_IOvprintf(context, fmt, ap); \
|
||||||
va_end(ap); \
|
va_end(ap); \
|
||||||
return retval; \
|
return retval; \
|
||||||
} \
|
} \
|
||||||
|
@ -297,13 +297,13 @@ static int SDLCALL SDL_swprintf_LOGSDLCALLS(SDL_OUT_Z_CAP(maxlen) wchar_t *buf,
|
||||||
va_end(ap);
|
va_end(ap);
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
_static size_t SDLCALL SDL_RWprintf_LOGSDLCALLS(SDL_RWops *context, SDL_PRINTF_FORMAT_STRING const char *fmt, ...)
|
_static size_t SDLCALL SDL_IOprintf_LOGSDLCALLS(SDL_IOStream *context, SDL_PRINTF_FORMAT_STRING const char *fmt, ...)
|
||||||
{
|
{
|
||||||
size_t retval;
|
size_t retval;
|
||||||
va_list ap;
|
va_list ap;
|
||||||
SDL_Log_REAL("SDL3CALL SDL_RWprintf");
|
SDL_Log_REAL("SDL3CALL SDL_IOprintf");
|
||||||
va_start(ap, fmt);
|
va_start(ap, fmt);
|
||||||
retval = SDL_RWvprintf_REAL(context, fmt, ap);
|
retval = SDL_IOvprintf_REAL(context, fmt, ap);
|
||||||
va_end(ap);
|
va_end(ap);
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
|
@ -407,7 +407,7 @@ SDL3_0.0.0 {
|
||||||
SDL_LinuxSetThreadPriority;
|
SDL_LinuxSetThreadPriority;
|
||||||
SDL_LinuxSetThreadPriorityAndPolicy;
|
SDL_LinuxSetThreadPriorityAndPolicy;
|
||||||
SDL_LoadBMP;
|
SDL_LoadBMP;
|
||||||
SDL_LoadBMP_RW;
|
SDL_LoadBMP_IO;
|
||||||
SDL_LoadFile;
|
SDL_LoadFile;
|
||||||
SDL_LoadFile_RW;
|
SDL_LoadFile_RW;
|
||||||
SDL_LoadFunction;
|
SDL_LoadFunction;
|
||||||
|
@ -464,14 +464,14 @@ SDL3_0.0.0 {
|
||||||
SDL_QueryTexture;
|
SDL_QueryTexture;
|
||||||
SDL_Quit;
|
SDL_Quit;
|
||||||
SDL_QuitSubSystem;
|
SDL_QuitSubSystem;
|
||||||
SDL_RWFromConstMem;
|
SDL_IOFromConstMem;
|
||||||
SDL_RWFromFile;
|
SDL_IOFromFile;
|
||||||
SDL_RWFromMem;
|
SDL_IOFromMem;
|
||||||
SDL_ReadRW;
|
SDL_ReadIO;
|
||||||
SDL_SeekRW;
|
SDL_SeekIO;
|
||||||
SDL_SizeRW;
|
SDL_SizeIO;
|
||||||
SDL_TellRW;
|
SDL_TellIO;
|
||||||
SDL_WriteRW;
|
SDL_WriteIO;
|
||||||
SDL_RaiseWindow;
|
SDL_RaiseWindow;
|
||||||
SDL_ReadU16BE;
|
SDL_ReadU16BE;
|
||||||
SDL_ReadU32BE;
|
SDL_ReadU32BE;
|
||||||
|
@ -514,7 +514,7 @@ SDL3_0.0.0 {
|
||||||
SDL_RunApp;
|
SDL_RunApp;
|
||||||
SDL_SIMDGetAlignment;
|
SDL_SIMDGetAlignment;
|
||||||
SDL_SaveBMP;
|
SDL_SaveBMP;
|
||||||
SDL_SaveBMP_RW;
|
SDL_SaveBMP_IO;
|
||||||
SDL_ScreenKeyboardShown;
|
SDL_ScreenKeyboardShown;
|
||||||
SDL_ScreenSaverEnabled;
|
SDL_ScreenSaverEnabled;
|
||||||
SDL_SendGamepadEffect;
|
SDL_SendGamepadEffect;
|
||||||
|
@ -839,7 +839,7 @@ SDL3_0.0.0 {
|
||||||
SDL_SetAudioStreamPutCallback;
|
SDL_SetAudioStreamPutCallback;
|
||||||
SDL_DestroyAudioStream;
|
SDL_DestroyAudioStream;
|
||||||
SDL_OpenAudioDeviceStream;
|
SDL_OpenAudioDeviceStream;
|
||||||
SDL_LoadWAV_RW;
|
SDL_LoadWAV_IO;
|
||||||
SDL_LoadWAV;
|
SDL_LoadWAV;
|
||||||
SDL_MixAudioFormat;
|
SDL_MixAudioFormat;
|
||||||
SDL_ConvertAudioSamples;
|
SDL_ConvertAudioSamples;
|
||||||
|
@ -884,8 +884,8 @@ SDL3_0.0.0 {
|
||||||
SDL_GetWindowProperties;
|
SDL_GetWindowProperties;
|
||||||
SDL_ClearProperty;
|
SDL_ClearProperty;
|
||||||
SDL_EnterAppMainCallbacks;
|
SDL_EnterAppMainCallbacks;
|
||||||
SDL_RWprintf;
|
SDL_IOprintf;
|
||||||
SDL_RWvprintf;
|
SDL_IOvprintf;
|
||||||
SDL_AllocateEventMemory;
|
SDL_AllocateEventMemory;
|
||||||
SDL_GetDisplayProperties;
|
SDL_GetDisplayProperties;
|
||||||
SDL_SetPropertyWithCleanup;
|
SDL_SetPropertyWithCleanup;
|
||||||
|
@ -976,8 +976,8 @@ SDL3_0.0.0 {
|
||||||
SDL_ShowOpenFileDialog;
|
SDL_ShowOpenFileDialog;
|
||||||
SDL_ShowSaveFileDialog;
|
SDL_ShowSaveFileDialog;
|
||||||
SDL_ShowOpenFolderDialog;
|
SDL_ShowOpenFolderDialog;
|
||||||
SDL_OpenRW;
|
SDL_OpenIO;
|
||||||
SDL_CloseRW;
|
SDL_CloseIO;
|
||||||
SDL_GetRWStatus;
|
SDL_GetRWStatus;
|
||||||
# extra symbols go here (don't modify this line)
|
# extra symbols go here (don't modify this line)
|
||||||
local: *;
|
local: *;
|
||||||
|
|
|
@ -431,7 +431,7 @@
|
||||||
#define SDL_LinuxSetThreadPriority SDL_LinuxSetThreadPriority_REAL
|
#define SDL_LinuxSetThreadPriority SDL_LinuxSetThreadPriority_REAL
|
||||||
#define SDL_LinuxSetThreadPriorityAndPolicy SDL_LinuxSetThreadPriorityAndPolicy_REAL
|
#define SDL_LinuxSetThreadPriorityAndPolicy SDL_LinuxSetThreadPriorityAndPolicy_REAL
|
||||||
#define SDL_LoadBMP SDL_LoadBMP_REAL
|
#define SDL_LoadBMP SDL_LoadBMP_REAL
|
||||||
#define SDL_LoadBMP_RW SDL_LoadBMP_RW_REAL
|
#define SDL_LoadBMP_IO SDL_LoadBMP_IO_REAL
|
||||||
#define SDL_LoadFile SDL_LoadFile_REAL
|
#define SDL_LoadFile SDL_LoadFile_REAL
|
||||||
#define SDL_LoadFile_RW SDL_LoadFile_RW_REAL
|
#define SDL_LoadFile_RW SDL_LoadFile_RW_REAL
|
||||||
#define SDL_LoadFunction SDL_LoadFunction_REAL
|
#define SDL_LoadFunction SDL_LoadFunction_REAL
|
||||||
|
@ -488,14 +488,14 @@
|
||||||
#define SDL_QueryTexture SDL_QueryTexture_REAL
|
#define SDL_QueryTexture SDL_QueryTexture_REAL
|
||||||
#define SDL_Quit SDL_Quit_REAL
|
#define SDL_Quit SDL_Quit_REAL
|
||||||
#define SDL_QuitSubSystem SDL_QuitSubSystem_REAL
|
#define SDL_QuitSubSystem SDL_QuitSubSystem_REAL
|
||||||
#define SDL_RWFromConstMem SDL_RWFromConstMem_REAL
|
#define SDL_IOFromConstMem SDL_IOFromConstMem_REAL
|
||||||
#define SDL_RWFromFile SDL_RWFromFile_REAL
|
#define SDL_IOFromFile SDL_IOFromFile_REAL
|
||||||
#define SDL_RWFromMem SDL_RWFromMem_REAL
|
#define SDL_IOFromMem SDL_IOFromMem_REAL
|
||||||
#define SDL_ReadRW SDL_ReadRW_REAL
|
#define SDL_ReadIO SDL_ReadIO_REAL
|
||||||
#define SDL_SeekRW SDL_SeekRW_REAL
|
#define SDL_SeekIO SDL_SeekIO_REAL
|
||||||
#define SDL_SizeRW SDL_SizeRW_REAL
|
#define SDL_SizeIO SDL_SizeIO_REAL
|
||||||
#define SDL_TellRW SDL_TellRW_REAL
|
#define SDL_TellIO SDL_TellIO_REAL
|
||||||
#define SDL_WriteRW SDL_WriteRW_REAL
|
#define SDL_WriteIO SDL_WriteIO_REAL
|
||||||
#define SDL_RaiseWindow SDL_RaiseWindow_REAL
|
#define SDL_RaiseWindow SDL_RaiseWindow_REAL
|
||||||
#define SDL_ReadU16BE SDL_ReadU16BE_REAL
|
#define SDL_ReadU16BE SDL_ReadU16BE_REAL
|
||||||
#define SDL_ReadU32BE SDL_ReadU32BE_REAL
|
#define SDL_ReadU32BE SDL_ReadU32BE_REAL
|
||||||
|
@ -538,7 +538,7 @@
|
||||||
#define SDL_RunApp SDL_RunApp_REAL
|
#define SDL_RunApp SDL_RunApp_REAL
|
||||||
#define SDL_SIMDGetAlignment SDL_SIMDGetAlignment_REAL
|
#define SDL_SIMDGetAlignment SDL_SIMDGetAlignment_REAL
|
||||||
#define SDL_SaveBMP SDL_SaveBMP_REAL
|
#define SDL_SaveBMP SDL_SaveBMP_REAL
|
||||||
#define SDL_SaveBMP_RW SDL_SaveBMP_RW_REAL
|
#define SDL_SaveBMP_IO SDL_SaveBMP_IO_REAL
|
||||||
#define SDL_ScreenKeyboardShown SDL_ScreenKeyboardShown_REAL
|
#define SDL_ScreenKeyboardShown SDL_ScreenKeyboardShown_REAL
|
||||||
#define SDL_ScreenSaverEnabled SDL_ScreenSaverEnabled_REAL
|
#define SDL_ScreenSaverEnabled SDL_ScreenSaverEnabled_REAL
|
||||||
#define SDL_SendGamepadEffect SDL_SendGamepadEffect_REAL
|
#define SDL_SendGamepadEffect SDL_SendGamepadEffect_REAL
|
||||||
|
@ -864,7 +864,7 @@
|
||||||
#define SDL_SetAudioStreamPutCallback SDL_SetAudioStreamPutCallback_REAL
|
#define SDL_SetAudioStreamPutCallback SDL_SetAudioStreamPutCallback_REAL
|
||||||
#define SDL_DestroyAudioStream SDL_DestroyAudioStream_REAL
|
#define SDL_DestroyAudioStream SDL_DestroyAudioStream_REAL
|
||||||
#define SDL_OpenAudioDeviceStream SDL_OpenAudioDeviceStream_REAL
|
#define SDL_OpenAudioDeviceStream SDL_OpenAudioDeviceStream_REAL
|
||||||
#define SDL_LoadWAV_RW SDL_LoadWAV_RW_REAL
|
#define SDL_LoadWAV_IO SDL_LoadWAV_IO_REAL
|
||||||
#define SDL_LoadWAV SDL_LoadWAV_REAL
|
#define SDL_LoadWAV SDL_LoadWAV_REAL
|
||||||
#define SDL_MixAudioFormat SDL_MixAudioFormat_REAL
|
#define SDL_MixAudioFormat SDL_MixAudioFormat_REAL
|
||||||
#define SDL_ConvertAudioSamples SDL_ConvertAudioSamples_REAL
|
#define SDL_ConvertAudioSamples SDL_ConvertAudioSamples_REAL
|
||||||
|
@ -909,8 +909,8 @@
|
||||||
#define SDL_GetWindowProperties SDL_GetWindowProperties_REAL
|
#define SDL_GetWindowProperties SDL_GetWindowProperties_REAL
|
||||||
#define SDL_ClearProperty SDL_ClearProperty_REAL
|
#define SDL_ClearProperty SDL_ClearProperty_REAL
|
||||||
#define SDL_EnterAppMainCallbacks SDL_EnterAppMainCallbacks_REAL
|
#define SDL_EnterAppMainCallbacks SDL_EnterAppMainCallbacks_REAL
|
||||||
#define SDL_RWprintf SDL_RWprintf_REAL
|
#define SDL_IOprintf SDL_IOprintf_REAL
|
||||||
#define SDL_RWvprintf SDL_RWvprintf_REAL
|
#define SDL_IOvprintf SDL_IOvprintf_REAL
|
||||||
#define SDL_AllocateEventMemory SDL_AllocateEventMemory_REAL
|
#define SDL_AllocateEventMemory SDL_AllocateEventMemory_REAL
|
||||||
#define SDL_GetDisplayProperties SDL_GetDisplayProperties_REAL
|
#define SDL_GetDisplayProperties SDL_GetDisplayProperties_REAL
|
||||||
#define SDL_SetPropertyWithCleanup SDL_SetPropertyWithCleanup_REAL
|
#define SDL_SetPropertyWithCleanup SDL_SetPropertyWithCleanup_REAL
|
||||||
|
@ -1001,6 +1001,6 @@
|
||||||
#define SDL_ShowOpenFileDialog SDL_ShowOpenFileDialog_REAL
|
#define SDL_ShowOpenFileDialog SDL_ShowOpenFileDialog_REAL
|
||||||
#define SDL_ShowSaveFileDialog SDL_ShowSaveFileDialog_REAL
|
#define SDL_ShowSaveFileDialog SDL_ShowSaveFileDialog_REAL
|
||||||
#define SDL_ShowOpenFolderDialog SDL_ShowOpenFolderDialog_REAL
|
#define SDL_ShowOpenFolderDialog SDL_ShowOpenFolderDialog_REAL
|
||||||
#define SDL_OpenRW SDL_OpenRW_REAL
|
#define SDL_OpenIO SDL_OpenIO_REAL
|
||||||
#define SDL_CloseRW SDL_CloseRW_REAL
|
#define SDL_CloseIO SDL_CloseIO_REAL
|
||||||
#define SDL_GetRWStatus SDL_GetRWStatus_REAL
|
#define SDL_GetRWStatus SDL_GetRWStatus_REAL
|
||||||
|
|
|
@ -43,7 +43,7 @@ SDL_DYNAPI_PROC(int,SDL_asprintf,(char **a, SDL_PRINTF_FORMAT_STRING const char
|
||||||
SDL_DYNAPI_PROC(int,SDL_snprintf,(SDL_OUT_Z_CAP(b) char *a, size_t b, SDL_PRINTF_FORMAT_STRING const char *c, ...),(a,b,c),return)
|
SDL_DYNAPI_PROC(int,SDL_snprintf,(SDL_OUT_Z_CAP(b) char *a, size_t b, SDL_PRINTF_FORMAT_STRING const char *c, ...),(a,b,c),return)
|
||||||
SDL_DYNAPI_PROC(int,SDL_swprintf,(SDL_OUT_Z_CAP(b) wchar_t *a, size_t b, SDL_PRINTF_FORMAT_STRING const wchar_t *c, ...),(a,b,c),return)
|
SDL_DYNAPI_PROC(int,SDL_swprintf,(SDL_OUT_Z_CAP(b) wchar_t *a, size_t b, SDL_PRINTF_FORMAT_STRING const wchar_t *c, ...),(a,b,c),return)
|
||||||
SDL_DYNAPI_PROC(int,SDL_sscanf,(const char *a, SDL_SCANF_FORMAT_STRING const char *b, ...),(a,b),return)
|
SDL_DYNAPI_PROC(int,SDL_sscanf,(const char *a, SDL_SCANF_FORMAT_STRING const char *b, ...),(a,b),return)
|
||||||
SDL_DYNAPI_PROC(size_t,SDL_RWprintf,(SDL_RWops *a, SDL_PRINTF_FORMAT_STRING const char *b, ...),(a,b),return)
|
SDL_DYNAPI_PROC(size_t,SDL_IOprintf,(SDL_IOStream *a, SDL_PRINTF_FORMAT_STRING const char *b, ...),(a,b),return)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef SDL_CreateThread
|
#ifdef SDL_CreateThread
|
||||||
|
@ -103,7 +103,7 @@ SDL_DYNAPI_PROC(SDL_bool,SDL_IsDeXMode,(void),(),return)
|
||||||
|
|
||||||
SDL_DYNAPI_PROC(int,SDL_AddEventWatch,(SDL_EventFilter a, void *b),(a,b),return)
|
SDL_DYNAPI_PROC(int,SDL_AddEventWatch,(SDL_EventFilter a, void *b),(a,b),return)
|
||||||
SDL_DYNAPI_PROC(int,SDL_AddGamepadMapping,(const char *a),(a),return)
|
SDL_DYNAPI_PROC(int,SDL_AddGamepadMapping,(const char *a),(a),return)
|
||||||
SDL_DYNAPI_PROC(int,SDL_AddGamepadMappingsFromRW,(SDL_RWops *a, SDL_bool b),(a,b),return)
|
SDL_DYNAPI_PROC(int,SDL_AddGamepadMappingsFromRW,(SDL_IOStream *a, SDL_bool b),(a,b),return)
|
||||||
SDL_DYNAPI_PROC(int,SDL_AddHintCallback,(const char *a, SDL_HintCallback b, void *c),(a,b,c),return)
|
SDL_DYNAPI_PROC(int,SDL_AddHintCallback,(const char *a, SDL_HintCallback b, void *c),(a,b,c),return)
|
||||||
SDL_DYNAPI_PROC(SDL_TimerID,SDL_AddTimer,(Uint32 a, SDL_TimerCallback b, void *c),(a,b,c),return)
|
SDL_DYNAPI_PROC(SDL_TimerID,SDL_AddTimer,(Uint32 a, SDL_TimerCallback b, void *c),(a,b,c),return)
|
||||||
SDL_DYNAPI_PROC(int,SDL_AtomicAdd,(SDL_AtomicInt *a, int b),(a,b),return)
|
SDL_DYNAPI_PROC(int,SDL_AtomicAdd,(SDL_AtomicInt *a, int b),(a,b),return)
|
||||||
|
@ -485,9 +485,9 @@ SDL_DYNAPI_PROC(SDL_bool,SDL_JoystickConnected,(SDL_Joystick *a),(a),return)
|
||||||
SDL_DYNAPI_PROC(SDL_bool,SDL_JoystickEventsEnabled,(void),(),return)
|
SDL_DYNAPI_PROC(SDL_bool,SDL_JoystickEventsEnabled,(void),(),return)
|
||||||
SDL_DYNAPI_PROC(SDL_bool,SDL_IsJoystickHaptic,(SDL_Joystick *a),(a),return)
|
SDL_DYNAPI_PROC(SDL_bool,SDL_IsJoystickHaptic,(SDL_Joystick *a),(a),return)
|
||||||
SDL_DYNAPI_PROC(SDL_Surface*,SDL_LoadBMP,(const char *a),(a),return)
|
SDL_DYNAPI_PROC(SDL_Surface*,SDL_LoadBMP,(const char *a),(a),return)
|
||||||
SDL_DYNAPI_PROC(SDL_Surface*,SDL_LoadBMP_RW,(SDL_RWops *a, SDL_bool b),(a,b),return)
|
SDL_DYNAPI_PROC(SDL_Surface*,SDL_LoadBMP_IO,(SDL_IOStream *a, SDL_bool b),(a,b),return)
|
||||||
SDL_DYNAPI_PROC(void*,SDL_LoadFile,(const char *a, size_t *b),(a,b),return)
|
SDL_DYNAPI_PROC(void*,SDL_LoadFile,(const char *a, size_t *b),(a,b),return)
|
||||||
SDL_DYNAPI_PROC(void*,SDL_LoadFile_RW,(SDL_RWops *a, size_t *b, SDL_bool c),(a,b,c),return)
|
SDL_DYNAPI_PROC(void*,SDL_LoadFile_RW,(SDL_IOStream *a, size_t *b, SDL_bool c),(a,b,c),return)
|
||||||
SDL_DYNAPI_PROC(SDL_FunctionPointer,SDL_LoadFunction,(void *a, const char *b),(a,b),return)
|
SDL_DYNAPI_PROC(SDL_FunctionPointer,SDL_LoadFunction,(void *a, const char *b),(a,b),return)
|
||||||
SDL_DYNAPI_PROC(void*,SDL_LoadObject,(const char *a),(a),return)
|
SDL_DYNAPI_PROC(void*,SDL_LoadObject,(const char *a),(a),return)
|
||||||
SDL_DYNAPI_PROC(void,SDL_LockJoysticks,(void),(),)
|
SDL_DYNAPI_PROC(void,SDL_LockJoysticks,(void),(),)
|
||||||
|
@ -533,22 +533,22 @@ SDL_DYNAPI_PROC(int,SDL_PushEvent,(SDL_Event *a),(a),return)
|
||||||
SDL_DYNAPI_PROC(int,SDL_QueryTexture,(SDL_Texture *a, Uint32 *b, int *c, int *d, int *e),(a,b,c,d,e),return)
|
SDL_DYNAPI_PROC(int,SDL_QueryTexture,(SDL_Texture *a, Uint32 *b, int *c, int *d, int *e),(a,b,c,d,e),return)
|
||||||
SDL_DYNAPI_PROC(void,SDL_Quit,(void),(),)
|
SDL_DYNAPI_PROC(void,SDL_Quit,(void),(),)
|
||||||
SDL_DYNAPI_PROC(void,SDL_QuitSubSystem,(Uint32 a),(a),)
|
SDL_DYNAPI_PROC(void,SDL_QuitSubSystem,(Uint32 a),(a),)
|
||||||
SDL_DYNAPI_PROC(SDL_RWops*,SDL_RWFromConstMem,(const void *a, size_t b),(a,b),return)
|
SDL_DYNAPI_PROC(SDL_IOStream*,SDL_IOFromConstMem,(const void *a, size_t b),(a,b),return)
|
||||||
SDL_DYNAPI_PROC(SDL_RWops*,SDL_RWFromFile,(const char *a, const char *b),(a,b),return)
|
SDL_DYNAPI_PROC(SDL_IOStream*,SDL_IOFromFile,(const char *a, const char *b),(a,b),return)
|
||||||
SDL_DYNAPI_PROC(SDL_RWops*,SDL_RWFromMem,(void *a, size_t b),(a,b),return)
|
SDL_DYNAPI_PROC(SDL_IOStream*,SDL_IOFromMem,(void *a, size_t b),(a,b),return)
|
||||||
SDL_DYNAPI_PROC(size_t,SDL_ReadRW,(SDL_RWops *a, void *b, size_t c),(a,b,c),return)
|
SDL_DYNAPI_PROC(size_t,SDL_ReadIO,(SDL_IOStream *a, void *b, size_t c),(a,b,c),return)
|
||||||
SDL_DYNAPI_PROC(Sint64,SDL_SeekRW,(SDL_RWops *a, Sint64 b, int c),(a,b,c),return)
|
SDL_DYNAPI_PROC(Sint64,SDL_SeekIO,(SDL_IOStream *a, Sint64 b, int c),(a,b,c),return)
|
||||||
SDL_DYNAPI_PROC(Sint64,SDL_SizeRW,(SDL_RWops *a),(a),return)
|
SDL_DYNAPI_PROC(Sint64,SDL_SizeIO,(SDL_IOStream *a),(a),return)
|
||||||
SDL_DYNAPI_PROC(Sint64,SDL_TellRW,(SDL_RWops *a),(a),return)
|
SDL_DYNAPI_PROC(Sint64,SDL_TellIO,(SDL_IOStream *a),(a),return)
|
||||||
SDL_DYNAPI_PROC(size_t,SDL_WriteRW,(SDL_RWops *a, const void *b, size_t c),(a,b,c),return)
|
SDL_DYNAPI_PROC(size_t,SDL_WriteIO,(SDL_IOStream *a, const void *b, size_t c),(a,b,c),return)
|
||||||
SDL_DYNAPI_PROC(int,SDL_RaiseWindow,(SDL_Window *a),(a),return)
|
SDL_DYNAPI_PROC(int,SDL_RaiseWindow,(SDL_Window *a),(a),return)
|
||||||
SDL_DYNAPI_PROC(SDL_bool,SDL_ReadU16BE,(SDL_RWops *a, Uint16 *b),(a,b),return)
|
SDL_DYNAPI_PROC(SDL_bool,SDL_ReadU16BE,(SDL_IOStream *a, Uint16 *b),(a,b),return)
|
||||||
SDL_DYNAPI_PROC(SDL_bool,SDL_ReadU32BE,(SDL_RWops *a, Uint32 *b),(a,b),return)
|
SDL_DYNAPI_PROC(SDL_bool,SDL_ReadU32BE,(SDL_IOStream *a, Uint32 *b),(a,b),return)
|
||||||
SDL_DYNAPI_PROC(SDL_bool,SDL_ReadU64BE,(SDL_RWops *a, Uint64 *b),(a,b),return)
|
SDL_DYNAPI_PROC(SDL_bool,SDL_ReadU64BE,(SDL_IOStream *a, Uint64 *b),(a,b),return)
|
||||||
SDL_DYNAPI_PROC(SDL_bool,SDL_ReadU16LE,(SDL_RWops *a, Uint16 *b),(a,b),return)
|
SDL_DYNAPI_PROC(SDL_bool,SDL_ReadU16LE,(SDL_IOStream *a, Uint16 *b),(a,b),return)
|
||||||
SDL_DYNAPI_PROC(SDL_bool,SDL_ReadU32LE,(SDL_RWops *a, Uint32 *b),(a,b),return)
|
SDL_DYNAPI_PROC(SDL_bool,SDL_ReadU32LE,(SDL_IOStream *a, Uint32 *b),(a,b),return)
|
||||||
SDL_DYNAPI_PROC(SDL_bool,SDL_ReadU64LE,(SDL_RWops *a, Uint64 *b),(a,b),return)
|
SDL_DYNAPI_PROC(SDL_bool,SDL_ReadU64LE,(SDL_IOStream *a, Uint64 *b),(a,b),return)
|
||||||
SDL_DYNAPI_PROC(SDL_bool,SDL_ReadU8,(SDL_RWops *a, Uint8 *b),(a,b),return)
|
SDL_DYNAPI_PROC(SDL_bool,SDL_ReadU8,(SDL_IOStream *a, Uint8 *b),(a,b),return)
|
||||||
SDL_DYNAPI_PROC(Uint32,SDL_RegisterEvents,(int a),(a),return)
|
SDL_DYNAPI_PROC(Uint32,SDL_RegisterEvents,(int a),(a),return)
|
||||||
SDL_DYNAPI_PROC(SDL_bool,SDL_RemoveTimer,(SDL_TimerID a),(a),return)
|
SDL_DYNAPI_PROC(SDL_bool,SDL_RemoveTimer,(SDL_TimerID a),(a),return)
|
||||||
SDL_DYNAPI_PROC(int,SDL_RenderClear,(SDL_Renderer *a),(a),return)
|
SDL_DYNAPI_PROC(int,SDL_RenderClear,(SDL_Renderer *a),(a),return)
|
||||||
|
@ -582,7 +582,7 @@ SDL_DYNAPI_PROC(int,SDL_RumbleJoystickTriggers,(SDL_Joystick *a, Uint16 b, Uint1
|
||||||
SDL_DYNAPI_PROC(int,SDL_RunApp,(int a, char *b[], SDL_main_func c, void *d),(a,b,c,d),return)
|
SDL_DYNAPI_PROC(int,SDL_RunApp,(int a, char *b[], SDL_main_func c, void *d),(a,b,c,d),return)
|
||||||
SDL_DYNAPI_PROC(size_t,SDL_SIMDGetAlignment,(void),(),return)
|
SDL_DYNAPI_PROC(size_t,SDL_SIMDGetAlignment,(void),(),return)
|
||||||
SDL_DYNAPI_PROC(int,SDL_SaveBMP,(SDL_Surface *a, const char *b),(a,b),return)
|
SDL_DYNAPI_PROC(int,SDL_SaveBMP,(SDL_Surface *a, const char *b),(a,b),return)
|
||||||
SDL_DYNAPI_PROC(int,SDL_SaveBMP_RW,(SDL_Surface *a, SDL_RWops *b, SDL_bool c),(a,b,c),return)
|
SDL_DYNAPI_PROC(int,SDL_SaveBMP_IO,(SDL_Surface *a, SDL_IOStream *b, SDL_bool c),(a,b,c),return)
|
||||||
SDL_DYNAPI_PROC(SDL_bool,SDL_ScreenKeyboardShown,(SDL_Window *a),(a),return)
|
SDL_DYNAPI_PROC(SDL_bool,SDL_ScreenKeyboardShown,(SDL_Window *a),(a),return)
|
||||||
SDL_DYNAPI_PROC(SDL_bool,SDL_ScreenSaverEnabled,(void),(),return)
|
SDL_DYNAPI_PROC(SDL_bool,SDL_ScreenSaverEnabled,(void),(),return)
|
||||||
SDL_DYNAPI_PROC(int,SDL_SendGamepadEffect,(SDL_Gamepad *a, const void *b, int c),(a,b,c),return)
|
SDL_DYNAPI_PROC(int,SDL_SendGamepadEffect,(SDL_Gamepad *a, const void *b, int c),(a,b,c),return)
|
||||||
|
@ -699,13 +699,13 @@ SDL_DYNAPI_PROC(void,SDL_WaitThread,(SDL_Thread *a, int *b),(a,b),)
|
||||||
SDL_DYNAPI_PROC(int,SDL_WarpMouseGlobal,(float a, float b),(a,b),return)
|
SDL_DYNAPI_PROC(int,SDL_WarpMouseGlobal,(float a, float b),(a,b),return)
|
||||||
SDL_DYNAPI_PROC(void,SDL_WarpMouseInWindow,(SDL_Window *a, float b, float c),(a,b,c),)
|
SDL_DYNAPI_PROC(void,SDL_WarpMouseInWindow,(SDL_Window *a, float b, float c),(a,b,c),)
|
||||||
SDL_DYNAPI_PROC(Uint32,SDL_WasInit,(Uint32 a),(a),return)
|
SDL_DYNAPI_PROC(Uint32,SDL_WasInit,(Uint32 a),(a),return)
|
||||||
SDL_DYNAPI_PROC(SDL_bool,SDL_WriteU16BE,(SDL_RWops *a, Uint16 b),(a,b),return)
|
SDL_DYNAPI_PROC(SDL_bool,SDL_WriteU16BE,(SDL_IOStream *a, Uint16 b),(a,b),return)
|
||||||
SDL_DYNAPI_PROC(SDL_bool,SDL_WriteU32BE,(SDL_RWops *a, Uint32 b),(a,b),return)
|
SDL_DYNAPI_PROC(SDL_bool,SDL_WriteU32BE,(SDL_IOStream *a, Uint32 b),(a,b),return)
|
||||||
SDL_DYNAPI_PROC(SDL_bool,SDL_WriteU64BE,(SDL_RWops *a, Uint64 b),(a,b),return)
|
SDL_DYNAPI_PROC(SDL_bool,SDL_WriteU64BE,(SDL_IOStream *a, Uint64 b),(a,b),return)
|
||||||
SDL_DYNAPI_PROC(SDL_bool,SDL_WriteU16LE,(SDL_RWops *a, Uint16 b),(a,b),return)
|
SDL_DYNAPI_PROC(SDL_bool,SDL_WriteU16LE,(SDL_IOStream *a, Uint16 b),(a,b),return)
|
||||||
SDL_DYNAPI_PROC(SDL_bool,SDL_WriteU32LE,(SDL_RWops *a, Uint32 b),(a,b),return)
|
SDL_DYNAPI_PROC(SDL_bool,SDL_WriteU32LE,(SDL_IOStream *a, Uint32 b),(a,b),return)
|
||||||
SDL_DYNAPI_PROC(SDL_bool,SDL_WriteU64LE,(SDL_RWops *a, Uint64 b),(a,b),return)
|
SDL_DYNAPI_PROC(SDL_bool,SDL_WriteU64LE,(SDL_IOStream *a, Uint64 b),(a,b),return)
|
||||||
SDL_DYNAPI_PROC(SDL_bool,SDL_WriteU8,(SDL_RWops *a, Uint8 b),(a,b),return)
|
SDL_DYNAPI_PROC(SDL_bool,SDL_WriteU8,(SDL_IOStream *a, Uint8 b),(a,b),return)
|
||||||
SDL_DYNAPI_PROC(int,SDL_abs,(int a),(a),return)
|
SDL_DYNAPI_PROC(int,SDL_abs,(int a),(a),return)
|
||||||
SDL_DYNAPI_PROC(double,SDL_acos,(double a),(a),return)
|
SDL_DYNAPI_PROC(double,SDL_acos,(double a),(a),return)
|
||||||
SDL_DYNAPI_PROC(float,SDL_acosf,(float a),(a),return)
|
SDL_DYNAPI_PROC(float,SDL_acosf,(float a),(a),return)
|
||||||
|
@ -896,7 +896,7 @@ SDL_DYNAPI_PROC(int,SDL_SetAudioStreamGetCallback,(SDL_AudioStream *a, SDL_Audio
|
||||||
SDL_DYNAPI_PROC(int,SDL_SetAudioStreamPutCallback,(SDL_AudioStream *a, SDL_AudioStreamCallback b, void *c),(a,b,c),return)
|
SDL_DYNAPI_PROC(int,SDL_SetAudioStreamPutCallback,(SDL_AudioStream *a, SDL_AudioStreamCallback b, void *c),(a,b,c),return)
|
||||||
SDL_DYNAPI_PROC(void,SDL_DestroyAudioStream,(SDL_AudioStream *a),(a),)
|
SDL_DYNAPI_PROC(void,SDL_DestroyAudioStream,(SDL_AudioStream *a),(a),)
|
||||||
SDL_DYNAPI_PROC(SDL_AudioStream*,SDL_OpenAudioDeviceStream,(SDL_AudioDeviceID a, const SDL_AudioSpec *b, SDL_AudioStreamCallback c, void *d),(a,b,c,d),return)
|
SDL_DYNAPI_PROC(SDL_AudioStream*,SDL_OpenAudioDeviceStream,(SDL_AudioDeviceID a, const SDL_AudioSpec *b, SDL_AudioStreamCallback c, void *d),(a,b,c,d),return)
|
||||||
SDL_DYNAPI_PROC(int,SDL_LoadWAV_RW,(SDL_RWops *a, SDL_bool b, SDL_AudioSpec *c, Uint8 **d, Uint32 *e),(a,b,c,d,e),return)
|
SDL_DYNAPI_PROC(int,SDL_LoadWAV_IO,(SDL_IOStream *a, SDL_bool b, SDL_AudioSpec *c, Uint8 **d, Uint32 *e),(a,b,c,d,e),return)
|
||||||
SDL_DYNAPI_PROC(int,SDL_LoadWAV,(const char *a, SDL_AudioSpec *b, Uint8 **c, Uint32 *d),(a,b,c,d),return)
|
SDL_DYNAPI_PROC(int,SDL_LoadWAV,(const char *a, SDL_AudioSpec *b, Uint8 **c, Uint32 *d),(a,b,c,d),return)
|
||||||
SDL_DYNAPI_PROC(int,SDL_MixAudioFormat,(Uint8 *a, const Uint8 *b, SDL_AudioFormat c, Uint32 d, int e),(a,b,c,d,e),return)
|
SDL_DYNAPI_PROC(int,SDL_MixAudioFormat,(Uint8 *a, const Uint8 *b, SDL_AudioFormat c, Uint32 d, int e),(a,b,c,d,e),return)
|
||||||
SDL_DYNAPI_PROC(int,SDL_ConvertAudioSamples,(const SDL_AudioSpec *a, const Uint8 *b, int c, const SDL_AudioSpec *d, Uint8 **e, int *f),(a,b,c,d,e,f),return)
|
SDL_DYNAPI_PROC(int,SDL_ConvertAudioSamples,(const SDL_AudioSpec *a, const Uint8 *b, int c, const SDL_AudioSpec *d, Uint8 **e, int *f),(a,b,c,d,e,f),return)
|
||||||
|
@ -906,18 +906,18 @@ SDL_DYNAPI_PROC(int,SDL_ResumeAudioDevice,(SDL_AudioDeviceID a),(a),return)
|
||||||
SDL_DYNAPI_PROC(SDL_bool,SDL_AudioDevicePaused,(SDL_AudioDeviceID a),(a),return)
|
SDL_DYNAPI_PROC(SDL_bool,SDL_AudioDevicePaused,(SDL_AudioDeviceID a),(a),return)
|
||||||
SDL_DYNAPI_PROC(SDL_AudioDeviceID,SDL_GetAudioStreamDevice,(SDL_AudioStream *a),(a),return)
|
SDL_DYNAPI_PROC(SDL_AudioDeviceID,SDL_GetAudioStreamDevice,(SDL_AudioStream *a),(a),return)
|
||||||
SDL_DYNAPI_PROC(int,SDL_ShowWindowSystemMenu,(SDL_Window *a, int b, int c),(a,b,c),return)
|
SDL_DYNAPI_PROC(int,SDL_ShowWindowSystemMenu,(SDL_Window *a, int b, int c),(a,b,c),return)
|
||||||
SDL_DYNAPI_PROC(SDL_bool,SDL_ReadS16LE,(SDL_RWops *a, Sint16 *b),(a,b),return)
|
SDL_DYNAPI_PROC(SDL_bool,SDL_ReadS16LE,(SDL_IOStream *a, Sint16 *b),(a,b),return)
|
||||||
SDL_DYNAPI_PROC(SDL_bool,SDL_ReadS16BE,(SDL_RWops *a, Sint16 *b),(a,b),return)
|
SDL_DYNAPI_PROC(SDL_bool,SDL_ReadS16BE,(SDL_IOStream *a, Sint16 *b),(a,b),return)
|
||||||
SDL_DYNAPI_PROC(SDL_bool,SDL_ReadS32LE,(SDL_RWops *a, Sint32 *b),(a,b),return)
|
SDL_DYNAPI_PROC(SDL_bool,SDL_ReadS32LE,(SDL_IOStream *a, Sint32 *b),(a,b),return)
|
||||||
SDL_DYNAPI_PROC(SDL_bool,SDL_ReadS32BE,(SDL_RWops *a, Sint32 *b),(a,b),return)
|
SDL_DYNAPI_PROC(SDL_bool,SDL_ReadS32BE,(SDL_IOStream *a, Sint32 *b),(a,b),return)
|
||||||
SDL_DYNAPI_PROC(SDL_bool,SDL_ReadS64LE,(SDL_RWops *a, Sint64 *b),(a,b),return)
|
SDL_DYNAPI_PROC(SDL_bool,SDL_ReadS64LE,(SDL_IOStream *a, Sint64 *b),(a,b),return)
|
||||||
SDL_DYNAPI_PROC(SDL_bool,SDL_ReadS64BE,(SDL_RWops *a, Sint64 *b),(a,b),return)
|
SDL_DYNAPI_PROC(SDL_bool,SDL_ReadS64BE,(SDL_IOStream *a, Sint64 *b),(a,b),return)
|
||||||
SDL_DYNAPI_PROC(SDL_bool,SDL_WriteS16LE,(SDL_RWops *a, Sint16 b),(a,b),return)
|
SDL_DYNAPI_PROC(SDL_bool,SDL_WriteS16LE,(SDL_IOStream *a, Sint16 b),(a,b),return)
|
||||||
SDL_DYNAPI_PROC(SDL_bool,SDL_WriteS16BE,(SDL_RWops *a, Sint16 b),(a,b),return)
|
SDL_DYNAPI_PROC(SDL_bool,SDL_WriteS16BE,(SDL_IOStream *a, Sint16 b),(a,b),return)
|
||||||
SDL_DYNAPI_PROC(SDL_bool,SDL_WriteS32LE,(SDL_RWops *a, Sint32 b),(a,b),return)
|
SDL_DYNAPI_PROC(SDL_bool,SDL_WriteS32LE,(SDL_IOStream *a, Sint32 b),(a,b),return)
|
||||||
SDL_DYNAPI_PROC(SDL_bool,SDL_WriteS32BE,(SDL_RWops *a, Sint32 b),(a,b),return)
|
SDL_DYNAPI_PROC(SDL_bool,SDL_WriteS32BE,(SDL_IOStream *a, Sint32 b),(a,b),return)
|
||||||
SDL_DYNAPI_PROC(SDL_bool,SDL_WriteS64LE,(SDL_RWops *a, Sint64 b),(a,b),return)
|
SDL_DYNAPI_PROC(SDL_bool,SDL_WriteS64LE,(SDL_IOStream *a, Sint64 b),(a,b),return)
|
||||||
SDL_DYNAPI_PROC(SDL_bool,SDL_WriteS64BE,(SDL_RWops *a, Sint64 b),(a,b),return)
|
SDL_DYNAPI_PROC(SDL_bool,SDL_WriteS64BE,(SDL_IOStream *a, Sint64 b),(a,b),return)
|
||||||
|
|
||||||
SDL_DYNAPI_PROC(int,SDL_GDKGetDefaultUser,(XUserHandle *a),(a),return)
|
SDL_DYNAPI_PROC(int,SDL_GDKGetDefaultUser,(XUserHandle *a),(a),return)
|
||||||
|
|
||||||
|
@ -937,13 +937,13 @@ SDL_DYNAPI_PROC(SDL_PropertiesID,SDL_GetGamepadProperties,(SDL_Gamepad *a),(a),r
|
||||||
SDL_DYNAPI_PROC(SDL_PropertiesID,SDL_GetJoystickProperties,(SDL_Joystick *a),(a),return)
|
SDL_DYNAPI_PROC(SDL_PropertiesID,SDL_GetJoystickProperties,(SDL_Joystick *a),(a),return)
|
||||||
SDL_DYNAPI_PROC(SDL_PropertiesID,SDL_GetRendererProperties,(SDL_Renderer *a),(a),return)
|
SDL_DYNAPI_PROC(SDL_PropertiesID,SDL_GetRendererProperties,(SDL_Renderer *a),(a),return)
|
||||||
SDL_DYNAPI_PROC(SDL_PropertiesID,SDL_GetTextureProperties,(SDL_Texture *a),(a),return)
|
SDL_DYNAPI_PROC(SDL_PropertiesID,SDL_GetTextureProperties,(SDL_Texture *a),(a),return)
|
||||||
SDL_DYNAPI_PROC(SDL_PropertiesID,SDL_GetRWProperties,(SDL_RWops *a),(a),return)
|
SDL_DYNAPI_PROC(SDL_PropertiesID,SDL_GetRWProperties,(SDL_IOStream *a),(a),return)
|
||||||
SDL_DYNAPI_PROC(SDL_PropertiesID,SDL_GetSensorProperties,(SDL_Sensor *a),(a),return)
|
SDL_DYNAPI_PROC(SDL_PropertiesID,SDL_GetSensorProperties,(SDL_Sensor *a),(a),return)
|
||||||
SDL_DYNAPI_PROC(SDL_PropertiesID,SDL_GetSurfaceProperties,(SDL_Surface *a),(a),return)
|
SDL_DYNAPI_PROC(SDL_PropertiesID,SDL_GetSurfaceProperties,(SDL_Surface *a),(a),return)
|
||||||
SDL_DYNAPI_PROC(SDL_PropertiesID,SDL_GetWindowProperties,(SDL_Window *a),(a),return)
|
SDL_DYNAPI_PROC(SDL_PropertiesID,SDL_GetWindowProperties,(SDL_Window *a),(a),return)
|
||||||
SDL_DYNAPI_PROC(int,SDL_ClearProperty,(SDL_PropertiesID a, const char *b),(a,b),return)
|
SDL_DYNAPI_PROC(int,SDL_ClearProperty,(SDL_PropertiesID a, const char *b),(a,b),return)
|
||||||
SDL_DYNAPI_PROC(int,SDL_EnterAppMainCallbacks,(int a, char *b[], SDL_AppInit_func c, SDL_AppIterate_func d, SDL_AppEvent_func e, SDL_AppQuit_func f),(a,b,c,d,e,f),return)
|
SDL_DYNAPI_PROC(int,SDL_EnterAppMainCallbacks,(int a, char *b[], SDL_AppInit_func c, SDL_AppIterate_func d, SDL_AppEvent_func e, SDL_AppQuit_func f),(a,b,c,d,e,f),return)
|
||||||
SDL_DYNAPI_PROC(size_t,SDL_RWvprintf,(SDL_RWops *a, SDL_PRINTF_FORMAT_STRING const char *b, va_list c),(a,b,c),return)
|
SDL_DYNAPI_PROC(size_t,SDL_IOvprintf,(SDL_IOStream *a, SDL_PRINTF_FORMAT_STRING const char *b, va_list c),(a,b,c),return)
|
||||||
SDL_DYNAPI_PROC(void*,SDL_AllocateEventMemory,(size_t a),(a),return)
|
SDL_DYNAPI_PROC(void*,SDL_AllocateEventMemory,(size_t a),(a),return)
|
||||||
SDL_DYNAPI_PROC(SDL_PropertiesID,SDL_GetDisplayProperties,(SDL_DisplayID a),(a),return)
|
SDL_DYNAPI_PROC(SDL_PropertiesID,SDL_GetDisplayProperties,(SDL_DisplayID a),(a),return)
|
||||||
SDL_DYNAPI_PROC(int,SDL_SetPropertyWithCleanup,(SDL_PropertiesID a, const char *b, void *c, void (SDLCALL *d)(void *userdata, void *value), void *e),(a,b,c,d,e),return)
|
SDL_DYNAPI_PROC(int,SDL_SetPropertyWithCleanup,(SDL_PropertiesID a, const char *b, void *c, void (SDLCALL *d)(void *userdata, void *value), void *e),(a,b,c,d,e),return)
|
||||||
|
@ -1026,6 +1026,6 @@ SDL_DYNAPI_PROC(int,SDL_GetJoystickBall,(SDL_Joystick *a, int b, int *c, int *d)
|
||||||
SDL_DYNAPI_PROC(void,SDL_ShowOpenFileDialog,(SDL_DialogFileCallback a, void *b, SDL_Window *c, const SDL_DialogFileFilter *d, const char *e, int f),(a,b,c,d,e,f),)
|
SDL_DYNAPI_PROC(void,SDL_ShowOpenFileDialog,(SDL_DialogFileCallback a, void *b, SDL_Window *c, const SDL_DialogFileFilter *d, const char *e, int f),(a,b,c,d,e,f),)
|
||||||
SDL_DYNAPI_PROC(void,SDL_ShowSaveFileDialog,(SDL_DialogFileCallback a, void *b, SDL_Window *c, const SDL_DialogFileFilter *d, const char *e),(a,b,c,d,e),)
|
SDL_DYNAPI_PROC(void,SDL_ShowSaveFileDialog,(SDL_DialogFileCallback a, void *b, SDL_Window *c, const SDL_DialogFileFilter *d, const char *e),(a,b,c,d,e),)
|
||||||
SDL_DYNAPI_PROC(void,SDL_ShowOpenFolderDialog,(SDL_DialogFileCallback a, void *b, SDL_Window *c, const char *d, int e),(a,b,c,d,e),)
|
SDL_DYNAPI_PROC(void,SDL_ShowOpenFolderDialog,(SDL_DialogFileCallback a, void *b, SDL_Window *c, const char *d, int e),(a,b,c,d,e),)
|
||||||
SDL_DYNAPI_PROC(SDL_RWops*,SDL_OpenRW,(const SDL_RWopsInterface *a, void *b),(a,b),return)
|
SDL_DYNAPI_PROC(SDL_IOStream*,SDL_OpenIO,(const SDL_IOStreamInterface *a, void *b),(a,b),return)
|
||||||
SDL_DYNAPI_PROC(int,SDL_CloseRW,(SDL_RWops *a),(a),return)
|
SDL_DYNAPI_PROC(int,SDL_CloseIO,(SDL_IOStream *a),(a),return)
|
||||||
SDL_DYNAPI_PROC(SDL_RWopsStatus,SDL_GetRWStatus,(SDL_RWops *a),(a),return)
|
SDL_DYNAPI_PROC(SDL_IOStatus,SDL_GetRWStatus,(SDL_IOStream *a),(a),return)
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1789,7 +1789,7 @@ static GamepadMapping_t *SDL_PrivateGetGamepadMapping(SDL_JoystickID instance_id
|
||||||
/*
|
/*
|
||||||
* Add or update an entry into the Mappings Database
|
* Add or update an entry into the Mappings Database
|
||||||
*/
|
*/
|
||||||
int SDL_AddGamepadMappingsFromRW(SDL_RWops *src, SDL_bool freesrc)
|
int SDL_AddGamepadMappingsFromRW(SDL_IOStream *src, SDL_bool freesrc)
|
||||||
{
|
{
|
||||||
const char *platform = SDL_GetPlatform();
|
const char *platform = SDL_GetPlatform();
|
||||||
int gamepads = 0;
|
int gamepads = 0;
|
||||||
|
@ -1845,7 +1845,7 @@ int SDL_AddGamepadMappingsFromRW(SDL_RWops *src, SDL_bool freesrc)
|
||||||
|
|
||||||
int SDL_AddGamepadMappingsFromFile(const char *file)
|
int SDL_AddGamepadMappingsFromFile(const char *file)
|
||||||
{
|
{
|
||||||
return SDL_AddGamepadMappingsFromRW(SDL_RWFromFile(file, "rb"), 1);
|
return SDL_AddGamepadMappingsFromRW(SDL_IOFromFile(file, "rb"), 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
int SDL_ReloadGamepadMappings(void)
|
int SDL_ReloadGamepadMappings(void)
|
||||||
|
|
|
@ -1900,20 +1900,20 @@ static const void *SDLTest_ScreenShotClipboardProvider(void *context, const char
|
||||||
SDL_Log("Providing screenshot image to clipboard!\n");
|
SDL_Log("Providing screenshot image to clipboard!\n");
|
||||||
|
|
||||||
if (!data->image) {
|
if (!data->image) {
|
||||||
SDL_RWops *file;
|
SDL_IOStream *file;
|
||||||
|
|
||||||
file = SDL_RWFromFile(SCREENSHOT_FILE, "r");
|
file = SDL_IOFromFile(SCREENSHOT_FILE, "r");
|
||||||
if (file) {
|
if (file) {
|
||||||
size_t length = (size_t)SDL_SizeRW(file);
|
size_t length = (size_t)SDL_SizeIO(file);
|
||||||
void *image = SDL_malloc(length);
|
void *image = SDL_malloc(length);
|
||||||
if (image) {
|
if (image) {
|
||||||
if (SDL_ReadRW(file, image, length) != length) {
|
if (SDL_ReadIO(file, image, length) != length) {
|
||||||
SDL_Log("Couldn't read %s: %s\n", SCREENSHOT_FILE, SDL_GetError());
|
SDL_Log("Couldn't read %s: %s\n", SCREENSHOT_FILE, SDL_GetError());
|
||||||
SDL_free(image);
|
SDL_free(image);
|
||||||
image = NULL;
|
image = NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
SDL_CloseRW(file);
|
SDL_CloseIO(file);
|
||||||
|
|
||||||
if (image) {
|
if (image) {
|
||||||
data->image = image;
|
data->image = image;
|
||||||
|
@ -1977,14 +1977,14 @@ static void SDLTest_PasteScreenShot(void)
|
||||||
void *data = SDL_GetClipboardData(image_formats[i], &size);
|
void *data = SDL_GetClipboardData(image_formats[i], &size);
|
||||||
if (data) {
|
if (data) {
|
||||||
char filename[16];
|
char filename[16];
|
||||||
SDL_RWops *file;
|
SDL_IOStream *file;
|
||||||
|
|
||||||
SDL_snprintf(filename, sizeof(filename), "clipboard.%s", image_formats[i] + 6);
|
SDL_snprintf(filename, sizeof(filename), "clipboard.%s", image_formats[i] + 6);
|
||||||
file = SDL_RWFromFile(filename, "w");
|
file = SDL_IOFromFile(filename, "w");
|
||||||
if (file) {
|
if (file) {
|
||||||
SDL_Log("Writing clipboard image to %s", filename);
|
SDL_Log("Writing clipboard image to %s", filename);
|
||||||
SDL_WriteRW(file, data, size);
|
SDL_WriteIO(file, data, size);
|
||||||
SDL_CloseRW(file);
|
SDL_CloseIO(file);
|
||||||
}
|
}
|
||||||
SDL_free(data);
|
SDL_free(data);
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -50,7 +50,7 @@
|
||||||
#define LCS_WINDOWS_COLOR_SPACE 0x57696E20
|
#define LCS_WINDOWS_COLOR_SPACE 0x57696E20
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static SDL_bool readRlePixels(SDL_Surface *surface, SDL_RWops *src, int isRle8)
|
static SDL_bool readRlePixels(SDL_Surface *surface, SDL_IOStream *src, int isRle8)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
| Sets the surface pixels from src. A bmp image is upside down.
|
| Sets the surface pixels from src. A bmp image is upside down.
|
||||||
|
@ -193,7 +193,7 @@ static void CorrectAlphaChannel(SDL_Surface *surface)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SDL_Surface *SDL_LoadBMP_RW(SDL_RWops *src, SDL_bool freesrc)
|
SDL_Surface *SDL_LoadBMP_IO(SDL_IOStream *src, SDL_bool freesrc)
|
||||||
{
|
{
|
||||||
SDL_bool was_error = SDL_TRUE;
|
SDL_bool was_error = SDL_TRUE;
|
||||||
Sint64 fp_offset = 0;
|
Sint64 fp_offset = 0;
|
||||||
|
@ -239,12 +239,12 @@ SDL_Surface *SDL_LoadBMP_RW(SDL_RWops *src, SDL_bool freesrc)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Read in the BMP file header */
|
/* Read in the BMP file header */
|
||||||
fp_offset = SDL_TellRW(src);
|
fp_offset = SDL_TellIO(src);
|
||||||
if (fp_offset < 0) {
|
if (fp_offset < 0) {
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
SDL_ClearError();
|
SDL_ClearError();
|
||||||
if (SDL_ReadRW(src, magic, 2) != 2) {
|
if (SDL_ReadIO(src, magic, 2) != 2) {
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
if (SDL_strncmp(magic, "BM", 2) != 0) {
|
if (SDL_strncmp(magic, "BM", 2) != 0) {
|
||||||
|
@ -340,9 +340,9 @@ SDL_Surface *SDL_LoadBMP_RW(SDL_RWops *src, SDL_bool freesrc)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* skip any header bytes we didn't handle... */
|
/* skip any header bytes we didn't handle... */
|
||||||
headerSize = (Uint32)(SDL_TellRW(src) - (fp_offset + 14));
|
headerSize = (Uint32)(SDL_TellIO(src) - (fp_offset + 14));
|
||||||
if (biSize > headerSize) {
|
if (biSize > headerSize) {
|
||||||
if (SDL_SeekRW(src, (biSize - headerSize), SDL_RW_SEEK_CUR) < 0) {
|
if (SDL_SeekIO(src, (biSize - headerSize), SDL_IO_SEEK_CUR) < 0) {
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -441,7 +441,7 @@ SDL_Surface *SDL_LoadBMP_RW(SDL_RWops *src, SDL_bool freesrc)
|
||||||
/* Load the palette, if any */
|
/* Load the palette, if any */
|
||||||
palette = (surface->format)->palette;
|
palette = (surface->format)->palette;
|
||||||
if (palette) {
|
if (palette) {
|
||||||
if (SDL_SeekRW(src, fp_offset + 14 + biSize, SDL_RW_SEEK_SET) < 0) {
|
if (SDL_SeekIO(src, fp_offset + 14 + biSize, SDL_IO_SEEK_SET) < 0) {
|
||||||
SDL_Error(SDL_EFSEEK);
|
SDL_Error(SDL_EFSEEK);
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
|
@ -492,7 +492,7 @@ SDL_Surface *SDL_LoadBMP_RW(SDL_RWops *src, SDL_bool freesrc)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Read the surface pixels. Note that the bmp image is upside down */
|
/* Read the surface pixels. Note that the bmp image is upside down */
|
||||||
if (SDL_SeekRW(src, fp_offset + bfOffBits, SDL_RW_SEEK_SET) < 0) {
|
if (SDL_SeekIO(src, fp_offset + bfOffBits, SDL_IO_SEEK_SET) < 0) {
|
||||||
SDL_Error(SDL_EFSEEK);
|
SDL_Error(SDL_EFSEEK);
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
|
@ -512,7 +512,7 @@ SDL_Surface *SDL_LoadBMP_RW(SDL_RWops *src, SDL_bool freesrc)
|
||||||
bits = end - surface->pitch;
|
bits = end - surface->pitch;
|
||||||
}
|
}
|
||||||
while (bits >= top && bits < end) {
|
while (bits >= top && bits < end) {
|
||||||
if (SDL_ReadRW(src, bits, surface->pitch) != (size_t)surface->pitch) {
|
if (SDL_ReadIO(src, bits, surface->pitch) != (size_t)surface->pitch) {
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
if (biBitCount == 8 && palette && biClrUsed < (1u << biBitCount)) {
|
if (biBitCount == 8 && palette && biClrUsed < (1u << biBitCount)) {
|
||||||
|
@ -572,23 +572,23 @@ SDL_Surface *SDL_LoadBMP_RW(SDL_RWops *src, SDL_bool freesrc)
|
||||||
done:
|
done:
|
||||||
if (was_error) {
|
if (was_error) {
|
||||||
if (src) {
|
if (src) {
|
||||||
SDL_SeekRW(src, fp_offset, SDL_RW_SEEK_SET);
|
SDL_SeekIO(src, fp_offset, SDL_IO_SEEK_SET);
|
||||||
}
|
}
|
||||||
SDL_DestroySurface(surface);
|
SDL_DestroySurface(surface);
|
||||||
surface = NULL;
|
surface = NULL;
|
||||||
}
|
}
|
||||||
if (freesrc && src) {
|
if (freesrc && src) {
|
||||||
SDL_CloseRW(src);
|
SDL_CloseIO(src);
|
||||||
}
|
}
|
||||||
return surface;
|
return surface;
|
||||||
}
|
}
|
||||||
|
|
||||||
SDL_Surface *SDL_LoadBMP(const char *file)
|
SDL_Surface *SDL_LoadBMP(const char *file)
|
||||||
{
|
{
|
||||||
return SDL_LoadBMP_RW(SDL_RWFromFile(file, "rb"), 1);
|
return SDL_LoadBMP_IO(SDL_IOFromFile(file, "rb"), 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
int SDL_SaveBMP_RW(SDL_Surface *surface, SDL_RWops *dst, SDL_bool freedst)
|
int SDL_SaveBMP_IO(SDL_Surface *surface, SDL_IOStream *dst, SDL_bool freedst)
|
||||||
{
|
{
|
||||||
SDL_bool was_error = SDL_TRUE;
|
SDL_bool was_error = SDL_TRUE;
|
||||||
Sint64 fp_offset, new_offset;
|
Sint64 fp_offset, new_offset;
|
||||||
|
@ -685,7 +685,7 @@ int SDL_SaveBMP_RW(SDL_Surface *surface, SDL_RWops *dst, SDL_bool freedst)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
/* Set no error here because it may overwrite a more useful message from
|
/* Set no error here because it may overwrite a more useful message from
|
||||||
SDL_RWFromFile() if SDL_SaveBMP_RW() is called from SDL_SaveBMP(). */
|
SDL_IOFromFile() if SDL_SaveBMP_IO() is called from SDL_SaveBMP(). */
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -703,11 +703,11 @@ int SDL_SaveBMP_RW(SDL_Surface *surface, SDL_RWops *dst, SDL_bool freedst)
|
||||||
bfOffBits = 0; /* We'll write this when we're done */
|
bfOffBits = 0; /* We'll write this when we're done */
|
||||||
|
|
||||||
/* Write the BMP file header values */
|
/* Write the BMP file header values */
|
||||||
fp_offset = SDL_TellRW(dst);
|
fp_offset = SDL_TellIO(dst);
|
||||||
if (fp_offset < 0) {
|
if (fp_offset < 0) {
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
if (SDL_WriteRW(dst, magic, 2) != 2 ||
|
if (SDL_WriteIO(dst, magic, 2) != 2 ||
|
||||||
!SDL_WriteU32LE(dst, bfSize) ||
|
!SDL_WriteU32LE(dst, bfSize) ||
|
||||||
!SDL_WriteU16LE(dst, bfReserved1) ||
|
!SDL_WriteU16LE(dst, bfReserved1) ||
|
||||||
!SDL_WriteU16LE(dst, bfReserved2) ||
|
!SDL_WriteU16LE(dst, bfReserved2) ||
|
||||||
|
@ -801,14 +801,14 @@ int SDL_SaveBMP_RW(SDL_Surface *surface, SDL_RWops *dst, SDL_bool freedst)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Write the bitmap offset */
|
/* Write the bitmap offset */
|
||||||
bfOffBits = (Uint32)(SDL_TellRW(dst) - fp_offset);
|
bfOffBits = (Uint32)(SDL_TellIO(dst) - fp_offset);
|
||||||
if (SDL_SeekRW(dst, fp_offset + 10, SDL_RW_SEEK_SET) < 0) {
|
if (SDL_SeekIO(dst, fp_offset + 10, SDL_IO_SEEK_SET) < 0) {
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
if (!SDL_WriteU32LE(dst, bfOffBits)) {
|
if (!SDL_WriteU32LE(dst, bfOffBits)) {
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
if (SDL_SeekRW(dst, fp_offset + bfOffBits, SDL_RW_SEEK_SET) < 0) {
|
if (SDL_SeekIO(dst, fp_offset + bfOffBits, SDL_IO_SEEK_SET) < 0) {
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -817,7 +817,7 @@ int SDL_SaveBMP_RW(SDL_Surface *surface, SDL_RWops *dst, SDL_bool freedst)
|
||||||
pad = ((bw % 4) ? (4 - (bw % 4)) : 0);
|
pad = ((bw % 4) ? (4 - (bw % 4)) : 0);
|
||||||
while (bits > (Uint8 *)intermediate_surface->pixels) {
|
while (bits > (Uint8 *)intermediate_surface->pixels) {
|
||||||
bits -= intermediate_surface->pitch;
|
bits -= intermediate_surface->pitch;
|
||||||
if (SDL_WriteRW(dst, bits, bw) != bw) {
|
if (SDL_WriteIO(dst, bits, bw) != bw) {
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
if (pad) {
|
if (pad) {
|
||||||
|
@ -831,18 +831,18 @@ int SDL_SaveBMP_RW(SDL_Surface *surface, SDL_RWops *dst, SDL_bool freedst)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Write the BMP file size */
|
/* Write the BMP file size */
|
||||||
new_offset = SDL_TellRW(dst);
|
new_offset = SDL_TellIO(dst);
|
||||||
if (new_offset < 0) {
|
if (new_offset < 0) {
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
bfSize = (Uint32)(new_offset - fp_offset);
|
bfSize = (Uint32)(new_offset - fp_offset);
|
||||||
if (SDL_SeekRW(dst, fp_offset + 2, SDL_RW_SEEK_SET) < 0) {
|
if (SDL_SeekIO(dst, fp_offset + 2, SDL_IO_SEEK_SET) < 0) {
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
if (!SDL_WriteU32LE(dst, bfSize)) {
|
if (!SDL_WriteU32LE(dst, bfSize)) {
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
if (SDL_SeekRW(dst, fp_offset + bfSize, SDL_RW_SEEK_SET) < 0) {
|
if (SDL_SeekIO(dst, fp_offset + bfSize, SDL_IO_SEEK_SET) < 0) {
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -857,7 +857,7 @@ done:
|
||||||
SDL_DestroySurface(intermediate_surface);
|
SDL_DestroySurface(intermediate_surface);
|
||||||
}
|
}
|
||||||
if (freedst && dst) {
|
if (freedst && dst) {
|
||||||
if (SDL_CloseRW(dst) < 0) {
|
if (SDL_CloseIO(dst) < 0) {
|
||||||
was_error = SDL_TRUE;
|
was_error = SDL_TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -869,5 +869,5 @@ done:
|
||||||
|
|
||||||
int SDL_SaveBMP(SDL_Surface *surface, const char *file)
|
int SDL_SaveBMP(SDL_Surface *surface, const char *file)
|
||||||
{
|
{
|
||||||
return SDL_SaveBMP_RW(surface, SDL_RWFromFile(file, "wb"), 1);
|
return SDL_SaveBMP_IO(surface, SDL_IOFromFile(file, "wb"), 1);
|
||||||
}
|
}
|
||||||
|
|
|
@ -135,9 +135,9 @@ static SDL_Texture *CreateTexture(SDL_Renderer *renderer, unsigned char *data, u
|
||||||
{
|
{
|
||||||
SDL_Texture *texture = NULL;
|
SDL_Texture *texture = NULL;
|
||||||
SDL_Surface *surface;
|
SDL_Surface *surface;
|
||||||
SDL_RWops *src = SDL_RWFromConstMem(data, len);
|
SDL_IOStream *src = SDL_IOFromConstMem(data, len);
|
||||||
if (src) {
|
if (src) {
|
||||||
surface = SDL_LoadBMP_RW(src, SDL_TRUE);
|
surface = SDL_LoadBMP_IO(src, SDL_TRUE);
|
||||||
if (surface) {
|
if (surface) {
|
||||||
texture = SDL_CreateTextureFromSurface(renderer, surface);
|
texture = SDL_CreateTextureFromSurface(renderer, surface);
|
||||||
SDL_DestroySurface(surface);
|
SDL_DestroySurface(surface);
|
||||||
|
|
|
@ -40,7 +40,7 @@ static SDLTest_TestSuiteReference *testSuites[] = {
|
||||||
&propertiesTestSuite,
|
&propertiesTestSuite,
|
||||||
&rectTestSuite,
|
&rectTestSuite,
|
||||||
&renderTestSuite,
|
&renderTestSuite,
|
||||||
&rwopsTestSuite,
|
&iostrmTestSuite,
|
||||||
&sdltestTestSuite,
|
&sdltestTestSuite,
|
||||||
&stdlibTestSuite,
|
&stdlibTestSuite,
|
||||||
&surfaceTestSuite,
|
&surfaceTestSuite,
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Automated SDL_RWops test.
|
* Automated SDL_IOStream test.
|
||||||
*
|
*
|
||||||
* Original code written by Edgar Simo "bobbens"
|
* Original code written by Edgar Simo "bobbens"
|
||||||
* Ported by Markus Kauppila (markus.kauppila@gmail.com)
|
* Ported by Markus Kauppila (markus.kauppila@gmail.com)
|
||||||
|
@ -22,17 +22,17 @@
|
||||||
|
|
||||||
/* ================= Test Case Implementation ================== */
|
/* ================= Test Case Implementation ================== */
|
||||||
|
|
||||||
static const char *RWopsReadTestFilename = "rwops_read";
|
static const char *IOStreamReadTestFilename = "iostrm_read";
|
||||||
static const char *RWopsWriteTestFilename = "rwops_write";
|
static const char *IOStreamWriteTestFilename = "iostrm_write";
|
||||||
static const char *RWopsAlphabetFilename = "rwops_alphabet";
|
static const char *IOStreamAlphabetFilename = "iostrm_alphabet";
|
||||||
|
|
||||||
static const char RWopsHelloWorldTestString[] = "Hello World!";
|
static const char IOStreamHelloWorldTestString[] = "Hello World!";
|
||||||
static const char RWopsHelloWorldCompString[] = "Hello World!";
|
static const char IOStreamHelloWorldCompString[] = "Hello World!";
|
||||||
static const char RWopsAlphabetString[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
static const char IOStreamAlphabetString[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
||||||
|
|
||||||
/* Fixture */
|
/* Fixture */
|
||||||
|
|
||||||
static void RWopsSetUp(void *arg)
|
static void IOStreamSetUp(void *arg)
|
||||||
{
|
{
|
||||||
size_t fileLen;
|
size_t fileLen;
|
||||||
FILE *handle;
|
FILE *handle;
|
||||||
|
@ -40,34 +40,34 @@ static void RWopsSetUp(void *arg)
|
||||||
int result;
|
int result;
|
||||||
|
|
||||||
/* Clean up from previous runs (if any); ignore errors */
|
/* Clean up from previous runs (if any); ignore errors */
|
||||||
(void)remove(RWopsReadTestFilename);
|
(void)remove(IOStreamReadTestFilename);
|
||||||
(void)remove(RWopsWriteTestFilename);
|
(void)remove(IOStreamWriteTestFilename);
|
||||||
(void)remove(RWopsAlphabetFilename);
|
(void)remove(IOStreamAlphabetFilename);
|
||||||
|
|
||||||
/* Create a test file */
|
/* Create a test file */
|
||||||
handle = fopen(RWopsReadTestFilename, "w");
|
handle = fopen(IOStreamReadTestFilename, "w");
|
||||||
SDLTest_AssertCheck(handle != NULL, "Verify creation of file '%s' returned non NULL handle", RWopsReadTestFilename);
|
SDLTest_AssertCheck(handle != NULL, "Verify creation of file '%s' returned non NULL handle", IOStreamReadTestFilename);
|
||||||
if (handle == NULL) {
|
if (handle == NULL) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Write some known text into it */
|
/* Write some known text into it */
|
||||||
fileLen = SDL_strlen(RWopsHelloWorldTestString);
|
fileLen = SDL_strlen(IOStreamHelloWorldTestString);
|
||||||
writtenLen = fwrite(RWopsHelloWorldTestString, 1, fileLen, handle);
|
writtenLen = fwrite(IOStreamHelloWorldTestString, 1, fileLen, handle);
|
||||||
SDLTest_AssertCheck(fileLen == writtenLen, "Verify number of written bytes, expected %i, got %i", (int)fileLen, (int)writtenLen);
|
SDLTest_AssertCheck(fileLen == writtenLen, "Verify number of written bytes, expected %i, got %i", (int)fileLen, (int)writtenLen);
|
||||||
result = fclose(handle);
|
result = fclose(handle);
|
||||||
SDLTest_AssertCheck(result == 0, "Verify result from fclose, expected 0, got %i", result);
|
SDLTest_AssertCheck(result == 0, "Verify result from fclose, expected 0, got %i", result);
|
||||||
|
|
||||||
/* Create a second test file */
|
/* Create a second test file */
|
||||||
handle = fopen(RWopsAlphabetFilename, "w");
|
handle = fopen(IOStreamAlphabetFilename, "w");
|
||||||
SDLTest_AssertCheck(handle != NULL, "Verify creation of file '%s' returned non NULL handle", RWopsAlphabetFilename);
|
SDLTest_AssertCheck(handle != NULL, "Verify creation of file '%s' returned non NULL handle", IOStreamAlphabetFilename);
|
||||||
if (handle == NULL) {
|
if (handle == NULL) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Write alphabet text into it */
|
/* Write alphabet text into it */
|
||||||
fileLen = SDL_strlen(RWopsAlphabetString);
|
fileLen = SDL_strlen(IOStreamAlphabetString);
|
||||||
writtenLen = fwrite(RWopsAlphabetString, 1, fileLen, handle);
|
writtenLen = fwrite(IOStreamAlphabetString, 1, fileLen, handle);
|
||||||
SDLTest_AssertCheck(fileLen == writtenLen, "Verify number of written bytes, expected %i, got %i", (int)fileLen, (int)writtenLen);
|
SDLTest_AssertCheck(fileLen == writtenLen, "Verify number of written bytes, expected %i, got %i", (int)fileLen, (int)writtenLen);
|
||||||
result = fclose(handle);
|
result = fclose(handle);
|
||||||
SDLTest_AssertCheck(result == 0, "Verify result from fclose, expected 0, got %i", result);
|
SDLTest_AssertCheck(result == 0, "Verify result from fclose, expected 0, got %i", result);
|
||||||
|
@ -75,16 +75,16 @@ static void RWopsSetUp(void *arg)
|
||||||
SDLTest_AssertPass("Creation of test file completed");
|
SDLTest_AssertPass("Creation of test file completed");
|
||||||
}
|
}
|
||||||
|
|
||||||
static void RWopsTearDown(void *arg)
|
static void IOStreamTearDown(void *arg)
|
||||||
{
|
{
|
||||||
int result;
|
int result;
|
||||||
|
|
||||||
/* Remove the created files to clean up; ignore errors for write filename */
|
/* Remove the created files to clean up; ignore errors for write filename */
|
||||||
result = remove(RWopsReadTestFilename);
|
result = remove(IOStreamReadTestFilename);
|
||||||
SDLTest_AssertCheck(result == 0, "Verify result from remove(%s), expected 0, got %i", RWopsReadTestFilename, result);
|
SDLTest_AssertCheck(result == 0, "Verify result from remove(%s), expected 0, got %i", IOStreamReadTestFilename, result);
|
||||||
(void)remove(RWopsWriteTestFilename);
|
(void)remove(IOStreamWriteTestFilename);
|
||||||
result = remove(RWopsAlphabetFilename);
|
result = remove(IOStreamAlphabetFilename);
|
||||||
SDLTest_AssertCheck(result == 0, "Verify result from remove(%s), expected 0, got %i", RWopsAlphabetFilename, result);
|
SDLTest_AssertCheck(result == 0, "Verify result from remove(%s), expected 0, got %i", IOStreamAlphabetFilename, result);
|
||||||
|
|
||||||
SDLTest_AssertPass("Cleanup of test files completed");
|
SDLTest_AssertPass("Cleanup of test files completed");
|
||||||
}
|
}
|
||||||
|
@ -92,12 +92,12 @@ static void RWopsTearDown(void *arg)
|
||||||
/**
|
/**
|
||||||
* Makes sure parameters work properly. Local helper function.
|
* Makes sure parameters work properly. Local helper function.
|
||||||
*
|
*
|
||||||
* \sa SDL_SeekRW
|
* \sa SDL_SeekIO
|
||||||
* \sa SDL_ReadRW
|
* \sa SDL_ReadIO
|
||||||
*/
|
*/
|
||||||
static void testGenericRWopsValidations(SDL_RWops *rw, SDL_bool write)
|
static void testGenericIOStreamValidations(SDL_IOStream *rw, SDL_bool write)
|
||||||
{
|
{
|
||||||
char buf[sizeof(RWopsHelloWorldTestString)];
|
char buf[sizeof(IOStreamHelloWorldTestString)];
|
||||||
Sint64 i;
|
Sint64 i;
|
||||||
size_t s;
|
size_t s;
|
||||||
int seekPos = SDLTest_RandomIntegerInRange(4, 8);
|
int seekPos = SDLTest_RandomIntegerInRange(4, 8);
|
||||||
|
@ -106,140 +106,140 @@ static void testGenericRWopsValidations(SDL_RWops *rw, SDL_bool write)
|
||||||
SDL_zeroa(buf);
|
SDL_zeroa(buf);
|
||||||
|
|
||||||
/* Set to start. */
|
/* Set to start. */
|
||||||
i = SDL_SeekRW(rw, 0, SDL_RW_SEEK_SET);
|
i = SDL_SeekIO(rw, 0, SDL_IO_SEEK_SET);
|
||||||
SDLTest_AssertPass("Call to SDL_SeekRW succeeded");
|
SDLTest_AssertPass("Call to SDL_SeekIO succeeded");
|
||||||
SDLTest_AssertCheck(i == (Sint64)0, "Verify seek to 0 with SDL_SeekRW (SDL_RW_SEEK_SET), expected 0, got %" SDL_PRIs64, i);
|
SDLTest_AssertCheck(i == (Sint64)0, "Verify seek to 0 with SDL_SeekIO (SDL_IO_SEEK_SET), expected 0, got %" SDL_PRIs64, i);
|
||||||
|
|
||||||
/* Test write */
|
/* Test write */
|
||||||
s = SDL_WriteRW(rw, RWopsHelloWorldTestString, sizeof(RWopsHelloWorldTestString) - 1);
|
s = SDL_WriteIO(rw, IOStreamHelloWorldTestString, sizeof(IOStreamHelloWorldTestString) - 1);
|
||||||
SDLTest_AssertPass("Call to SDL_WriteRW succeeded");
|
SDLTest_AssertPass("Call to SDL_WriteIO succeeded");
|
||||||
if (write) {
|
if (write) {
|
||||||
SDLTest_AssertCheck(s == sizeof(RWopsHelloWorldTestString) - 1, "Verify result of writing with SDL_WriteRW, expected %i, got %i", (int)sizeof(RWopsHelloWorldTestString) - 1, (int)s);
|
SDLTest_AssertCheck(s == sizeof(IOStreamHelloWorldTestString) - 1, "Verify result of writing with SDL_WriteIO, expected %i, got %i", (int)sizeof(IOStreamHelloWorldTestString) - 1, (int)s);
|
||||||
} else {
|
} else {
|
||||||
SDLTest_AssertCheck(s == 0, "Verify result of writing with SDL_WriteRW, expected: 0, got %i", (int)s);
|
SDLTest_AssertCheck(s == 0, "Verify result of writing with SDL_WriteIO, expected: 0, got %i", (int)s);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Test seek to random position */
|
/* Test seek to random position */
|
||||||
i = SDL_SeekRW(rw, seekPos, SDL_RW_SEEK_SET);
|
i = SDL_SeekIO(rw, seekPos, SDL_IO_SEEK_SET);
|
||||||
SDLTest_AssertPass("Call to SDL_SeekRW succeeded");
|
SDLTest_AssertPass("Call to SDL_SeekIO succeeded");
|
||||||
SDLTest_AssertCheck(i == (Sint64)seekPos, "Verify seek to %i with SDL_SeekRW (SDL_RW_SEEK_SET), expected %i, got %" SDL_PRIs64, seekPos, seekPos, i);
|
SDLTest_AssertCheck(i == (Sint64)seekPos, "Verify seek to %i with SDL_SeekIO (SDL_IO_SEEK_SET), expected %i, got %" SDL_PRIs64, seekPos, seekPos, i);
|
||||||
|
|
||||||
/* Test seek back to start */
|
/* Test seek back to start */
|
||||||
i = SDL_SeekRW(rw, 0, SDL_RW_SEEK_SET);
|
i = SDL_SeekIO(rw, 0, SDL_IO_SEEK_SET);
|
||||||
SDLTest_AssertPass("Call to SDL_SeekRW succeeded");
|
SDLTest_AssertPass("Call to SDL_SeekIO succeeded");
|
||||||
SDLTest_AssertCheck(i == (Sint64)0, "Verify seek to 0 with SDL_SeekRW (SDL_RW_SEEK_SET), expected 0, got %" SDL_PRIs64, i);
|
SDLTest_AssertCheck(i == (Sint64)0, "Verify seek to 0 with SDL_SeekIO (SDL_IO_SEEK_SET), expected 0, got %" SDL_PRIs64, i);
|
||||||
|
|
||||||
/* Test read */
|
/* Test read */
|
||||||
s = SDL_ReadRW(rw, buf, sizeof(RWopsHelloWorldTestString) - 1);
|
s = SDL_ReadIO(rw, buf, sizeof(IOStreamHelloWorldTestString) - 1);
|
||||||
SDLTest_AssertPass("Call to SDL_ReadRW succeeded");
|
SDLTest_AssertPass("Call to SDL_ReadIO succeeded");
|
||||||
SDLTest_AssertCheck(
|
SDLTest_AssertCheck(
|
||||||
s == (sizeof(RWopsHelloWorldTestString) - 1),
|
s == (sizeof(IOStreamHelloWorldTestString) - 1),
|
||||||
"Verify result from SDL_ReadRW, expected %i, got %i",
|
"Verify result from SDL_ReadIO, expected %i, got %i",
|
||||||
(int)(sizeof(RWopsHelloWorldTestString) - 1),
|
(int)(sizeof(IOStreamHelloWorldTestString) - 1),
|
||||||
(int)s);
|
(int)s);
|
||||||
SDLTest_AssertCheck(
|
SDLTest_AssertCheck(
|
||||||
SDL_memcmp(buf, RWopsHelloWorldTestString, sizeof(RWopsHelloWorldTestString) - 1) == 0,
|
SDL_memcmp(buf, IOStreamHelloWorldTestString, sizeof(IOStreamHelloWorldTestString) - 1) == 0,
|
||||||
"Verify read bytes match expected string, expected '%s', got '%s'", RWopsHelloWorldTestString, buf);
|
"Verify read bytes match expected string, expected '%s', got '%s'", IOStreamHelloWorldTestString, buf);
|
||||||
|
|
||||||
/* Test seek back to start */
|
/* Test seek back to start */
|
||||||
i = SDL_SeekRW(rw, 0, SDL_RW_SEEK_SET);
|
i = SDL_SeekIO(rw, 0, SDL_IO_SEEK_SET);
|
||||||
SDLTest_AssertPass("Call to SDL_SeekRW succeeded");
|
SDLTest_AssertPass("Call to SDL_SeekIO succeeded");
|
||||||
SDLTest_AssertCheck(i == (Sint64)0, "Verify seek to 0 with SDL_SeekRW (SDL_RW_SEEK_SET), expected 0, got %" SDL_PRIs64, i);
|
SDLTest_AssertCheck(i == (Sint64)0, "Verify seek to 0 with SDL_SeekIO (SDL_IO_SEEK_SET), expected 0, got %" SDL_PRIs64, i);
|
||||||
|
|
||||||
/* Test printf */
|
/* Test printf */
|
||||||
s = SDL_RWprintf(rw, "%s", RWopsHelloWorldTestString);
|
s = SDL_IOprintf(rw, "%s", IOStreamHelloWorldTestString);
|
||||||
SDLTest_AssertPass("Call to SDL_RWprintf succeeded");
|
SDLTest_AssertPass("Call to SDL_IOprintf succeeded");
|
||||||
if (write) {
|
if (write) {
|
||||||
SDLTest_AssertCheck(s == sizeof(RWopsHelloWorldTestString) - 1, "Verify result of writing with SDL_RWprintf, expected %i, got %i", (int)sizeof(RWopsHelloWorldTestString) - 1, (int)s);
|
SDLTest_AssertCheck(s == sizeof(IOStreamHelloWorldTestString) - 1, "Verify result of writing with SDL_IOprintf, expected %i, got %i", (int)sizeof(IOStreamHelloWorldTestString) - 1, (int)s);
|
||||||
} else {
|
} else {
|
||||||
SDLTest_AssertCheck(s == 0, "Verify result of writing with SDL_WriteRW, expected: 0, got %i", (int)s);
|
SDLTest_AssertCheck(s == 0, "Verify result of writing with SDL_WriteIO, expected: 0, got %i", (int)s);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Test seek back to start */
|
/* Test seek back to start */
|
||||||
i = SDL_SeekRW(rw, 0, SDL_RW_SEEK_SET);
|
i = SDL_SeekIO(rw, 0, SDL_IO_SEEK_SET);
|
||||||
SDLTest_AssertPass("Call to SDL_SeekRW succeeded");
|
SDLTest_AssertPass("Call to SDL_SeekIO succeeded");
|
||||||
SDLTest_AssertCheck(i == (Sint64)0, "Verify seek to 0 with SDL_SeekRW (SDL_RW_SEEK_SET), expected 0, got %" SDL_PRIs64, i);
|
SDLTest_AssertCheck(i == (Sint64)0, "Verify seek to 0 with SDL_SeekIO (SDL_IO_SEEK_SET), expected 0, got %" SDL_PRIs64, i);
|
||||||
|
|
||||||
/* Test read */
|
/* Test read */
|
||||||
s = SDL_ReadRW(rw, buf, sizeof(RWopsHelloWorldTestString) - 1);
|
s = SDL_ReadIO(rw, buf, sizeof(IOStreamHelloWorldTestString) - 1);
|
||||||
SDLTest_AssertPass("Call to SDL_ReadRW succeeded");
|
SDLTest_AssertPass("Call to SDL_ReadIO succeeded");
|
||||||
SDLTest_AssertCheck(
|
SDLTest_AssertCheck(
|
||||||
s == (sizeof(RWopsHelloWorldTestString) - 1),
|
s == (sizeof(IOStreamHelloWorldTestString) - 1),
|
||||||
"Verify result from SDL_ReadRW, expected %i, got %i",
|
"Verify result from SDL_ReadIO, expected %i, got %i",
|
||||||
(int)(sizeof(RWopsHelloWorldTestString) - 1),
|
(int)(sizeof(IOStreamHelloWorldTestString) - 1),
|
||||||
(int)s);
|
(int)s);
|
||||||
SDLTest_AssertCheck(
|
SDLTest_AssertCheck(
|
||||||
SDL_memcmp(buf, RWopsHelloWorldTestString, sizeof(RWopsHelloWorldTestString) - 1) == 0,
|
SDL_memcmp(buf, IOStreamHelloWorldTestString, sizeof(IOStreamHelloWorldTestString) - 1) == 0,
|
||||||
"Verify read bytes match expected string, expected '%s', got '%s'", RWopsHelloWorldTestString, buf);
|
"Verify read bytes match expected string, expected '%s', got '%s'", IOStreamHelloWorldTestString, buf);
|
||||||
|
|
||||||
/* More seek tests. */
|
/* More seek tests. */
|
||||||
i = SDL_SeekRW(rw, -4, SDL_RW_SEEK_CUR);
|
i = SDL_SeekIO(rw, -4, SDL_IO_SEEK_CUR);
|
||||||
SDLTest_AssertPass("Call to SDL_SeekRW(...,-4,SDL_RW_SEEK_CUR) succeeded");
|
SDLTest_AssertPass("Call to SDL_SeekIO(...,-4,SDL_IO_SEEK_CUR) succeeded");
|
||||||
SDLTest_AssertCheck(
|
SDLTest_AssertCheck(
|
||||||
i == (Sint64)(sizeof(RWopsHelloWorldTestString) - 5),
|
i == (Sint64)(sizeof(IOStreamHelloWorldTestString) - 5),
|
||||||
"Verify seek to -4 with SDL_SeekRW (SDL_RW_SEEK_CUR), expected %i, got %i",
|
"Verify seek to -4 with SDL_SeekIO (SDL_IO_SEEK_CUR), expected %i, got %i",
|
||||||
(int)(sizeof(RWopsHelloWorldTestString) - 5),
|
(int)(sizeof(IOStreamHelloWorldTestString) - 5),
|
||||||
(int)i);
|
(int)i);
|
||||||
|
|
||||||
i = SDL_SeekRW(rw, -1, SDL_RW_SEEK_END);
|
i = SDL_SeekIO(rw, -1, SDL_IO_SEEK_END);
|
||||||
SDLTest_AssertPass("Call to SDL_SeekRW(...,-1,SDL_RW_SEEK_END) succeeded");
|
SDLTest_AssertPass("Call to SDL_SeekIO(...,-1,SDL_IO_SEEK_END) succeeded");
|
||||||
SDLTest_AssertCheck(
|
SDLTest_AssertCheck(
|
||||||
i == (Sint64)(sizeof(RWopsHelloWorldTestString) - 2),
|
i == (Sint64)(sizeof(IOStreamHelloWorldTestString) - 2),
|
||||||
"Verify seek to -1 with SDL_SeekRW (SDL_RW_SEEK_END), expected %i, got %i",
|
"Verify seek to -1 with SDL_SeekIO (SDL_IO_SEEK_END), expected %i, got %i",
|
||||||
(int)(sizeof(RWopsHelloWorldTestString) - 2),
|
(int)(sizeof(IOStreamHelloWorldTestString) - 2),
|
||||||
(int)i);
|
(int)i);
|
||||||
|
|
||||||
/* Invalid whence seek */
|
/* Invalid whence seek */
|
||||||
i = SDL_SeekRW(rw, 0, 999);
|
i = SDL_SeekIO(rw, 0, 999);
|
||||||
SDLTest_AssertPass("Call to SDL_SeekRW(...,0,invalid_whence) succeeded");
|
SDLTest_AssertPass("Call to SDL_SeekIO(...,0,invalid_whence) succeeded");
|
||||||
SDLTest_AssertCheck(
|
SDLTest_AssertCheck(
|
||||||
i == (Sint64)(-1),
|
i == (Sint64)(-1),
|
||||||
"Verify seek with SDL_SeekRW (invalid_whence); expected: -1, got %i",
|
"Verify seek with SDL_SeekIO (invalid_whence); expected: -1, got %i",
|
||||||
(int)i);
|
(int)i);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Negative test for SDL_RWFromFile parameters
|
* Negative test for SDL_IOFromFile parameters
|
||||||
*
|
*
|
||||||
* \sa SDL_RWFromFile
|
* \sa SDL_IOFromFile
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
static int rwops_testParamNegative(void *arg)
|
static int iostrm_testParamNegative(void *arg)
|
||||||
{
|
{
|
||||||
SDL_RWops *rwops;
|
SDL_IOStream *iostrm;
|
||||||
|
|
||||||
/* These should all fail. */
|
/* These should all fail. */
|
||||||
rwops = SDL_RWFromFile(NULL, NULL);
|
iostrm = SDL_IOFromFile(NULL, NULL);
|
||||||
SDLTest_AssertPass("Call to SDL_RWFromFile(NULL, NULL) succeeded");
|
SDLTest_AssertPass("Call to SDL_IOFromFile(NULL, NULL) succeeded");
|
||||||
SDLTest_AssertCheck(rwops == NULL, "Verify SDL_RWFromFile(NULL, NULL) returns NULL");
|
SDLTest_AssertCheck(iostrm == NULL, "Verify SDL_IOFromFile(NULL, NULL) returns NULL");
|
||||||
|
|
||||||
rwops = SDL_RWFromFile(NULL, "ab+");
|
iostrm = SDL_IOFromFile(NULL, "ab+");
|
||||||
SDLTest_AssertPass("Call to SDL_RWFromFile(NULL, \"ab+\") succeeded");
|
SDLTest_AssertPass("Call to SDL_IOFromFile(NULL, \"ab+\") succeeded");
|
||||||
SDLTest_AssertCheck(rwops == NULL, "Verify SDL_RWFromFile(NULL, \"ab+\") returns NULL");
|
SDLTest_AssertCheck(iostrm == NULL, "Verify SDL_IOFromFile(NULL, \"ab+\") returns NULL");
|
||||||
|
|
||||||
rwops = SDL_RWFromFile(NULL, "sldfkjsldkfj");
|
iostrm = SDL_IOFromFile(NULL, "sldfkjsldkfj");
|
||||||
SDLTest_AssertPass("Call to SDL_RWFromFile(NULL, \"sldfkjsldkfj\") succeeded");
|
SDLTest_AssertPass("Call to SDL_IOFromFile(NULL, \"sldfkjsldkfj\") succeeded");
|
||||||
SDLTest_AssertCheck(rwops == NULL, "Verify SDL_RWFromFile(NULL, \"sldfkjsldkfj\") returns NULL");
|
SDLTest_AssertCheck(iostrm == NULL, "Verify SDL_IOFromFile(NULL, \"sldfkjsldkfj\") returns NULL");
|
||||||
|
|
||||||
rwops = SDL_RWFromFile("something", "");
|
iostrm = SDL_IOFromFile("something", "");
|
||||||
SDLTest_AssertPass("Call to SDL_RWFromFile(\"something\", \"\") succeeded");
|
SDLTest_AssertPass("Call to SDL_IOFromFile(\"something\", \"\") succeeded");
|
||||||
SDLTest_AssertCheck(rwops == NULL, "Verify SDL_RWFromFile(\"something\", \"\") returns NULL");
|
SDLTest_AssertCheck(iostrm == NULL, "Verify SDL_IOFromFile(\"something\", \"\") returns NULL");
|
||||||
|
|
||||||
rwops = SDL_RWFromFile("something", NULL);
|
iostrm = SDL_IOFromFile("something", NULL);
|
||||||
SDLTest_AssertPass("Call to SDL_RWFromFile(\"something\", NULL) succeeded");
|
SDLTest_AssertPass("Call to SDL_IOFromFile(\"something\", NULL) succeeded");
|
||||||
SDLTest_AssertCheck(rwops == NULL, "Verify SDL_RWFromFile(\"something\", NULL) returns NULL");
|
SDLTest_AssertCheck(iostrm == NULL, "Verify SDL_IOFromFile(\"something\", NULL) returns NULL");
|
||||||
|
|
||||||
rwops = SDL_RWFromMem(NULL, 10);
|
iostrm = SDL_IOFromMem(NULL, 10);
|
||||||
SDLTest_AssertPass("Call to SDL_RWFromMem(NULL, 10) succeeded");
|
SDLTest_AssertPass("Call to SDL_IOFromMem(NULL, 10) succeeded");
|
||||||
SDLTest_AssertCheck(rwops == NULL, "Verify SDL_RWFromMem(NULL, 10) returns NULL");
|
SDLTest_AssertCheck(iostrm == NULL, "Verify SDL_IOFromMem(NULL, 10) returns NULL");
|
||||||
|
|
||||||
rwops = SDL_RWFromMem((void *)RWopsAlphabetString, 0);
|
iostrm = SDL_IOFromMem((void *)IOStreamAlphabetString, 0);
|
||||||
SDLTest_AssertPass("Call to SDL_RWFromMem(data, 0) succeeded");
|
SDLTest_AssertPass("Call to SDL_IOFromMem(data, 0) succeeded");
|
||||||
SDLTest_AssertCheck(rwops == NULL, "Verify SDL_RWFromMem(data, 0) returns NULL");
|
SDLTest_AssertCheck(iostrm == NULL, "Verify SDL_IOFromMem(data, 0) returns NULL");
|
||||||
|
|
||||||
rwops = SDL_RWFromConstMem((const void *)RWopsAlphabetString, 0);
|
iostrm = SDL_IOFromConstMem((const void *)IOStreamAlphabetString, 0);
|
||||||
SDLTest_AssertPass("Call to SDL_RWFromConstMem(data, 0) succeeded");
|
SDLTest_AssertPass("Call to SDL_IOFromConstMem(data, 0) succeeded");
|
||||||
SDLTest_AssertCheck(rwops == NULL, "Verify SDL_RWFromConstMem(data, 0) returns NULL");
|
SDLTest_AssertCheck(iostrm == NULL, "Verify SDL_IOFromConstMem(data, 0) returns NULL");
|
||||||
|
|
||||||
return TEST_COMPLETED;
|
return TEST_COMPLETED;
|
||||||
}
|
}
|
||||||
|
@ -247,22 +247,22 @@ static int rwops_testParamNegative(void *arg)
|
||||||
/**
|
/**
|
||||||
* Tests opening from memory.
|
* Tests opening from memory.
|
||||||
*
|
*
|
||||||
* \sa SDL_RWFromMem
|
* \sa SDL_IOFromMem
|
||||||
* \sa SDL_RWClose
|
* \sa SDL_CloseIO
|
||||||
*/
|
*/
|
||||||
static int rwops_testMem(void *arg)
|
static int iostrm_testMem(void *arg)
|
||||||
{
|
{
|
||||||
char mem[sizeof(RWopsHelloWorldTestString)];
|
char mem[sizeof(IOStreamHelloWorldTestString)];
|
||||||
SDL_RWops *rw;
|
SDL_IOStream *rw;
|
||||||
int result;
|
int result;
|
||||||
|
|
||||||
/* Clear buffer */
|
/* Clear buffer */
|
||||||
SDL_zeroa(mem);
|
SDL_zeroa(mem);
|
||||||
|
|
||||||
/* Open */
|
/* Open */
|
||||||
rw = SDL_RWFromMem(mem, sizeof(RWopsHelloWorldTestString) - 1);
|
rw = SDL_IOFromMem(mem, sizeof(IOStreamHelloWorldTestString) - 1);
|
||||||
SDLTest_AssertPass("Call to SDL_RWFromMem() succeeded");
|
SDLTest_AssertPass("Call to SDL_IOFromMem() succeeded");
|
||||||
SDLTest_AssertCheck(rw != NULL, "Verify opening memory with SDL_RWFromMem does not return NULL");
|
SDLTest_AssertCheck(rw != NULL, "Verify opening memory with SDL_IOFromMem does not return NULL");
|
||||||
|
|
||||||
/* Bail out if NULL */
|
/* Bail out if NULL */
|
||||||
if (rw == NULL) {
|
if (rw == NULL) {
|
||||||
|
@ -270,11 +270,11 @@ static int rwops_testMem(void *arg)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Run generic tests */
|
/* Run generic tests */
|
||||||
testGenericRWopsValidations(rw, SDL_TRUE);
|
testGenericIOStreamValidations(rw, SDL_TRUE);
|
||||||
|
|
||||||
/* Close */
|
/* Close */
|
||||||
result = SDL_CloseRW(rw);
|
result = SDL_CloseIO(rw);
|
||||||
SDLTest_AssertPass("Call to SDL_CloseRW() succeeded");
|
SDLTest_AssertPass("Call to SDL_CloseIO() succeeded");
|
||||||
SDLTest_AssertCheck(result == 0, "Verify result value is 0; got: %d", result);
|
SDLTest_AssertCheck(result == 0, "Verify result value is 0; got: %d", result);
|
||||||
|
|
||||||
return TEST_COMPLETED;
|
return TEST_COMPLETED;
|
||||||
|
@ -283,18 +283,18 @@ static int rwops_testMem(void *arg)
|
||||||
/**
|
/**
|
||||||
* Tests opening from memory.
|
* Tests opening from memory.
|
||||||
*
|
*
|
||||||
* \sa SDL_RWFromConstMem
|
* \sa SDL_IOFromConstMem
|
||||||
* \sa SDL_RWClose
|
* \sa SDL_CloseIO
|
||||||
*/
|
*/
|
||||||
static int rwops_testConstMem(void *arg)
|
static int iostrm_testConstMem(void *arg)
|
||||||
{
|
{
|
||||||
SDL_RWops *rw;
|
SDL_IOStream *rw;
|
||||||
int result;
|
int result;
|
||||||
|
|
||||||
/* Open handle */
|
/* Open handle */
|
||||||
rw = SDL_RWFromConstMem(RWopsHelloWorldCompString, sizeof(RWopsHelloWorldCompString) - 1);
|
rw = SDL_IOFromConstMem(IOStreamHelloWorldCompString, sizeof(IOStreamHelloWorldCompString) - 1);
|
||||||
SDLTest_AssertPass("Call to SDL_RWFromConstMem() succeeded");
|
SDLTest_AssertPass("Call to SDL_IOFromConstMem() succeeded");
|
||||||
SDLTest_AssertCheck(rw != NULL, "Verify opening memory with SDL_RWFromConstMem does not return NULL");
|
SDLTest_AssertCheck(rw != NULL, "Verify opening memory with SDL_IOFromConstMem does not return NULL");
|
||||||
|
|
||||||
/* Bail out if NULL */
|
/* Bail out if NULL */
|
||||||
if (rw == NULL) {
|
if (rw == NULL) {
|
||||||
|
@ -302,11 +302,11 @@ static int rwops_testConstMem(void *arg)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Run generic tests */
|
/* Run generic tests */
|
||||||
testGenericRWopsValidations(rw, SDL_FALSE);
|
testGenericIOStreamValidations(rw, SDL_FALSE);
|
||||||
|
|
||||||
/* Close handle */
|
/* Close handle */
|
||||||
result = SDL_CloseRW(rw);
|
result = SDL_CloseIO(rw);
|
||||||
SDLTest_AssertPass("Call to SDL_CloseRW() succeeded");
|
SDLTest_AssertPass("Call to SDL_CloseIO() succeeded");
|
||||||
SDLTest_AssertCheck(result == 0, "Verify result value is 0; got: %d", result);
|
SDLTest_AssertCheck(result == 0, "Verify result value is 0; got: %d", result);
|
||||||
|
|
||||||
return TEST_COMPLETED;
|
return TEST_COMPLETED;
|
||||||
|
@ -315,18 +315,18 @@ static int rwops_testConstMem(void *arg)
|
||||||
/**
|
/**
|
||||||
* Tests reading from file.
|
* Tests reading from file.
|
||||||
*
|
*
|
||||||
* \sa SDL_RWFromFile
|
* \sa SDL_IOFromFile
|
||||||
* \sa SDL_RWClose
|
* \sa SDL_CloseIO
|
||||||
*/
|
*/
|
||||||
static int rwops_testFileRead(void *arg)
|
static int iostrm_testFileRead(void *arg)
|
||||||
{
|
{
|
||||||
SDL_RWops *rw;
|
SDL_IOStream *rw;
|
||||||
int result;
|
int result;
|
||||||
|
|
||||||
/* Read test. */
|
/* Read test. */
|
||||||
rw = SDL_RWFromFile(RWopsReadTestFilename, "r");
|
rw = SDL_IOFromFile(IOStreamReadTestFilename, "r");
|
||||||
SDLTest_AssertPass("Call to SDL_RWFromFile(..,\"r\") succeeded");
|
SDLTest_AssertPass("Call to SDL_IOFromFile(..,\"r\") succeeded");
|
||||||
SDLTest_AssertCheck(rw != NULL, "Verify opening file with SDL_RWFromFile in read mode does not return NULL");
|
SDLTest_AssertCheck(rw != NULL, "Verify opening file with SDL_IOFromFile in read mode does not return NULL");
|
||||||
|
|
||||||
/* Bail out if NULL */
|
/* Bail out if NULL */
|
||||||
if (rw == NULL) {
|
if (rw == NULL) {
|
||||||
|
@ -334,11 +334,11 @@ static int rwops_testFileRead(void *arg)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Run generic tests */
|
/* Run generic tests */
|
||||||
testGenericRWopsValidations(rw, SDL_FALSE);
|
testGenericIOStreamValidations(rw, SDL_FALSE);
|
||||||
|
|
||||||
/* Close handle */
|
/* Close handle */
|
||||||
result = SDL_CloseRW(rw);
|
result = SDL_CloseIO(rw);
|
||||||
SDLTest_AssertPass("Call to SDL_CloseRW() succeeded");
|
SDLTest_AssertPass("Call to SDL_CloseIO() succeeded");
|
||||||
SDLTest_AssertCheck(result == 0, "Verify result value is 0; got: %d", result);
|
SDLTest_AssertCheck(result == 0, "Verify result value is 0; got: %d", result);
|
||||||
|
|
||||||
return TEST_COMPLETED;
|
return TEST_COMPLETED;
|
||||||
|
@ -347,18 +347,18 @@ static int rwops_testFileRead(void *arg)
|
||||||
/**
|
/**
|
||||||
* Tests writing from file.
|
* Tests writing from file.
|
||||||
*
|
*
|
||||||
* \sa SDL_RWFromFile
|
* \sa SDL_IOFromFile
|
||||||
* \sa SDL_RWClose
|
* \sa SDL_CloseIO
|
||||||
*/
|
*/
|
||||||
static int rwops_testFileWrite(void *arg)
|
static int iostrm_testFileWrite(void *arg)
|
||||||
{
|
{
|
||||||
SDL_RWops *rw;
|
SDL_IOStream *rw;
|
||||||
int result;
|
int result;
|
||||||
|
|
||||||
/* Write test. */
|
/* Write test. */
|
||||||
rw = SDL_RWFromFile(RWopsWriteTestFilename, "w+");
|
rw = SDL_IOFromFile(IOStreamWriteTestFilename, "w+");
|
||||||
SDLTest_AssertPass("Call to SDL_RWFromFile(..,\"w+\") succeeded");
|
SDLTest_AssertPass("Call to SDL_IOFromFile(..,\"w+\") succeeded");
|
||||||
SDLTest_AssertCheck(rw != NULL, "Verify opening file with SDL_RWFromFile in write mode does not return NULL");
|
SDLTest_AssertCheck(rw != NULL, "Verify opening file with SDL_IOFromFile in write mode does not return NULL");
|
||||||
|
|
||||||
/* Bail out if NULL */
|
/* Bail out if NULL */
|
||||||
if (rw == NULL) {
|
if (rw == NULL) {
|
||||||
|
@ -366,11 +366,11 @@ static int rwops_testFileWrite(void *arg)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Run generic tests */
|
/* Run generic tests */
|
||||||
testGenericRWopsValidations(rw, SDL_TRUE);
|
testGenericIOStreamValidations(rw, SDL_TRUE);
|
||||||
|
|
||||||
/* Close handle */
|
/* Close handle */
|
||||||
result = SDL_CloseRW(rw);
|
result = SDL_CloseIO(rw);
|
||||||
SDLTest_AssertPass("Call to SDL_CloseRW() succeeded");
|
SDLTest_AssertPass("Call to SDL_CloseIO() succeeded");
|
||||||
SDLTest_AssertCheck(result == 0, "Verify result value is 0; got: %d", result);
|
SDLTest_AssertCheck(result == 0, "Verify result value is 0; got: %d", result);
|
||||||
|
|
||||||
return TEST_COMPLETED;
|
return TEST_COMPLETED;
|
||||||
|
@ -379,26 +379,26 @@ static int rwops_testFileWrite(void *arg)
|
||||||
/**
|
/**
|
||||||
* Tests alloc and free RW context.
|
* Tests alloc and free RW context.
|
||||||
*
|
*
|
||||||
* \sa SDL_OpenRW
|
* \sa SDL_OpenIO
|
||||||
* \sa SDL_CloseRW
|
* \sa SDL_CloseIO
|
||||||
*/
|
*/
|
||||||
static int rwops_testAllocFree(void *arg)
|
static int iostrm_testAllocFree(void *arg)
|
||||||
{
|
{
|
||||||
/* Allocate context */
|
/* Allocate context */
|
||||||
SDL_RWopsInterface iface;
|
SDL_IOStreamInterface iface;
|
||||||
SDL_RWops *rw;
|
SDL_IOStream *rw;
|
||||||
|
|
||||||
SDL_zero(iface);
|
SDL_zero(iface);
|
||||||
rw = SDL_OpenRW(&iface, NULL);
|
rw = SDL_OpenIO(&iface, NULL);
|
||||||
SDLTest_AssertPass("Call to SDL_OpenRW() succeeded");
|
SDLTest_AssertPass("Call to SDL_OpenIO() succeeded");
|
||||||
SDLTest_AssertCheck(rw != NULL, "Validate result from SDL_OpenRW() is not NULL");
|
SDLTest_AssertCheck(rw != NULL, "Validate result from SDL_OpenIO() is not NULL");
|
||||||
if (rw == NULL) {
|
if (rw == NULL) {
|
||||||
return TEST_ABORTED;
|
return TEST_ABORTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Free context again */
|
/* Free context again */
|
||||||
SDL_CloseRW(rw);
|
SDL_CloseIO(rw);
|
||||||
SDLTest_AssertPass("Call to SDL_CloseRW() succeeded");
|
SDLTest_AssertPass("Call to SDL_CloseIO() succeeded");
|
||||||
|
|
||||||
return TEST_COMPLETED;
|
return TEST_COMPLETED;
|
||||||
}
|
}
|
||||||
|
@ -406,10 +406,10 @@ static int rwops_testAllocFree(void *arg)
|
||||||
/**
|
/**
|
||||||
* Compare memory and file reads
|
* Compare memory and file reads
|
||||||
*
|
*
|
||||||
* \sa SDL_RWFromMem
|
* \sa SDL_IOFromMem
|
||||||
* \sa SDL_RWFromFile
|
* \sa SDL_IOFromFile
|
||||||
*/
|
*/
|
||||||
static int rwops_testCompareRWFromMemWithRWFromFile(void *arg)
|
static int iostrm_testCompareRWFromMemWithRWFromFile(void *arg)
|
||||||
{
|
{
|
||||||
int slen = 26;
|
int slen = 26;
|
||||||
char buffer_file[27];
|
char buffer_file[27];
|
||||||
|
@ -418,8 +418,8 @@ static int rwops_testCompareRWFromMemWithRWFromFile(void *arg)
|
||||||
size_t rv_mem;
|
size_t rv_mem;
|
||||||
Uint64 sv_file;
|
Uint64 sv_file;
|
||||||
Uint64 sv_mem;
|
Uint64 sv_mem;
|
||||||
SDL_RWops *rwops_file;
|
SDL_IOStream *iostrm_file;
|
||||||
SDL_RWops *rwops_mem;
|
SDL_IOStream *iostrm_mem;
|
||||||
int size;
|
int size;
|
||||||
int result;
|
int result;
|
||||||
|
|
||||||
|
@ -429,25 +429,25 @@ static int rwops_testCompareRWFromMemWithRWFromFile(void *arg)
|
||||||
buffer_mem[slen] = 0;
|
buffer_mem[slen] = 0;
|
||||||
|
|
||||||
/* Read/seek from memory */
|
/* Read/seek from memory */
|
||||||
rwops_mem = SDL_RWFromMem((void *)RWopsAlphabetString, slen);
|
iostrm_mem = SDL_IOFromMem((void *)IOStreamAlphabetString, slen);
|
||||||
SDLTest_AssertPass("Call to SDL_RWFromMem()");
|
SDLTest_AssertPass("Call to SDL_IOFromMem()");
|
||||||
rv_mem = SDL_ReadRW(rwops_mem, buffer_mem, size * 6);
|
rv_mem = SDL_ReadIO(iostrm_mem, buffer_mem, size * 6);
|
||||||
SDLTest_AssertPass("Call to SDL_ReadRW(mem, size=%d)", size * 6);
|
SDLTest_AssertPass("Call to SDL_ReadIO(mem, size=%d)", size * 6);
|
||||||
sv_mem = SDL_SeekRW(rwops_mem, 0, SEEK_END);
|
sv_mem = SDL_SeekIO(iostrm_mem, 0, SEEK_END);
|
||||||
SDLTest_AssertPass("Call to SDL_SeekRW(mem,SEEK_END)");
|
SDLTest_AssertPass("Call to SDL_SeekIO(mem,SEEK_END)");
|
||||||
result = SDL_CloseRW(rwops_mem);
|
result = SDL_CloseIO(iostrm_mem);
|
||||||
SDLTest_AssertPass("Call to SDL_CloseRW(mem)");
|
SDLTest_AssertPass("Call to SDL_CloseIO(mem)");
|
||||||
SDLTest_AssertCheck(result == 0, "Verify result value is 0; got: %d", result);
|
SDLTest_AssertCheck(result == 0, "Verify result value is 0; got: %d", result);
|
||||||
|
|
||||||
/* Read/see from file */
|
/* Read/see from file */
|
||||||
rwops_file = SDL_RWFromFile(RWopsAlphabetFilename, "r");
|
iostrm_file = SDL_IOFromFile(IOStreamAlphabetFilename, "r");
|
||||||
SDLTest_AssertPass("Call to SDL_RWFromFile()");
|
SDLTest_AssertPass("Call to SDL_IOFromFile()");
|
||||||
rv_file = SDL_ReadRW(rwops_file, buffer_file, size * 6);
|
rv_file = SDL_ReadIO(iostrm_file, buffer_file, size * 6);
|
||||||
SDLTest_AssertPass("Call to SDL_ReadRW(file, size=%d)", size * 6);
|
SDLTest_AssertPass("Call to SDL_ReadIO(file, size=%d)", size * 6);
|
||||||
sv_file = SDL_SeekRW(rwops_file, 0, SEEK_END);
|
sv_file = SDL_SeekIO(iostrm_file, 0, SEEK_END);
|
||||||
SDLTest_AssertPass("Call to SDL_SeekRW(file,SEEK_END)");
|
SDLTest_AssertPass("Call to SDL_SeekIO(file,SEEK_END)");
|
||||||
result = SDL_CloseRW(rwops_file);
|
result = SDL_CloseIO(iostrm_file);
|
||||||
SDLTest_AssertPass("Call to SDL_CloseRW(file)");
|
SDLTest_AssertPass("Call to SDL_CloseIO(file)");
|
||||||
SDLTest_AssertCheck(result == 0, "Verify result value is 0; got: %d", result);
|
SDLTest_AssertCheck(result == 0, "Verify result value is 0; got: %d", result);
|
||||||
|
|
||||||
/* Compare */
|
/* Compare */
|
||||||
|
@ -456,11 +456,11 @@ static int rwops_testCompareRWFromMemWithRWFromFile(void *arg)
|
||||||
SDLTest_AssertCheck(buffer_mem[slen] == 0, "Verify mem buffer termination; expected: 0, got: %d", buffer_mem[slen]);
|
SDLTest_AssertCheck(buffer_mem[slen] == 0, "Verify mem buffer termination; expected: 0, got: %d", buffer_mem[slen]);
|
||||||
SDLTest_AssertCheck(buffer_file[slen] == 0, "Verify file buffer termination; expected: 0, got: %d", buffer_file[slen]);
|
SDLTest_AssertCheck(buffer_file[slen] == 0, "Verify file buffer termination; expected: 0, got: %d", buffer_file[slen]);
|
||||||
SDLTest_AssertCheck(
|
SDLTest_AssertCheck(
|
||||||
SDL_strncmp(buffer_mem, RWopsAlphabetString, slen) == 0,
|
SDL_strncmp(buffer_mem, IOStreamAlphabetString, slen) == 0,
|
||||||
"Verify mem buffer contain alphabet string; expected: %s, got: %s", RWopsAlphabetString, buffer_mem);
|
"Verify mem buffer contain alphabet string; expected: %s, got: %s", IOStreamAlphabetString, buffer_mem);
|
||||||
SDLTest_AssertCheck(
|
SDLTest_AssertCheck(
|
||||||
SDL_strncmp(buffer_file, RWopsAlphabetString, slen) == 0,
|
SDL_strncmp(buffer_file, IOStreamAlphabetString, slen) == 0,
|
||||||
"Verify file buffer contain alphabet string; expected: %s, got: %s", RWopsAlphabetString, buffer_file);
|
"Verify file buffer contain alphabet string; expected: %s, got: %s", IOStreamAlphabetString, buffer_file);
|
||||||
}
|
}
|
||||||
|
|
||||||
return TEST_COMPLETED;
|
return TEST_COMPLETED;
|
||||||
|
@ -469,14 +469,14 @@ static int rwops_testCompareRWFromMemWithRWFromFile(void *arg)
|
||||||
/**
|
/**
|
||||||
* Tests writing and reading from file using endian aware functions.
|
* Tests writing and reading from file using endian aware functions.
|
||||||
*
|
*
|
||||||
* \sa SDL_RWFromFile
|
* \sa SDL_IOFromFile
|
||||||
* \sa SDL_RWClose
|
* \sa SDL_CloseIO
|
||||||
* \sa SDL_ReadU16BE
|
* \sa SDL_ReadU16BE
|
||||||
* \sa SDL_WriteU16BE
|
* \sa SDL_WriteU16BE
|
||||||
*/
|
*/
|
||||||
static int rwops_testFileWriteReadEndian(void *arg)
|
static int iostrm_testFileWriteReadEndian(void *arg)
|
||||||
{
|
{
|
||||||
SDL_RWops *rw;
|
SDL_IOStream *rw;
|
||||||
Sint64 result;
|
Sint64 result;
|
||||||
int mode;
|
int mode;
|
||||||
Uint16 BE16value;
|
Uint16 BE16value;
|
||||||
|
@ -529,9 +529,9 @@ static int rwops_testFileWriteReadEndian(void *arg)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Write test. */
|
/* Write test. */
|
||||||
rw = SDL_RWFromFile(RWopsWriteTestFilename, "w+");
|
rw = SDL_IOFromFile(IOStreamWriteTestFilename, "w+");
|
||||||
SDLTest_AssertPass("Call to SDL_RWFromFile(..,\"w+\")");
|
SDLTest_AssertPass("Call to SDL_IOFromFile(..,\"w+\")");
|
||||||
SDLTest_AssertCheck(rw != NULL, "Verify opening file with SDL_RWFromFile in write mode does not return NULL");
|
SDLTest_AssertCheck(rw != NULL, "Verify opening file with SDL_IOFromFile in write mode does not return NULL");
|
||||||
|
|
||||||
/* Bail out if NULL */
|
/* Bail out if NULL */
|
||||||
if (rw == NULL) {
|
if (rw == NULL) {
|
||||||
|
@ -559,9 +559,9 @@ static int rwops_testFileWriteReadEndian(void *arg)
|
||||||
SDLTest_AssertCheck(bresult == SDL_TRUE, "Validate object written, expected: SDL_TRUE, got: SDL_FALSE");
|
SDLTest_AssertCheck(bresult == SDL_TRUE, "Validate object written, expected: SDL_TRUE, got: SDL_FALSE");
|
||||||
|
|
||||||
/* Test seek to start */
|
/* Test seek to start */
|
||||||
result = SDL_SeekRW(rw, 0, SDL_RW_SEEK_SET);
|
result = SDL_SeekIO(rw, 0, SDL_IO_SEEK_SET);
|
||||||
SDLTest_AssertPass("Call to SDL_SeekRW succeeded");
|
SDLTest_AssertPass("Call to SDL_SeekIO succeeded");
|
||||||
SDLTest_AssertCheck(result == 0, "Verify result from position 0 with SDL_SeekRW, expected 0, got %i", (int)result);
|
SDLTest_AssertCheck(result == 0, "Verify result from position 0 with SDL_SeekIO, expected 0, got %i", (int)result);
|
||||||
|
|
||||||
/* Read test data */
|
/* Read test data */
|
||||||
bresult = SDL_ReadU16BE(rw, &BE16test);
|
bresult = SDL_ReadU16BE(rw, &BE16test);
|
||||||
|
@ -590,8 +590,8 @@ static int rwops_testFileWriteReadEndian(void *arg)
|
||||||
SDLTest_AssertCheck(LE64test == LE64value, "Validate object read from SDL_ReadU64LE, expected: %" SDL_PRIu64 ", got: %" SDL_PRIu64, LE64value, LE64test);
|
SDLTest_AssertCheck(LE64test == LE64value, "Validate object read from SDL_ReadU64LE, expected: %" SDL_PRIu64 ", got: %" SDL_PRIu64, LE64value, LE64test);
|
||||||
|
|
||||||
/* Close handle */
|
/* Close handle */
|
||||||
cresult = SDL_CloseRW(rw);
|
cresult = SDL_CloseIO(rw);
|
||||||
SDLTest_AssertPass("Call to SDL_CloseRW() succeeded");
|
SDLTest_AssertPass("Call to SDL_CloseIO() succeeded");
|
||||||
SDLTest_AssertCheck(cresult == 0, "Verify result value is 0; got: %d", cresult);
|
SDLTest_AssertCheck(cresult == 0, "Verify result value is 0; got: %d", cresult);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -600,49 +600,49 @@ static int rwops_testFileWriteReadEndian(void *arg)
|
||||||
|
|
||||||
/* ================= Test References ================== */
|
/* ================= Test References ================== */
|
||||||
|
|
||||||
/* RWops test cases */
|
/* IOStream test cases */
|
||||||
static const SDLTest_TestCaseReference rwopsTest1 = {
|
static const SDLTest_TestCaseReference iostrmTest1 = {
|
||||||
(SDLTest_TestCaseFp)rwops_testParamNegative, "rwops_testParamNegative", "Negative test for SDL_RWFromFile parameters", TEST_ENABLED
|
(SDLTest_TestCaseFp)iostrm_testParamNegative, "iostrm_testParamNegative", "Negative test for SDL_IOFromFile parameters", TEST_ENABLED
|
||||||
};
|
};
|
||||||
|
|
||||||
static const SDLTest_TestCaseReference rwopsTest2 = {
|
static const SDLTest_TestCaseReference iostrmTest2 = {
|
||||||
(SDLTest_TestCaseFp)rwops_testMem, "rwops_testMem", "Tests opening from memory", TEST_ENABLED
|
(SDLTest_TestCaseFp)iostrm_testMem, "iostrm_testMem", "Tests opening from memory", TEST_ENABLED
|
||||||
};
|
};
|
||||||
|
|
||||||
static const SDLTest_TestCaseReference rwopsTest3 = {
|
static const SDLTest_TestCaseReference iostrmTest3 = {
|
||||||
(SDLTest_TestCaseFp)rwops_testConstMem, "rwops_testConstMem", "Tests opening from (const) memory", TEST_ENABLED
|
(SDLTest_TestCaseFp)iostrm_testConstMem, "iostrm_testConstMem", "Tests opening from (const) memory", TEST_ENABLED
|
||||||
};
|
};
|
||||||
|
|
||||||
static const SDLTest_TestCaseReference rwopsTest4 = {
|
static const SDLTest_TestCaseReference iostrmTest4 = {
|
||||||
(SDLTest_TestCaseFp)rwops_testFileRead, "rwops_testFileRead", "Tests reading from a file", TEST_ENABLED
|
(SDLTest_TestCaseFp)iostrm_testFileRead, "iostrm_testFileRead", "Tests reading from a file", TEST_ENABLED
|
||||||
};
|
};
|
||||||
|
|
||||||
static const SDLTest_TestCaseReference rwopsTest5 = {
|
static const SDLTest_TestCaseReference iostrmTest5 = {
|
||||||
(SDLTest_TestCaseFp)rwops_testFileWrite, "rwops_testFileWrite", "Test writing to a file", TEST_ENABLED
|
(SDLTest_TestCaseFp)iostrm_testFileWrite, "iostrm_testFileWrite", "Test writing to a file", TEST_ENABLED
|
||||||
};
|
};
|
||||||
|
|
||||||
static const SDLTest_TestCaseReference rwopsTest6 = {
|
static const SDLTest_TestCaseReference iostrmTest6 = {
|
||||||
(SDLTest_TestCaseFp)rwops_testAllocFree, "rwops_testAllocFree", "Test alloc and free of RW context", TEST_ENABLED
|
(SDLTest_TestCaseFp)iostrm_testAllocFree, "iostrm_testAllocFree", "Test alloc and free of RW context", TEST_ENABLED
|
||||||
};
|
};
|
||||||
|
|
||||||
static const SDLTest_TestCaseReference rwopsTest7 = {
|
static const SDLTest_TestCaseReference iostrmTest7 = {
|
||||||
(SDLTest_TestCaseFp)rwops_testFileWriteReadEndian, "rwops_testFileWriteReadEndian", "Test writing and reading via the Endian aware functions", TEST_ENABLED
|
(SDLTest_TestCaseFp)iostrm_testFileWriteReadEndian, "iostrm_testFileWriteReadEndian", "Test writing and reading via the Endian aware functions", TEST_ENABLED
|
||||||
};
|
};
|
||||||
|
|
||||||
static const SDLTest_TestCaseReference rwopsTest8 = {
|
static const SDLTest_TestCaseReference iostrmTest8 = {
|
||||||
(SDLTest_TestCaseFp)rwops_testCompareRWFromMemWithRWFromFile, "rwops_testCompareRWFromMemWithRWFromFile", "Compare RWFromMem and RWFromFile RWops for read and seek", TEST_ENABLED
|
(SDLTest_TestCaseFp)iostrm_testCompareRWFromMemWithRWFromFile, "iostrm_testCompareRWFromMemWithRWFromFile", "Compare RWFromMem and RWFromFile IOStream for read and seek", TEST_ENABLED
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Sequence of RWops test cases */
|
/* Sequence of IOStream test cases */
|
||||||
static const SDLTest_TestCaseReference *rwopsTests[] = {
|
static const SDLTest_TestCaseReference *iostrmTests[] = {
|
||||||
&rwopsTest1, &rwopsTest2, &rwopsTest3, &rwopsTest4, &rwopsTest5, &rwopsTest6,
|
&iostrmTest1, &iostrmTest2, &iostrmTest3, &iostrmTest4, &iostrmTest5, &iostrmTest6,
|
||||||
&rwopsTest7, &rwopsTest8, NULL
|
&iostrmTest7, &iostrmTest8, NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
/* RWops test suite (global) */
|
/* IOStream test suite (global) */
|
||||||
SDLTest_TestSuiteReference rwopsTestSuite = {
|
SDLTest_TestSuiteReference iostrmTestSuite = {
|
||||||
"RWops",
|
"IOStream",
|
||||||
RWopsSetUp,
|
IOStreamSetUp,
|
||||||
rwopsTests,
|
iostrmTests,
|
||||||
RWopsTearDown
|
IOStreamTearDown
|
||||||
};
|
};
|
||||||
|
|
|
@ -27,7 +27,7 @@ extern SDLTest_TestSuiteReference platformTestSuite;
|
||||||
extern SDLTest_TestSuiteReference propertiesTestSuite;
|
extern SDLTest_TestSuiteReference propertiesTestSuite;
|
||||||
extern SDLTest_TestSuiteReference rectTestSuite;
|
extern SDLTest_TestSuiteReference rectTestSuite;
|
||||||
extern SDLTest_TestSuiteReference renderTestSuite;
|
extern SDLTest_TestSuiteReference renderTestSuite;
|
||||||
extern SDLTest_TestSuiteReference rwopsTestSuite;
|
extern SDLTest_TestSuiteReference iostrmTestSuite;
|
||||||
extern SDLTest_TestSuiteReference sdltestTestSuite;
|
extern SDLTest_TestSuiteReference sdltestTestSuite;
|
||||||
extern SDLTest_TestSuiteReference stdlibTestSuite;
|
extern SDLTest_TestSuiteReference stdlibTestSuite;
|
||||||
extern SDLTest_TestSuiteReference subsystemsTestSuite;
|
extern SDLTest_TestSuiteReference subsystemsTestSuite;
|
||||||
|
|
|
@ -237,9 +237,9 @@ static SDL_bool CreateWindowAndRenderer(SDL_WindowFlags window_flags, const char
|
||||||
static SDL_Texture *CreateTexture(SDL_Renderer *r, unsigned char *data, unsigned int len, int *w, int *h) {
|
static SDL_Texture *CreateTexture(SDL_Renderer *r, unsigned char *data, unsigned int len, int *w, int *h) {
|
||||||
SDL_Texture *texture = NULL;
|
SDL_Texture *texture = NULL;
|
||||||
SDL_Surface *surface;
|
SDL_Surface *surface;
|
||||||
SDL_RWops *src = SDL_RWFromConstMem(data, len);
|
SDL_IOStream *src = SDL_IOFromConstMem(data, len);
|
||||||
if (src) {
|
if (src) {
|
||||||
surface = SDL_LoadBMP_RW(src, SDL_TRUE);
|
surface = SDL_LoadBMP_IO(src, SDL_TRUE);
|
||||||
if (surface) {
|
if (surface) {
|
||||||
/* Treat white as transparent */
|
/* Treat white as transparent */
|
||||||
SDL_SetSurfaceColorKey(surface, SDL_TRUE, SDL_MapRGB(surface->format, 255, 255, 255));
|
SDL_SetSurfaceColorKey(surface, SDL_TRUE, SDL_MapRGB(surface->format, 255, 255, 255));
|
||||||
|
|
344
test/testfile.c
344
test/testfile.c
|
@ -51,22 +51,22 @@ cleanup(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
rwops_error_quit(unsigned line, SDL_RWops *rwops)
|
iostrm_error_quit(unsigned line, SDL_IOStream *iostrm)
|
||||||
{
|
{
|
||||||
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "testfile.c(%d): failed\n", line);
|
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "testfile.c(%d): failed\n", line);
|
||||||
if (rwops) {
|
if (iostrm) {
|
||||||
SDL_CloseRW(rwops);
|
SDL_CloseIO(iostrm);
|
||||||
}
|
}
|
||||||
cleanup();
|
cleanup();
|
||||||
SDLTest_CommonDestroyState(state);
|
SDLTest_CommonDestroyState(state);
|
||||||
exit(1); /* quit with rwops error (test failed) */
|
exit(1); /* quit with iostrm error (test failed) */
|
||||||
}
|
}
|
||||||
|
|
||||||
#define RWOP_ERR_QUIT(x) rwops_error_quit(__LINE__, (x))
|
#define RWOP_ERR_QUIT(x) iostrm_error_quit(__LINE__, (x))
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
SDL_RWops *rwops = NULL;
|
SDL_IOStream *iostrm = NULL;
|
||||||
char test_buf[30];
|
char test_buf[30];
|
||||||
|
|
||||||
/* Initialize test framework */
|
/* Initialize test framework */
|
||||||
|
@ -85,27 +85,27 @@ int main(int argc, char *argv[])
|
||||||
|
|
||||||
cleanup();
|
cleanup();
|
||||||
|
|
||||||
/* test 1 : basic argument test: all those calls to SDL_RWFromFile should fail */
|
/* test 1 : basic argument test: all those calls to SDL_IOFromFile should fail */
|
||||||
|
|
||||||
rwops = SDL_RWFromFile(NULL, NULL);
|
iostrm = SDL_IOFromFile(NULL, NULL);
|
||||||
if (rwops) {
|
if (iostrm) {
|
||||||
RWOP_ERR_QUIT(rwops);
|
RWOP_ERR_QUIT(iostrm);
|
||||||
}
|
}
|
||||||
rwops = SDL_RWFromFile(NULL, "ab+");
|
iostrm = SDL_IOFromFile(NULL, "ab+");
|
||||||
if (rwops) {
|
if (iostrm) {
|
||||||
RWOP_ERR_QUIT(rwops);
|
RWOP_ERR_QUIT(iostrm);
|
||||||
}
|
}
|
||||||
rwops = SDL_RWFromFile(NULL, "sldfkjsldkfj");
|
iostrm = SDL_IOFromFile(NULL, "sldfkjsldkfj");
|
||||||
if (rwops) {
|
if (iostrm) {
|
||||||
RWOP_ERR_QUIT(rwops);
|
RWOP_ERR_QUIT(iostrm);
|
||||||
}
|
}
|
||||||
rwops = SDL_RWFromFile("something", "");
|
iostrm = SDL_IOFromFile("something", "");
|
||||||
if (rwops) {
|
if (iostrm) {
|
||||||
RWOP_ERR_QUIT(rwops);
|
RWOP_ERR_QUIT(iostrm);
|
||||||
}
|
}
|
||||||
rwops = SDL_RWFromFile("something", NULL);
|
iostrm = SDL_IOFromFile("something", NULL);
|
||||||
if (rwops) {
|
if (iostrm) {
|
||||||
RWOP_ERR_QUIT(rwops);
|
RWOP_ERR_QUIT(iostrm);
|
||||||
}
|
}
|
||||||
SDL_Log("test1 OK\n");
|
SDL_Log("test1 OK\n");
|
||||||
|
|
||||||
|
@ -114,259 +114,259 @@ int main(int argc, char *argv[])
|
||||||
modes : a, a+, w, w+ checks that it succeeds (file may not exists)
|
modes : a, a+, w, w+ checks that it succeeds (file may not exists)
|
||||||
|
|
||||||
*/
|
*/
|
||||||
rwops = SDL_RWFromFile(FBASENAME2, "rb"); /* this file doesn't exist that call must fail */
|
iostrm = SDL_IOFromFile(FBASENAME2, "rb"); /* this file doesn't exist that call must fail */
|
||||||
if (rwops) {
|
if (iostrm) {
|
||||||
RWOP_ERR_QUIT(rwops);
|
RWOP_ERR_QUIT(iostrm);
|
||||||
}
|
}
|
||||||
rwops = SDL_RWFromFile(FBASENAME2, "rb+"); /* this file doesn't exist that call must fail */
|
iostrm = SDL_IOFromFile(FBASENAME2, "rb+"); /* this file doesn't exist that call must fail */
|
||||||
if (rwops) {
|
if (iostrm) {
|
||||||
RWOP_ERR_QUIT(rwops);
|
RWOP_ERR_QUIT(iostrm);
|
||||||
}
|
}
|
||||||
rwops = SDL_RWFromFile(FBASENAME2, "wb");
|
iostrm = SDL_IOFromFile(FBASENAME2, "wb");
|
||||||
if (!rwops) {
|
if (!iostrm) {
|
||||||
RWOP_ERR_QUIT(rwops);
|
RWOP_ERR_QUIT(iostrm);
|
||||||
}
|
}
|
||||||
SDL_CloseRW(rwops);
|
SDL_CloseIO(iostrm);
|
||||||
unlink(FBASENAME2);
|
unlink(FBASENAME2);
|
||||||
rwops = SDL_RWFromFile(FBASENAME2, "wb+");
|
iostrm = SDL_IOFromFile(FBASENAME2, "wb+");
|
||||||
if (!rwops) {
|
if (!iostrm) {
|
||||||
RWOP_ERR_QUIT(rwops);
|
RWOP_ERR_QUIT(iostrm);
|
||||||
}
|
}
|
||||||
SDL_CloseRW(rwops);
|
SDL_CloseIO(iostrm);
|
||||||
unlink(FBASENAME2);
|
unlink(FBASENAME2);
|
||||||
rwops = SDL_RWFromFile(FBASENAME2, "ab");
|
iostrm = SDL_IOFromFile(FBASENAME2, "ab");
|
||||||
if (!rwops) {
|
if (!iostrm) {
|
||||||
RWOP_ERR_QUIT(rwops);
|
RWOP_ERR_QUIT(iostrm);
|
||||||
}
|
}
|
||||||
SDL_CloseRW(rwops);
|
SDL_CloseIO(iostrm);
|
||||||
unlink(FBASENAME2);
|
unlink(FBASENAME2);
|
||||||
rwops = SDL_RWFromFile(FBASENAME2, "ab+");
|
iostrm = SDL_IOFromFile(FBASENAME2, "ab+");
|
||||||
if (!rwops) {
|
if (!iostrm) {
|
||||||
RWOP_ERR_QUIT(rwops);
|
RWOP_ERR_QUIT(iostrm);
|
||||||
}
|
}
|
||||||
SDL_CloseRW(rwops);
|
SDL_CloseIO(iostrm);
|
||||||
unlink(FBASENAME2);
|
unlink(FBASENAME2);
|
||||||
SDL_Log("test2 OK\n");
|
SDL_Log("test2 OK\n");
|
||||||
|
|
||||||
/* test 3 : creation, writing , reading, seeking,
|
/* test 3 : creation, writing , reading, seeking,
|
||||||
test : w mode, r mode, w+ mode
|
test : w mode, r mode, w+ mode
|
||||||
*/
|
*/
|
||||||
rwops = SDL_RWFromFile(FBASENAME1, "wb"); /* write only */
|
iostrm = SDL_IOFromFile(FBASENAME1, "wb"); /* write only */
|
||||||
if (!rwops) {
|
if (!iostrm) {
|
||||||
RWOP_ERR_QUIT(rwops);
|
RWOP_ERR_QUIT(iostrm);
|
||||||
}
|
}
|
||||||
if (10 != SDL_WriteRW(rwops, "1234567890", 10)) {
|
if (10 != SDL_WriteIO(iostrm, "1234567890", 10)) {
|
||||||
RWOP_ERR_QUIT(rwops);
|
RWOP_ERR_QUIT(iostrm);
|
||||||
}
|
}
|
||||||
if (10 != SDL_WriteRW(rwops, "1234567890", 10)) {
|
if (10 != SDL_WriteIO(iostrm, "1234567890", 10)) {
|
||||||
RWOP_ERR_QUIT(rwops);
|
RWOP_ERR_QUIT(iostrm);
|
||||||
}
|
}
|
||||||
if (7 != SDL_WriteRW(rwops, "1234567", 7)) {
|
if (7 != SDL_WriteIO(iostrm, "1234567", 7)) {
|
||||||
RWOP_ERR_QUIT(rwops);
|
RWOP_ERR_QUIT(iostrm);
|
||||||
}
|
}
|
||||||
if (0 != SDL_SeekRW(rwops, 0L, SDL_RW_SEEK_SET)) {
|
if (0 != SDL_SeekIO(iostrm, 0L, SDL_IO_SEEK_SET)) {
|
||||||
RWOP_ERR_QUIT(rwops);
|
RWOP_ERR_QUIT(iostrm);
|
||||||
}
|
}
|
||||||
if (0 != SDL_ReadRW(rwops, test_buf, 1)) {
|
if (0 != SDL_ReadIO(iostrm, test_buf, 1)) {
|
||||||
RWOP_ERR_QUIT(rwops); /* we are in write only mode */
|
RWOP_ERR_QUIT(iostrm); /* we are in write only mode */
|
||||||
}
|
}
|
||||||
|
|
||||||
SDL_CloseRW(rwops);
|
SDL_CloseIO(iostrm);
|
||||||
|
|
||||||
rwops = SDL_RWFromFile(FBASENAME1, "rb"); /* read mode, file must exist */
|
iostrm = SDL_IOFromFile(FBASENAME1, "rb"); /* read mode, file must exist */
|
||||||
if (!rwops) {
|
if (!iostrm) {
|
||||||
RWOP_ERR_QUIT(rwops);
|
RWOP_ERR_QUIT(iostrm);
|
||||||
}
|
}
|
||||||
if (0 != SDL_SeekRW(rwops, 0L, SDL_RW_SEEK_SET)) {
|
if (0 != SDL_SeekIO(iostrm, 0L, SDL_IO_SEEK_SET)) {
|
||||||
RWOP_ERR_QUIT(rwops);
|
RWOP_ERR_QUIT(iostrm);
|
||||||
}
|
}
|
||||||
if (20 != SDL_SeekRW(rwops, -7, SDL_RW_SEEK_END)) {
|
if (20 != SDL_SeekIO(iostrm, -7, SDL_IO_SEEK_END)) {
|
||||||
RWOP_ERR_QUIT(rwops);
|
RWOP_ERR_QUIT(iostrm);
|
||||||
}
|
}
|
||||||
if (7 != SDL_ReadRW(rwops, test_buf, 7)) {
|
if (7 != SDL_ReadIO(iostrm, test_buf, 7)) {
|
||||||
RWOP_ERR_QUIT(rwops);
|
RWOP_ERR_QUIT(iostrm);
|
||||||
}
|
}
|
||||||
if (SDL_memcmp(test_buf, "1234567", 7) != 0) {
|
if (SDL_memcmp(test_buf, "1234567", 7) != 0) {
|
||||||
RWOP_ERR_QUIT(rwops);
|
RWOP_ERR_QUIT(iostrm);
|
||||||
}
|
}
|
||||||
if (0 != SDL_ReadRW(rwops, test_buf, 1)) {
|
if (0 != SDL_ReadIO(iostrm, test_buf, 1)) {
|
||||||
RWOP_ERR_QUIT(rwops);
|
RWOP_ERR_QUIT(iostrm);
|
||||||
}
|
}
|
||||||
if (0 != SDL_ReadRW(rwops, test_buf, 1000)) {
|
if (0 != SDL_ReadIO(iostrm, test_buf, 1000)) {
|
||||||
RWOP_ERR_QUIT(rwops);
|
RWOP_ERR_QUIT(iostrm);
|
||||||
}
|
}
|
||||||
if (0 != SDL_SeekRW(rwops, -27, SDL_RW_SEEK_CUR)) {
|
if (0 != SDL_SeekIO(iostrm, -27, SDL_IO_SEEK_CUR)) {
|
||||||
RWOP_ERR_QUIT(rwops);
|
RWOP_ERR_QUIT(iostrm);
|
||||||
}
|
}
|
||||||
if (27 != SDL_ReadRW(rwops, test_buf, 30)) {
|
if (27 != SDL_ReadIO(iostrm, test_buf, 30)) {
|
||||||
RWOP_ERR_QUIT(rwops);
|
RWOP_ERR_QUIT(iostrm);
|
||||||
}
|
}
|
||||||
if (SDL_memcmp(test_buf, "12345678901234567890", 20) != 0) {
|
if (SDL_memcmp(test_buf, "12345678901234567890", 20) != 0) {
|
||||||
RWOP_ERR_QUIT(rwops);
|
RWOP_ERR_QUIT(iostrm);
|
||||||
}
|
}
|
||||||
if (0 != SDL_WriteRW(rwops, test_buf, 1)) {
|
if (0 != SDL_WriteIO(iostrm, test_buf, 1)) {
|
||||||
RWOP_ERR_QUIT(rwops); /* readonly mode */
|
RWOP_ERR_QUIT(iostrm); /* readonly mode */
|
||||||
}
|
}
|
||||||
|
|
||||||
SDL_CloseRW(rwops);
|
SDL_CloseIO(iostrm);
|
||||||
|
|
||||||
/* test 3: same with w+ mode */
|
/* test 3: same with w+ mode */
|
||||||
rwops = SDL_RWFromFile(FBASENAME1, "wb+"); /* write + read + truncation */
|
iostrm = SDL_IOFromFile(FBASENAME1, "wb+"); /* write + read + truncation */
|
||||||
if (!rwops) {
|
if (!iostrm) {
|
||||||
RWOP_ERR_QUIT(rwops);
|
RWOP_ERR_QUIT(iostrm);
|
||||||
}
|
}
|
||||||
if (10 != SDL_WriteRW(rwops, "1234567890", 10)) {
|
if (10 != SDL_WriteIO(iostrm, "1234567890", 10)) {
|
||||||
RWOP_ERR_QUIT(rwops);
|
RWOP_ERR_QUIT(iostrm);
|
||||||
}
|
}
|
||||||
if (10 != SDL_WriteRW(rwops, "1234567890", 10)) {
|
if (10 != SDL_WriteIO(iostrm, "1234567890", 10)) {
|
||||||
RWOP_ERR_QUIT(rwops);
|
RWOP_ERR_QUIT(iostrm);
|
||||||
}
|
}
|
||||||
if (7 != SDL_WriteRW(rwops, "1234567", 7)) {
|
if (7 != SDL_WriteIO(iostrm, "1234567", 7)) {
|
||||||
RWOP_ERR_QUIT(rwops);
|
RWOP_ERR_QUIT(iostrm);
|
||||||
}
|
}
|
||||||
if (0 != SDL_SeekRW(rwops, 0L, SDL_RW_SEEK_SET)) {
|
if (0 != SDL_SeekIO(iostrm, 0L, SDL_IO_SEEK_SET)) {
|
||||||
RWOP_ERR_QUIT(rwops);
|
RWOP_ERR_QUIT(iostrm);
|
||||||
}
|
}
|
||||||
if (1 != SDL_ReadRW(rwops, test_buf, 1)) {
|
if (1 != SDL_ReadIO(iostrm, test_buf, 1)) {
|
||||||
RWOP_ERR_QUIT(rwops); /* we are in read/write mode */
|
RWOP_ERR_QUIT(iostrm); /* we are in read/write mode */
|
||||||
}
|
}
|
||||||
|
|
||||||
if (0 != SDL_SeekRW(rwops, 0L, SDL_RW_SEEK_SET)) {
|
if (0 != SDL_SeekIO(iostrm, 0L, SDL_IO_SEEK_SET)) {
|
||||||
RWOP_ERR_QUIT(rwops);
|
RWOP_ERR_QUIT(iostrm);
|
||||||
}
|
}
|
||||||
if (20 != SDL_SeekRW(rwops, -7, SDL_RW_SEEK_END)) {
|
if (20 != SDL_SeekIO(iostrm, -7, SDL_IO_SEEK_END)) {
|
||||||
RWOP_ERR_QUIT(rwops);
|
RWOP_ERR_QUIT(iostrm);
|
||||||
}
|
}
|
||||||
if (7 != SDL_ReadRW(rwops, test_buf, 7)) {
|
if (7 != SDL_ReadIO(iostrm, test_buf, 7)) {
|
||||||
RWOP_ERR_QUIT(rwops);
|
RWOP_ERR_QUIT(iostrm);
|
||||||
}
|
}
|
||||||
if (SDL_memcmp(test_buf, "1234567", 7) != 0) {
|
if (SDL_memcmp(test_buf, "1234567", 7) != 0) {
|
||||||
RWOP_ERR_QUIT(rwops);
|
RWOP_ERR_QUIT(iostrm);
|
||||||
}
|
}
|
||||||
if (0 != SDL_ReadRW(rwops, test_buf, 1)) {
|
if (0 != SDL_ReadIO(iostrm, test_buf, 1)) {
|
||||||
RWOP_ERR_QUIT(rwops);
|
RWOP_ERR_QUIT(iostrm);
|
||||||
}
|
}
|
||||||
if (0 != SDL_ReadRW(rwops, test_buf, 1000)) {
|
if (0 != SDL_ReadIO(iostrm, test_buf, 1000)) {
|
||||||
RWOP_ERR_QUIT(rwops);
|
RWOP_ERR_QUIT(iostrm);
|
||||||
}
|
}
|
||||||
if (0 != SDL_SeekRW(rwops, -27, SDL_RW_SEEK_CUR)) {
|
if (0 != SDL_SeekIO(iostrm, -27, SDL_IO_SEEK_CUR)) {
|
||||||
RWOP_ERR_QUIT(rwops);
|
RWOP_ERR_QUIT(iostrm);
|
||||||
}
|
}
|
||||||
if (27 != SDL_ReadRW(rwops, test_buf, 30)) {
|
if (27 != SDL_ReadIO(iostrm, test_buf, 30)) {
|
||||||
RWOP_ERR_QUIT(rwops);
|
RWOP_ERR_QUIT(iostrm);
|
||||||
}
|
}
|
||||||
if (SDL_memcmp(test_buf, "12345678901234567890", 20) != 0) {
|
if (SDL_memcmp(test_buf, "12345678901234567890", 20) != 0) {
|
||||||
RWOP_ERR_QUIT(rwops);
|
RWOP_ERR_QUIT(iostrm);
|
||||||
}
|
}
|
||||||
SDL_CloseRW(rwops);
|
SDL_CloseIO(iostrm);
|
||||||
SDL_Log("test3 OK\n");
|
SDL_Log("test3 OK\n");
|
||||||
|
|
||||||
/* test 4: same in r+ mode */
|
/* test 4: same in r+ mode */
|
||||||
rwops = SDL_RWFromFile(FBASENAME1, "rb+"); /* write + read + file must exists, no truncation */
|
iostrm = SDL_IOFromFile(FBASENAME1, "rb+"); /* write + read + file must exists, no truncation */
|
||||||
if (!rwops) {
|
if (!iostrm) {
|
||||||
RWOP_ERR_QUIT(rwops);
|
RWOP_ERR_QUIT(iostrm);
|
||||||
}
|
}
|
||||||
if (10 != SDL_WriteRW(rwops, "1234567890", 10)) {
|
if (10 != SDL_WriteIO(iostrm, "1234567890", 10)) {
|
||||||
RWOP_ERR_QUIT(rwops);
|
RWOP_ERR_QUIT(iostrm);
|
||||||
}
|
}
|
||||||
if (10 != SDL_WriteRW(rwops, "1234567890", 10)) {
|
if (10 != SDL_WriteIO(iostrm, "1234567890", 10)) {
|
||||||
RWOP_ERR_QUIT(rwops);
|
RWOP_ERR_QUIT(iostrm);
|
||||||
}
|
}
|
||||||
if (7 != SDL_WriteRW(rwops, "1234567", 7)) {
|
if (7 != SDL_WriteIO(iostrm, "1234567", 7)) {
|
||||||
RWOP_ERR_QUIT(rwops);
|
RWOP_ERR_QUIT(iostrm);
|
||||||
}
|
}
|
||||||
if (0 != SDL_SeekRW(rwops, 0L, SDL_RW_SEEK_SET)) {
|
if (0 != SDL_SeekIO(iostrm, 0L, SDL_IO_SEEK_SET)) {
|
||||||
RWOP_ERR_QUIT(rwops);
|
RWOP_ERR_QUIT(iostrm);
|
||||||
}
|
}
|
||||||
if (1 != SDL_ReadRW(rwops, test_buf, 1)) {
|
if (1 != SDL_ReadIO(iostrm, test_buf, 1)) {
|
||||||
RWOP_ERR_QUIT(rwops); /* we are in read/write mode */
|
RWOP_ERR_QUIT(iostrm); /* we are in read/write mode */
|
||||||
}
|
}
|
||||||
|
|
||||||
if (0 != SDL_SeekRW(rwops, 0L, SDL_RW_SEEK_SET)) {
|
if (0 != SDL_SeekIO(iostrm, 0L, SDL_IO_SEEK_SET)) {
|
||||||
RWOP_ERR_QUIT(rwops);
|
RWOP_ERR_QUIT(iostrm);
|
||||||
}
|
}
|
||||||
if (20 != SDL_SeekRW(rwops, -7, SDL_RW_SEEK_END)) {
|
if (20 != SDL_SeekIO(iostrm, -7, SDL_IO_SEEK_END)) {
|
||||||
RWOP_ERR_QUIT(rwops);
|
RWOP_ERR_QUIT(iostrm);
|
||||||
}
|
}
|
||||||
if (7 != SDL_ReadRW(rwops, test_buf, 7)) {
|
if (7 != SDL_ReadIO(iostrm, test_buf, 7)) {
|
||||||
RWOP_ERR_QUIT(rwops);
|
RWOP_ERR_QUIT(iostrm);
|
||||||
}
|
}
|
||||||
if (SDL_memcmp(test_buf, "1234567", 7) != 0) {
|
if (SDL_memcmp(test_buf, "1234567", 7) != 0) {
|
||||||
RWOP_ERR_QUIT(rwops);
|
RWOP_ERR_QUIT(iostrm);
|
||||||
}
|
}
|
||||||
if (0 != SDL_ReadRW(rwops, test_buf, 1)) {
|
if (0 != SDL_ReadIO(iostrm, test_buf, 1)) {
|
||||||
RWOP_ERR_QUIT(rwops);
|
RWOP_ERR_QUIT(iostrm);
|
||||||
}
|
}
|
||||||
if (0 != SDL_ReadRW(rwops, test_buf, 1000)) {
|
if (0 != SDL_ReadIO(iostrm, test_buf, 1000)) {
|
||||||
RWOP_ERR_QUIT(rwops);
|
RWOP_ERR_QUIT(iostrm);
|
||||||
}
|
}
|
||||||
if (0 != SDL_SeekRW(rwops, -27, SDL_RW_SEEK_CUR)) {
|
if (0 != SDL_SeekIO(iostrm, -27, SDL_IO_SEEK_CUR)) {
|
||||||
RWOP_ERR_QUIT(rwops);
|
RWOP_ERR_QUIT(iostrm);
|
||||||
}
|
}
|
||||||
if (27 != SDL_ReadRW(rwops, test_buf, 30)) {
|
if (27 != SDL_ReadIO(iostrm, test_buf, 30)) {
|
||||||
RWOP_ERR_QUIT(rwops);
|
RWOP_ERR_QUIT(iostrm);
|
||||||
}
|
}
|
||||||
if (SDL_memcmp(test_buf, "12345678901234567890", 20) != 0) {
|
if (SDL_memcmp(test_buf, "12345678901234567890", 20) != 0) {
|
||||||
RWOP_ERR_QUIT(rwops);
|
RWOP_ERR_QUIT(iostrm);
|
||||||
}
|
}
|
||||||
SDL_CloseRW(rwops);
|
SDL_CloseIO(iostrm);
|
||||||
SDL_Log("test4 OK\n");
|
SDL_Log("test4 OK\n");
|
||||||
|
|
||||||
/* test5 : append mode */
|
/* test5 : append mode */
|
||||||
rwops = SDL_RWFromFile(FBASENAME1, "ab+"); /* write + read + append */
|
iostrm = SDL_IOFromFile(FBASENAME1, "ab+"); /* write + read + append */
|
||||||
if (!rwops) {
|
if (!iostrm) {
|
||||||
RWOP_ERR_QUIT(rwops);
|
RWOP_ERR_QUIT(iostrm);
|
||||||
}
|
}
|
||||||
if (10 != SDL_WriteRW(rwops, "1234567890", 10)) {
|
if (10 != SDL_WriteIO(iostrm, "1234567890", 10)) {
|
||||||
RWOP_ERR_QUIT(rwops);
|
RWOP_ERR_QUIT(iostrm);
|
||||||
}
|
}
|
||||||
if (10 != SDL_WriteRW(rwops, "1234567890", 10)) {
|
if (10 != SDL_WriteIO(iostrm, "1234567890", 10)) {
|
||||||
RWOP_ERR_QUIT(rwops);
|
RWOP_ERR_QUIT(iostrm);
|
||||||
}
|
}
|
||||||
if (7 != SDL_WriteRW(rwops, "1234567", 7)) {
|
if (7 != SDL_WriteIO(iostrm, "1234567", 7)) {
|
||||||
RWOP_ERR_QUIT(rwops);
|
RWOP_ERR_QUIT(iostrm);
|
||||||
}
|
}
|
||||||
if (0 != SDL_SeekRW(rwops, 0L, SDL_RW_SEEK_SET)) {
|
if (0 != SDL_SeekIO(iostrm, 0L, SDL_IO_SEEK_SET)) {
|
||||||
RWOP_ERR_QUIT(rwops);
|
RWOP_ERR_QUIT(iostrm);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (1 != SDL_ReadRW(rwops, test_buf, 1)) {
|
if (1 != SDL_ReadIO(iostrm, test_buf, 1)) {
|
||||||
RWOP_ERR_QUIT(rwops);
|
RWOP_ERR_QUIT(iostrm);
|
||||||
}
|
}
|
||||||
if (0 != SDL_SeekRW(rwops, 0L, SDL_RW_SEEK_SET)) {
|
if (0 != SDL_SeekIO(iostrm, 0L, SDL_IO_SEEK_SET)) {
|
||||||
RWOP_ERR_QUIT(rwops);
|
RWOP_ERR_QUIT(iostrm);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (20 + 27 != SDL_SeekRW(rwops, -7, SDL_RW_SEEK_END)) {
|
if (20 + 27 != SDL_SeekIO(iostrm, -7, SDL_IO_SEEK_END)) {
|
||||||
RWOP_ERR_QUIT(rwops);
|
RWOP_ERR_QUIT(iostrm);
|
||||||
}
|
}
|
||||||
if (7 != SDL_ReadRW(rwops, test_buf, 7)) {
|
if (7 != SDL_ReadIO(iostrm, test_buf, 7)) {
|
||||||
RWOP_ERR_QUIT(rwops);
|
RWOP_ERR_QUIT(iostrm);
|
||||||
}
|
}
|
||||||
if (SDL_memcmp(test_buf, "1234567", 7) != 0) {
|
if (SDL_memcmp(test_buf, "1234567", 7) != 0) {
|
||||||
RWOP_ERR_QUIT(rwops);
|
RWOP_ERR_QUIT(iostrm);
|
||||||
}
|
}
|
||||||
if (0 != SDL_ReadRW(rwops, test_buf, 1)) {
|
if (0 != SDL_ReadIO(iostrm, test_buf, 1)) {
|
||||||
RWOP_ERR_QUIT(rwops);
|
RWOP_ERR_QUIT(iostrm);
|
||||||
}
|
}
|
||||||
if (0 != SDL_ReadRW(rwops, test_buf, 1000)) {
|
if (0 != SDL_ReadIO(iostrm, test_buf, 1000)) {
|
||||||
RWOP_ERR_QUIT(rwops);
|
RWOP_ERR_QUIT(iostrm);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (27 != SDL_SeekRW(rwops, -27, SDL_RW_SEEK_CUR)) {
|
if (27 != SDL_SeekIO(iostrm, -27, SDL_IO_SEEK_CUR)) {
|
||||||
RWOP_ERR_QUIT(rwops);
|
RWOP_ERR_QUIT(iostrm);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (0 != SDL_SeekRW(rwops, 0L, SDL_RW_SEEK_SET)) {
|
if (0 != SDL_SeekIO(iostrm, 0L, SDL_IO_SEEK_SET)) {
|
||||||
RWOP_ERR_QUIT(rwops);
|
RWOP_ERR_QUIT(iostrm);
|
||||||
}
|
}
|
||||||
if (30 != SDL_ReadRW(rwops, test_buf, 30)) {
|
if (30 != SDL_ReadIO(iostrm, test_buf, 30)) {
|
||||||
RWOP_ERR_QUIT(rwops);
|
RWOP_ERR_QUIT(iostrm);
|
||||||
}
|
}
|
||||||
if (SDL_memcmp(test_buf, "123456789012345678901234567123", 30) != 0) {
|
if (SDL_memcmp(test_buf, "123456789012345678901234567123", 30) != 0) {
|
||||||
RWOP_ERR_QUIT(rwops);
|
RWOP_ERR_QUIT(iostrm);
|
||||||
}
|
}
|
||||||
SDL_CloseRW(rwops);
|
SDL_CloseIO(iostrm);
|
||||||
SDL_Log("test5 OK\n");
|
SDL_Log("test5 OK\n");
|
||||||
cleanup();
|
cleanup();
|
||||||
SDL_Quit();
|
SDL_Quit();
|
||||||
|
|
|
@ -109,7 +109,7 @@ static int unifont_init(const char *fontname)
|
||||||
Uint32 numGlyphs = 0;
|
Uint32 numGlyphs = 0;
|
||||||
int lineNumber = 1;
|
int lineNumber = 1;
|
||||||
size_t bytesRead;
|
size_t bytesRead;
|
||||||
SDL_RWops *hexFile;
|
SDL_IOStream *hexFile;
|
||||||
const size_t unifontGlyphSize = UNIFONT_NUM_GLYPHS * sizeof(struct UnifontGlyph);
|
const size_t unifontGlyphSize = UNIFONT_NUM_GLYPHS * sizeof(struct UnifontGlyph);
|
||||||
const size_t unifontTextureSize = UNIFONT_NUM_TEXTURES * state->num_windows * sizeof(void *);
|
const size_t unifontTextureSize = UNIFONT_NUM_TEXTURES * state->num_windows * sizeof(void *);
|
||||||
char *filename;
|
char *filename;
|
||||||
|
@ -135,7 +135,7 @@ static int unifont_init(const char *fontname)
|
||||||
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Out of memory\n");
|
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Out of memory\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
hexFile = SDL_RWFromFile(filename, "rb");
|
hexFile = SDL_IOFromFile(filename, "rb");
|
||||||
SDL_free(filename);
|
SDL_free(filename);
|
||||||
if (!hexFile) {
|
if (!hexFile) {
|
||||||
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "unifont: Failed to open font file: %s\n", fontname);
|
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "unifont: Failed to open font file: %s\n", fontname);
|
||||||
|
@ -149,7 +149,7 @@ static int unifont_init(const char *fontname)
|
||||||
Uint8 glyphWidth;
|
Uint8 glyphWidth;
|
||||||
Uint32 codepoint;
|
Uint32 codepoint;
|
||||||
|
|
||||||
bytesRead = SDL_ReadRW(hexFile, hexBuffer, 9);
|
bytesRead = SDL_ReadIO(hexFile, hexBuffer, 9);
|
||||||
if (numGlyphs > 0 && bytesRead == 0) {
|
if (numGlyphs > 0 && bytesRead == 0) {
|
||||||
break; /* EOF */
|
break; /* EOF */
|
||||||
}
|
}
|
||||||
|
@ -185,7 +185,7 @@ static int unifont_init(const char *fontname)
|
||||||
if (codepointHexSize < 8) {
|
if (codepointHexSize < 8) {
|
||||||
SDL_memmove(hexBuffer, hexBuffer + codepointHexSize + 1, bytesOverread);
|
SDL_memmove(hexBuffer, hexBuffer + codepointHexSize + 1, bytesOverread);
|
||||||
}
|
}
|
||||||
bytesRead = SDL_ReadRW(hexFile, hexBuffer + bytesOverread, 33 - bytesOverread);
|
bytesRead = SDL_ReadIO(hexFile, hexBuffer + bytesOverread, 33 - bytesOverread);
|
||||||
|
|
||||||
if (bytesRead < (33 - bytesOverread)) {
|
if (bytesRead < (33 - bytesOverread)) {
|
||||||
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "unifont: Unexpected end of hex file.\n");
|
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "unifont: Unexpected end of hex file.\n");
|
||||||
|
@ -195,7 +195,7 @@ static int unifont_init(const char *fontname)
|
||||||
glyphWidth = 8;
|
glyphWidth = 8;
|
||||||
} else {
|
} else {
|
||||||
glyphWidth = 16;
|
glyphWidth = 16;
|
||||||
bytesRead = SDL_ReadRW(hexFile, hexBuffer + 33, 32);
|
bytesRead = SDL_ReadIO(hexFile, hexBuffer + 33, 32);
|
||||||
if (bytesRead < 32) {
|
if (bytesRead < 32) {
|
||||||
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "unifont: Unexpected end of hex file.\n");
|
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "unifont: Unexpected end of hex file.\n");
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -223,7 +223,7 @@ static int unifont_init(const char *fontname)
|
||||||
lineNumber++;
|
lineNumber++;
|
||||||
} while (bytesRead > 0);
|
} while (bytesRead > 0);
|
||||||
|
|
||||||
SDL_CloseRW(hexFile);
|
SDL_CloseIO(hexFile);
|
||||||
SDL_Log("unifont: Loaded %" SDL_PRIu32 " glyphs.\n", numGlyphs);
|
SDL_Log("unifont: Loaded %" SDL_PRIu32 " glyphs.\n", numGlyphs);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -318,7 +318,7 @@ static void loop(void)
|
||||||
|
|
||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
SDL_RWops *handle;
|
SDL_IOStream *handle;
|
||||||
int i;
|
int i;
|
||||||
int j;
|
int j;
|
||||||
int fps = 12;
|
int fps = 12;
|
||||||
|
@ -443,16 +443,16 @@ int main(int argc, char **argv)
|
||||||
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Out of memory\n");
|
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Out of memory\n");
|
||||||
quit(2);
|
quit(2);
|
||||||
}
|
}
|
||||||
handle = SDL_RWFromFile(filename, "rb");
|
handle = SDL_IOFromFile(filename, "rb");
|
||||||
SDL_free(filename);
|
SDL_free(filename);
|
||||||
if (!handle) {
|
if (!handle) {
|
||||||
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Can't find the file moose.dat !\n");
|
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Can't find the file moose.dat !\n");
|
||||||
quit(2);
|
quit(2);
|
||||||
}
|
}
|
||||||
|
|
||||||
SDL_ReadRW(handle, RawMooseData, MOOSEFRAME_SIZE * MOOSEFRAMES_COUNT);
|
SDL_ReadIO(handle, RawMooseData, MOOSEFRAME_SIZE * MOOSEFRAMES_COUNT);
|
||||||
|
|
||||||
SDL_CloseRW(handle);
|
SDL_CloseIO(handle);
|
||||||
|
|
||||||
/* Create the window and renderer */
|
/* Create the window and renderer */
|
||||||
window_w = MOOSEPIC_W * scale;
|
window_w = MOOSEPIC_W * scale;
|
||||||
|
|
|
@ -30,7 +30,7 @@ int main(int argc, char **argv)
|
||||||
int bitsize = 0;
|
int bitsize = 0;
|
||||||
int blockalign = 0;
|
int blockalign = 0;
|
||||||
int avgbytes = 0;
|
int avgbytes = 0;
|
||||||
SDL_RWops *io = NULL;
|
SDL_IOStream *io = NULL;
|
||||||
int dst_len;
|
int dst_len;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
int argpos = 0;
|
int argpos = 0;
|
||||||
|
@ -115,7 +115,7 @@ int main(int argc, char **argv)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* write out a WAV header... */
|
/* write out a WAV header... */
|
||||||
io = SDL_RWFromFile(file_out, "wb");
|
io = SDL_IOFromFile(file_out, "wb");
|
||||||
if (!io) {
|
if (!io) {
|
||||||
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "opening '%s' failed: %s\n", file_out, SDL_GetError());
|
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "opening '%s' failed: %s\n", file_out, SDL_GetError());
|
||||||
ret = 5;
|
ret = 5;
|
||||||
|
@ -139,9 +139,9 @@ int main(int argc, char **argv)
|
||||||
SDL_WriteU16LE(io, (Uint16)bitsize); /* significant bits per sample */
|
SDL_WriteU16LE(io, (Uint16)bitsize); /* significant bits per sample */
|
||||||
SDL_WriteU32LE(io, 0x61746164); /* data */
|
SDL_WriteU32LE(io, 0x61746164); /* data */
|
||||||
SDL_WriteU32LE(io, dst_len); /* size */
|
SDL_WriteU32LE(io, dst_len); /* size */
|
||||||
SDL_WriteRW(io, dst_buf, dst_len);
|
SDL_WriteIO(io, dst_buf, dst_len);
|
||||||
|
|
||||||
if (SDL_CloseRW(io) == -1) {
|
if (SDL_CloseIO(io) == -1) {
|
||||||
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "closing '%s' failed: %s\n", file_out, SDL_GetError());
|
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "closing '%s' failed: %s\n", file_out, SDL_GetError());
|
||||||
ret = 6;
|
ret = 6;
|
||||||
goto end;
|
goto end;
|
||||||
|
|
|
@ -60,7 +60,7 @@ int main(int argc, char *argv[])
|
||||||
goto quit;
|
goto quit;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
shape = SDL_LoadBMP_RW(SDL_RWFromConstMem(glass_bmp, sizeof(glass_bmp)), SDL_TRUE);
|
shape = SDL_LoadBMP_IO(SDL_IOFromConstMem(glass_bmp, sizeof(glass_bmp)), SDL_TRUE);
|
||||||
if (!shape) {
|
if (!shape) {
|
||||||
SDL_Log("Couldn't load glass.bmp: %s\n", SDL_GetError());
|
SDL_Log("Couldn't load glass.bmp: %s\n", SDL_GetError());
|
||||||
goto quit;
|
goto quit;
|
||||||
|
|
|
@ -39,9 +39,9 @@ static int done;
|
||||||
static SDL_Texture *CreateTexture(SDL_Renderer *r, unsigned char *data, unsigned int len, int *w, int *h) {
|
static SDL_Texture *CreateTexture(SDL_Renderer *r, unsigned char *data, unsigned int len, int *w, int *h) {
|
||||||
SDL_Texture *texture = NULL;
|
SDL_Texture *texture = NULL;
|
||||||
SDL_Surface *surface;
|
SDL_Surface *surface;
|
||||||
SDL_RWops *src = SDL_RWFromConstMem(data, len);
|
SDL_IOStream *src = SDL_IOFromConstMem(data, len);
|
||||||
if (src) {
|
if (src) {
|
||||||
surface = SDL_LoadBMP_RW(src, SDL_TRUE);
|
surface = SDL_LoadBMP_IO(src, SDL_TRUE);
|
||||||
if (surface) {
|
if (surface) {
|
||||||
/* Treat white as transparent */
|
/* Treat white as transparent */
|
||||||
SDL_SetSurfaceColorKey(surface, SDL_TRUE, SDL_MapRGB(surface->format, 255, 255, 255));
|
SDL_SetSurfaceColorKey(surface, SDL_TRUE, SDL_MapRGB(surface->format, 255, 255, 255));
|
||||||
|
|
|
@ -136,7 +136,7 @@ static void loop(void)
|
||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
SDL_Window *window;
|
SDL_Window *window;
|
||||||
SDL_RWops *handle;
|
SDL_IOStream *handle;
|
||||||
char *filename = NULL;
|
char *filename = NULL;
|
||||||
|
|
||||||
/* Initialize test framework */
|
/* Initialize test framework */
|
||||||
|
@ -164,14 +164,14 @@ int main(int argc, char **argv)
|
||||||
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Out of memory\n");
|
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Out of memory\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
handle = SDL_RWFromFile(filename, "rb");
|
handle = SDL_IOFromFile(filename, "rb");
|
||||||
SDL_free(filename);
|
SDL_free(filename);
|
||||||
if (!handle) {
|
if (!handle) {
|
||||||
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Can't find the file moose.dat !\n");
|
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Can't find the file moose.dat !\n");
|
||||||
quit(2);
|
quit(2);
|
||||||
}
|
}
|
||||||
SDL_ReadRW(handle, MooseFrames, MOOSEFRAME_SIZE * MOOSEFRAMES_COUNT);
|
SDL_ReadIO(handle, MooseFrames, MOOSEFRAME_SIZE * MOOSEFRAMES_COUNT);
|
||||||
SDL_CloseRW(handle);
|
SDL_CloseIO(handle);
|
||||||
|
|
||||||
/* Create the window and renderer */
|
/* Create the window and renderer */
|
||||||
window = SDL_CreateWindow("Happy Moose", MOOSEPIC_W * 4, MOOSEPIC_H * 4, SDL_WINDOW_RESIZABLE);
|
window = SDL_CreateWindow("Happy Moose", MOOSEPIC_W * 4, MOOSEPIC_H * 4, SDL_WINDOW_RESIZABLE);
|
||||||
|
|
|
@ -29,7 +29,7 @@ GetNearbyFilename(const char *file)
|
||||||
base = SDL_GetBasePath();
|
base = SDL_GetBasePath();
|
||||||
|
|
||||||
if (base) {
|
if (base) {
|
||||||
SDL_RWops *rw;
|
SDL_IOStream *rw;
|
||||||
size_t len = SDL_strlen(base) + SDL_strlen(file) + 1;
|
size_t len = SDL_strlen(base) + SDL_strlen(file) + 1;
|
||||||
|
|
||||||
path = SDL_malloc(len);
|
path = SDL_malloc(len);
|
||||||
|
@ -42,9 +42,9 @@ GetNearbyFilename(const char *file)
|
||||||
(void)SDL_snprintf(path, len, "%s%s", base, file);
|
(void)SDL_snprintf(path, len, "%s%s", base, file);
|
||||||
SDL_free(base);
|
SDL_free(base);
|
||||||
|
|
||||||
rw = SDL_RWFromFile(path, "rb");
|
rw = SDL_IOFromFile(path, "rb");
|
||||||
if (rw) {
|
if (rw) {
|
||||||
SDL_CloseRW(rw);
|
SDL_CloseIO(rw);
|
||||||
return path;
|
return path;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -36,9 +36,9 @@ static SDL_Texture *CreateTexture(SDL_Renderer *r, unsigned char *data, unsigned
|
||||||
{
|
{
|
||||||
SDL_Texture *texture = NULL;
|
SDL_Texture *texture = NULL;
|
||||||
SDL_Surface *surface;
|
SDL_Surface *surface;
|
||||||
SDL_RWops *src = SDL_RWFromConstMem(data, len);
|
SDL_IOStream *src = SDL_IOFromConstMem(data, len);
|
||||||
if (src) {
|
if (src) {
|
||||||
surface = SDL_LoadBMP_RW(src, SDL_TRUE);
|
surface = SDL_LoadBMP_IO(src, SDL_TRUE);
|
||||||
if (surface) {
|
if (surface) {
|
||||||
/* Treat white as transparent */
|
/* Treat white as transparent */
|
||||||
SDL_SetSurfaceColorKey(surface, SDL_TRUE, SDL_MapRGB(surface->format, 255, 255, 255));
|
SDL_SetSurfaceColorKey(surface, SDL_TRUE, SDL_MapRGB(surface->format, 255, 255, 255));
|
||||||
|
|
Loading…
Reference in New Issue