Got vtable18 into a better state

It's progress doesn't affect the status of CopyColorData, which is
back at 100%, as it makes sense the loop is a memcpy
This commit is contained in:
Joshua Peisach 2023-07-29 15:38:54 -04:00
parent 8206a7be6a
commit 9ef1f3543b
No known key found for this signature in database
GPG Key ID: 41C3D4189AFEDB5A
2 changed files with 13 additions and 20 deletions

View File

@ -34,28 +34,21 @@ int MxBitmap::vtable14(int)
}
// OFFSET: LEGO1 0x100bcba0
int MxBitmap::vtable18(BITMAPINFOHEADER *p_bmiHeader)
MxResult MxBitmap::vtable18(BITMAPINFOHEADER *p_bmiHeader)
{
BITMAPINFO* bmi;
LPVOID *data;
MxResult result = FAILURE;
int height;
int width;
int width = p_bmiHeader->biWidth;
int height = p_bmiHeader->biHeight;
BITMAPINFO* bmi = new BITMAPINFO;
void *data;
bmi = new BITMAPINFO;
width = p_bmiHeader->biWidth;
height = p_bmiHeader->biHeight;
this->m_info = bmi;
if (bmi != NULL) {
data = (LPVOID*) malloc((width + 3U & 0xfffffffc) * height);
data = malloc((width + 3U & 0xfffffffc) * height);
this->m_data = (LPVOID*) data;
if(data != NULL) {
bmi = this->m_info;
for (width = 0x10a; width != 0; width--) {
(bmi->bmiHeader).biSize = p_bmiHeader->biSize;
p_bmiHeader = (BITMAPINFOHEADER*)&p_bmiHeader->biWidth;
bmi = (BITMAPINFO*)&(bmi->bmiHeader).biWidth;
}
memcpy(bmi, p_bmiHeader, 0x10a);
result = SUCCESS;
this->m_bmiHeader = &this->m_info->bmiHeader;
this->m_paletteData = this->m_info->bmiColors;

View File

@ -14,7 +14,7 @@ class MxBitmap : public MxCore
__declspec(dllexport) virtual ~MxBitmap(); // vtable+00
virtual int vtable14(int);
virtual int vtable18(BITMAPINFOHEADER *p_bmiHeader);
virtual MxResult vtable18(BITMAPINFOHEADER *p_bmiHeader);
virtual int vtable1c(int p_width, int p_height, MxPalette *p_palette, int);
virtual MxResult LoadFile(HANDLE p_handle);
__declspec(dllexport) virtual MxLong Read(const char *p_filename); // vtable+24
@ -27,12 +27,12 @@ class MxBitmap : public MxCore
virtual MxResult MxBitmap::CopyColorData(HDC p_hdc, int p_xSrc, int p_ySrc, int p_xDest, int p_yDest, int p_destWidth, int p_destHeight); // vtable+40
private:
BITMAPINFO *m_info;
BITMAPINFOHEADER *m_bmiHeader;
RGBQUAD *m_paletteData;
LPVOID *m_data;
BITMAPINFO *m_info; // 0x8
BITMAPINFOHEADER *m_bmiHeader; // 0xc
RGBQUAD *m_paletteData; // 0x10
LPVOID *m_data; // 0x14
MxBool m_bmiColorsProvided; // 0x18
MxPalette *m_palette;
MxPalette *m_palette; // 0x1c
};
#endif // MXBITMAP_H