mirror of
https://github.com/isledecomp/isle.git
synced 2025-04-21 02:50:52 -04:00
Implement/match MxVideoManager::InvalidateRect and UpdateRegion (#214)
* Implement/match MxVideoManager::InvalidateRect and UpdateRegion * Update comment
This commit is contained in:
parent
8b1c8f7abe
commit
727c748ecd
3 changed files with 44 additions and 12 deletions
|
@ -21,7 +21,7 @@ void MxRegion::Reset()
|
|||
}
|
||||
|
||||
// OFFSET: LEGO1 0x100c3750 STUB
|
||||
void MxRegion::vtable18()
|
||||
void MxRegion::vtable18(MxRect32 &p_rect)
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
@ -33,7 +33,8 @@ void MxRegion::vtable1c()
|
|||
}
|
||||
|
||||
// OFFSET: LEGO1 0x100c3660 STUB
|
||||
void MxRegion::vtable20()
|
||||
MxBool MxRegion::vtable20()
|
||||
{
|
||||
// TODO
|
||||
return FALSE;
|
||||
}
|
|
@ -2,6 +2,7 @@
|
|||
#define MXREGION_H
|
||||
|
||||
#include "mxcore.h"
|
||||
#include "mxrect32.h"
|
||||
#include "decomp.h"
|
||||
|
||||
// VTABLE 0x100dcae8
|
||||
|
@ -13,16 +14,17 @@ public:
|
|||
virtual ~MxRegion() override;
|
||||
|
||||
virtual void Reset();
|
||||
virtual void vtable18();
|
||||
virtual void vtable18(MxRect32 &p_rect);
|
||||
virtual void vtable1c();
|
||||
virtual void vtable20();
|
||||
virtual MxBool vtable20();
|
||||
|
||||
inline MxRect32 &GetRect() { return this->m_rect; }
|
||||
|
||||
private:
|
||||
// A container (probably MxList) holding MxRect32
|
||||
// MxList<MxRect32> *m_rects;
|
||||
// 4 coordinates (could be MxRect32)
|
||||
// MxS32 left, top, right, bottom;
|
||||
undefined pad[0x14];
|
||||
// MxList<MxRect32*> *m_rects;
|
||||
undefined4 m_unk08;
|
||||
MxRect32 m_rect;
|
||||
};
|
||||
|
||||
#endif // MXREGION_H
|
||||
|
|
|
@ -120,10 +120,34 @@ void MxVideoManager::SortPresenterList()
|
|||
}
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x100be3e0 STUB
|
||||
// OFFSET: LEGO1 0x100be3e0
|
||||
void MxVideoManager::UpdateRegion()
|
||||
{
|
||||
// TODO
|
||||
if (m_region->vtable20() == FALSE) {
|
||||
MxS32 left, top, right, bottom;
|
||||
MxRect32 ®ionRect = m_region->GetRect();
|
||||
|
||||
left = m_videoParam.GetRect().m_left;
|
||||
if (left <= regionRect.m_left)
|
||||
left = regionRect.m_left;
|
||||
|
||||
top = regionRect.m_top;
|
||||
if (top <= m_videoParam.GetRect().m_top)
|
||||
top = m_videoParam.GetRect().m_top;
|
||||
|
||||
right = regionRect.m_right;
|
||||
if (right >= m_videoParam.GetRect().m_right)
|
||||
right = m_videoParam.GetRect().m_right;
|
||||
|
||||
bottom = m_videoParam.GetRect().m_bottom;
|
||||
if (bottom >= regionRect.m_bottom)
|
||||
bottom = regionRect.m_bottom;
|
||||
|
||||
m_displaySurface->Display(
|
||||
left, top, left, top,
|
||||
right - left + 1, bottom - top + 1
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x100bea50
|
||||
|
@ -132,10 +156,15 @@ void MxVideoManager::Destroy()
|
|||
Destroy(FALSE);
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x100bea60 STUB
|
||||
// OFFSET: LEGO1 0x100bea60
|
||||
void MxVideoManager::InvalidateRect(MxRect32 &p_rect)
|
||||
{
|
||||
// TODO
|
||||
m_criticalSection.Enter();
|
||||
|
||||
if (m_region)
|
||||
m_region->vtable18(p_rect);
|
||||
|
||||
m_criticalSection.Leave();
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x100bebe0
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue