mirror of
https://github.com/isledecomp/isle-portable.git
synced 2026-01-20 14:11:16 +00:00
Use SDL_IOStream to read bitmaps
This commit is contained in:
parent
79dca34394
commit
ad471494e0
@ -5,6 +5,7 @@
|
|||||||
#include "mxtypes.h"
|
#include "mxtypes.h"
|
||||||
|
|
||||||
#include <ddraw.h>
|
#include <ddraw.h>
|
||||||
|
#include <SDL3/SDL_iostream.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
class MxPalette;
|
class MxPalette;
|
||||||
@ -43,7 +44,7 @@ class MxBitmap : public MxCore {
|
|||||||
virtual MxResult ImportBitmap(MxBitmap* p_bitmap); // vtable+14
|
virtual MxResult ImportBitmap(MxBitmap* p_bitmap); // vtable+14
|
||||||
virtual MxResult ImportBitmapInfo(MxBITMAPINFO* p_info); // vtable+18
|
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 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
|
virtual MxLong Read(const char* p_filename); // vtable+24
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x1004e0d0
|
// FUNCTION: LEGO1 0x1004e0d0
|
||||||
|
|||||||
@ -175,11 +175,11 @@ MxResult MxBitmap::ImportBitmap(MxBitmap* p_bitmap)
|
|||||||
MxLong MxBitmap::Read(const char* p_filename)
|
MxLong MxBitmap::Read(const char* p_filename)
|
||||||
{
|
{
|
||||||
MxResult result = FAILURE;
|
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;
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -191,7 +191,7 @@ MxLong MxBitmap::Read(const char* p_filename)
|
|||||||
|
|
||||||
done:
|
done:
|
||||||
if (handle) {
|
if (handle) {
|
||||||
CloseHandle(handle);
|
SDL_CloseIO(handle);
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
@ -199,15 +199,14 @@ MxLong MxBitmap::Read(const char* p_filename)
|
|||||||
|
|
||||||
// FUNCTION: LEGO1 0x100bcd60
|
// FUNCTION: LEGO1 0x100bcd60
|
||||||
// FUNCTION: BETA10 0x1013d169
|
// FUNCTION: BETA10 0x1013d169
|
||||||
MxResult MxBitmap::LoadFile(HANDLE p_handle)
|
MxResult MxBitmap::LoadFile(SDL_IOStream* p_handle)
|
||||||
{
|
{
|
||||||
MxResult result = FAILURE;
|
MxResult result = FAILURE;
|
||||||
MxLong unused = 0;
|
MxLong unused = 0;
|
||||||
|
|
||||||
MxLong size;
|
MxLong size;
|
||||||
DWORD bytesRead;
|
|
||||||
BITMAPFILEHEADER hdr;
|
BITMAPFILEHEADER hdr;
|
||||||
if (!ReadFile(p_handle, &hdr, sizeof(hdr), &bytesRead, NULL)) {
|
if (!SDL_ReadIO(p_handle, &hdr, sizeof(hdr))) {
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -220,7 +219,7 @@ MxResult MxBitmap::LoadFile(HANDLE p_handle)
|
|||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!ReadFile(p_handle, m_info, MxBitmapInfoSize(), &bytesRead, NULL)) {
|
if (!SDL_ReadIO(p_handle, m_info, MxBitmapInfoSize())) {
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -234,7 +233,7 @@ MxResult MxBitmap::LoadFile(HANDLE p_handle)
|
|||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!ReadFile(p_handle, m_data, size, &bytesRead, NULL)) {
|
if (!SDL_ReadIO(p_handle, m_data, size)) {
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user