Start vtable14

This commit is contained in:
Joshua Peisach 2023-08-25 13:52:32 -04:00
parent d00caaa698
commit 81a052e625
No known key found for this signature in database
GPG Key ID: 41C3D4189AFEDB5A
2 changed files with 36 additions and 4 deletions

View File

@ -30,10 +30,42 @@ MxBitmap::~MxBitmap()
delete m_palette; delete m_palette;
} }
// OFFSET: LEGO1 0x100bcc40 STUB // OFFSET: LEGO1 0x100bcc40
int MxBitmap::vtable14(int) MxResult MxBitmap::vtable14(MxBitmap *p_bitmap)
{ {
return 0; MxLong height;
MxResult result = FAILURE;
MxLong size;
this->m_info = new MxBITMAPINFO;
if(this->m_info) {
height = p_bitmap->m_bmiHeader->biHeight;
if (height <= 0L) {
height = -height;
}
size = (p_bitmap->m_bmiHeader->biWidth + 3U & -4) * height;
this->m_data = (LPVOID*) new MxU8[size];
if(this->m_data) {
memcpy(this->m_info, p_bitmap->m_info, sizeof(MxBITMAPINFO));
memcpy(this->m_bmiHeader, p_bitmap->m_bmiHeader, sizeof(MxBITMAPINFO));
memcpy(this->m_paletteData, p_bitmap->m_paletteData, sizeof(MxBITMAPINFO));
memcpy(this->m_data, p_bitmap->m_data, sizeof(MxBITMAPINFO));
result = SUCCESS;
this->m_bmiHeader = &this->m_info->bmiHeader;
this->m_paletteData = this->m_info->bmiColors;
}
}
if (result != SUCCESS) {
if (this->m_info) {
delete this->m_info;
this->m_info = NULL;
}
if (this->m_data) {
delete this->m_data;
this->m_data = NULL;
}
}
return result;
} }
// OFFSET: LEGO1 0x100bcba0 // OFFSET: LEGO1 0x100bcba0

View File

@ -31,7 +31,7 @@ class MxBitmap : public MxCore
__declspec(dllexport) MxBitmap(); __declspec(dllexport) MxBitmap();
__declspec(dllexport) virtual ~MxBitmap(); // vtable+00 __declspec(dllexport) virtual ~MxBitmap(); // vtable+00
virtual int vtable14(int); virtual MxResult vtable14(MxBitmap *p_bitmap);
virtual MxResult vtable18(MxBITMAPINFO *p_info); virtual MxResult vtable18(MxBITMAPINFO *p_info);
virtual MxResult vtable1c(int p_width, int p_height, MxPalette *p_palette, int); virtual MxResult vtable1c(int p_width, int p_height, MxPalette *p_palette, int);
virtual MxResult LoadFile(HANDLE p_handle); virtual MxResult LoadFile(HANDLE p_handle);