mirror of
https://github.com/isledecomp/isle.git
synced 2026-01-21 07:11:16 +00:00
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:
parent
8206a7be6a
commit
9ef1f3543b
@ -34,28 +34,21 @@ int MxBitmap::vtable14(int)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// OFFSET: LEGO1 0x100bcba0
|
// OFFSET: LEGO1 0x100bcba0
|
||||||
int MxBitmap::vtable18(BITMAPINFOHEADER *p_bmiHeader)
|
MxResult MxBitmap::vtable18(BITMAPINFOHEADER *p_bmiHeader)
|
||||||
{
|
{
|
||||||
BITMAPINFO* bmi;
|
|
||||||
LPVOID *data;
|
|
||||||
MxResult result = FAILURE;
|
MxResult result = FAILURE;
|
||||||
int height;
|
int width = p_bmiHeader->biWidth;
|
||||||
int width;
|
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;
|
this->m_info = bmi;
|
||||||
if (bmi != NULL) {
|
if (bmi != NULL) {
|
||||||
data = (LPVOID*) malloc((width + 3U & 0xfffffffc) * height);
|
data = malloc((width + 3U & 0xfffffffc) * height);
|
||||||
this->m_data = (LPVOID*) data;
|
this->m_data = (LPVOID*) data;
|
||||||
if(data != NULL) {
|
if(data != NULL) {
|
||||||
bmi = this->m_info;
|
bmi = this->m_info;
|
||||||
for (width = 0x10a; width != 0; width--) {
|
memcpy(bmi, p_bmiHeader, 0x10a);
|
||||||
(bmi->bmiHeader).biSize = p_bmiHeader->biSize;
|
|
||||||
p_bmiHeader = (BITMAPINFOHEADER*)&p_bmiHeader->biWidth;
|
|
||||||
bmi = (BITMAPINFO*)&(bmi->bmiHeader).biWidth;
|
|
||||||
}
|
|
||||||
result = SUCCESS;
|
result = SUCCESS;
|
||||||
this->m_bmiHeader = &this->m_info->bmiHeader;
|
this->m_bmiHeader = &this->m_info->bmiHeader;
|
||||||
this->m_paletteData = this->m_info->bmiColors;
|
this->m_paletteData = this->m_info->bmiColors;
|
||||||
|
|||||||
@ -14,7 +14,7 @@ class MxBitmap : public MxCore
|
|||||||
__declspec(dllexport) virtual ~MxBitmap(); // vtable+00
|
__declspec(dllexport) virtual ~MxBitmap(); // vtable+00
|
||||||
|
|
||||||
virtual int vtable14(int);
|
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 int vtable1c(int p_width, int p_height, MxPalette *p_palette, int);
|
||||||
virtual MxResult LoadFile(HANDLE p_handle);
|
virtual MxResult LoadFile(HANDLE p_handle);
|
||||||
__declspec(dllexport) virtual MxLong Read(const char *p_filename); // vtable+24
|
__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
|
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:
|
private:
|
||||||
BITMAPINFO *m_info;
|
BITMAPINFO *m_info; // 0x8
|
||||||
BITMAPINFOHEADER *m_bmiHeader;
|
BITMAPINFOHEADER *m_bmiHeader; // 0xc
|
||||||
RGBQUAD *m_paletteData;
|
RGBQUAD *m_paletteData; // 0x10
|
||||||
LPVOID *m_data;
|
LPVOID *m_data; // 0x14
|
||||||
MxBool m_bmiColorsProvided; // 0x18
|
MxBool m_bmiColorsProvided; // 0x18
|
||||||
MxPalette *m_palette;
|
MxPalette *m_palette; // 0x1c
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // MXBITMAP_H
|
#endif // MXBITMAP_H
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user