Merge branch 'master' of https://github.com/isledecomp/isle-portable into draw-cursor

This commit is contained in:
Helloyunho 2025-07-03 23:59:54 +09:00
commit 3a6fa6c6a3
No known key found for this signature in database
GPG Key ID: 6AFA210B0150BE47

View File

@ -275,61 +275,37 @@ void MxVideoPresenter::PutFrame()
} }
} }
else { else {
MxRegionCursor cursor(region); RECT src, dest;
MxRect32* regionRect;
while ((regionRect = cursor.Next(rect))) { if (m_unk0x58) {
if (regionRect->GetWidth() >= 1 && regionRect->GetHeight() >= 1) { src.left = 0;
RECT src, dest; src.top = 0;
src.right = GetWidth();
src.bottom = GetHeight();
if (m_unk0x58) { dest.left = GetX();
src.left = regionRect->GetLeft() - GetX(); dest.top = GetY();
src.top = regionRect->GetTop() - GetY(); dest.right = dest.left + GetWidth();
src.right = src.left + regionRect->GetWidth(); dest.bottom = dest.top + GetHeight();
src.bottom = src.top + regionRect->GetHeight(); }
dest.left = regionRect->GetLeft(); if (m_action->GetFlags() & MxDSAction::c_bit4) {
dest.top = regionRect->GetTop(); if (m_unk0x58) {
dest.right = dest.left + regionRect->GetWidth(); if (PrepareRects(src, dest) >= 0) {
dest.bottom = dest.top + regionRect->GetHeight(); ddSurface->Blt(&dest, m_unk0x58, &src, DDBLT_KEYSRC, NULL);
}
if (m_action->GetFlags() & MxDSAction::c_bit4) {
if (m_unk0x58) {
if (PrepareRects(src, dest) >= 0) {
ddSurface->Blt(&dest, m_unk0x58, &src, DDBLT_KEYSRC, NULL);
}
}
else {
displaySurface->VTable0x30(
m_frameBitmap,
regionRect->GetLeft() - GetX(),
regionRect->GetTop() - GetY(),
regionRect->GetLeft(),
regionRect->GetTop(),
regionRect->GetWidth(),
regionRect->GetHeight(),
FALSE
);
}
}
else if (m_unk0x58) {
if (PrepareRects(src, dest) >= 0) {
ddSurface->Blt(&dest, m_unk0x58, &src, DDBLT_NONE, NULL);
}
}
else {
displaySurface->VTable0x28(
m_frameBitmap,
regionRect->GetLeft() - GetX(),
regionRect->GetTop() - GetY(),
regionRect->GetLeft(),
regionRect->GetTop(),
regionRect->GetWidth(),
regionRect->GetHeight()
);
} }
} }
else {
displaySurface->VTable0x30(m_frameBitmap, 0, 0, GetX(), GetY(), GetWidth(), GetHeight(), FALSE);
}
}
else if (m_unk0x58) {
if (PrepareRects(src, dest) >= 0) {
ddSurface->Blt(&dest, m_unk0x58, &src, DDBLT_NONE, NULL);
}
}
else {
displaySurface->VTable0x28(m_frameBitmap, 0, 0, GetX(), GetY(), GetWidth(), GetHeight());
} }
} }
} }