diff --git a/LEGO1/mxbitmap.cpp b/LEGO1/mxbitmap.cpp index 1f3751b8..dea1b89e 100644 --- a/LEGO1/mxbitmap.cpp +++ b/LEGO1/mxbitmap.cpp @@ -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; diff --git a/LEGO1/mxbitmap.h b/LEGO1/mxbitmap.h index 65acfa5b..95d5ca09 100644 --- a/LEGO1/mxbitmap.h +++ b/LEGO1/mxbitmap.h @@ -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