Use SDL_IOStream to read bitmaps

This commit is contained in:
Anonymous Maarten 2024-12-23 22:03:14 +01:00
parent 79dca34394
commit ad471494e0
2 changed files with 10 additions and 10 deletions

View File

@ -5,6 +5,7 @@
#include "mxtypes.h"
#include <ddraw.h>
#include <SDL3/SDL_iostream.h>
#include <stdlib.h>
class MxPalette;
@ -43,7 +44,7 @@ class MxBitmap : public MxCore {
virtual MxResult ImportBitmap(MxBitmap* p_bitmap); // vtable+14
virtual MxResult ImportBitmapInfo(MxBITMAPINFO* p_info); // vtable+18
virtual MxResult SetSize(MxS32 p_width, MxS32 p_height, MxPalette* p_palette, MxBool); // vtable+1c
virtual MxResult LoadFile(HANDLE p_handle); // vtable+20
virtual MxResult LoadFile(SDL_IOStream* p_handle); // vtable+20
virtual MxLong Read(const char* p_filename); // vtable+24
// FUNCTION: LEGO1 0x1004e0d0

View File

@ -175,11 +175,11 @@ MxResult MxBitmap::ImportBitmap(MxBitmap* p_bitmap)
MxLong MxBitmap::Read(const char* p_filename)
{
MxResult result = FAILURE;
HANDLE handle = 0;
SDL_IOStream *handle;
handle = CreateFileA(p_filename, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
handle = SDL_IOFromFile(p_filename, "rb");
if (handle == INVALID_HANDLE_VALUE) {
if (handle == NULL) {
goto done;
}
@ -191,7 +191,7 @@ MxLong MxBitmap::Read(const char* p_filename)
done:
if (handle) {
CloseHandle(handle);
SDL_CloseIO(handle);
}
return result;
@ -199,15 +199,14 @@ MxLong MxBitmap::Read(const char* p_filename)
// FUNCTION: LEGO1 0x100bcd60
// FUNCTION: BETA10 0x1013d169
MxResult MxBitmap::LoadFile(HANDLE p_handle)
MxResult MxBitmap::LoadFile(SDL_IOStream* p_handle)
{
MxResult result = FAILURE;
MxLong unused = 0;
MxLong size;
DWORD bytesRead;
BITMAPFILEHEADER hdr;
if (!ReadFile(p_handle, &hdr, sizeof(hdr), &bytesRead, NULL)) {
if (!SDL_ReadIO(p_handle, &hdr, sizeof(hdr))) {
goto done;
}
@ -220,7 +219,7 @@ MxResult MxBitmap::LoadFile(HANDLE p_handle)
goto done;
}
if (!ReadFile(p_handle, m_info, MxBitmapInfoSize(), &bytesRead, NULL)) {
if (!SDL_ReadIO(p_handle, m_info, MxBitmapInfoSize())) {
goto done;
}
@ -234,7 +233,7 @@ MxResult MxBitmap::LoadFile(HANDLE p_handle)
goto done;
}
if (!ReadFile(p_handle, m_data, size, &bytesRead, NULL)) {
if (!SDL_ReadIO(p_handle, m_data, size)) {
goto done;
}