This commit is contained in:
Christian Semmler
2023-10-18 16:42:38 -04:00
parent d3858d51a6
commit ab81adf774

View File

@@ -42,40 +42,41 @@ void MxRegion::vtable18(MxRect32 &p_rect)
MxRegionListCursor cursor(m_list); MxRegionListCursor cursor(m_list);
if (rectCopy.m_left < rectCopy.m_right) { if (rectCopy.m_left < rectCopy.m_right) {
MxRegionTopBottom *topBottom; while (rectCopy.m_top < rectCopy.m_bottom) {
while (rectCopy.m_top < rectCopy.m_bottom && cursor.Next(topBottom)) { MxRegionTopBottom *topBottom;
if (!cursor.Next(topBottom))
break;
if (topBottom->m_top >= rectCopy.m_bottom) { if (topBottom->m_top >= rectCopy.m_bottom) {
MxRegionTopBottom *newTopBottom = new MxRegionTopBottom(rectCopy); MxRegionTopBottom *newTopBottom = new MxRegionTopBottom(rectCopy);
cursor.Prepend(newTopBottom); cursor.Prepend(newTopBottom);
rectCopy.m_top = rectCopy.m_bottom; rectCopy.m_top = rectCopy.m_bottom;
} }
else { else if (rectCopy.m_top < topBottom->m_bottom) {
if (rectCopy.m_top < topBottom->m_bottom) { if (rectCopy.m_top < topBottom->m_top) {
if (rectCopy.m_top < topBottom->m_top) { MxRect32 topBottomRect(rectCopy.m_left, rectCopy.m_top, rectCopy.m_right, topBottom->m_top);
MxRect32 topBottomRect(rectCopy.m_left, rectCopy.m_top, rectCopy.m_right, topBottom->m_top); MxRegionTopBottom *newTopBottom = new MxRegionTopBottom(topBottomRect);
MxRegionTopBottom *newTopBottom = new MxRegionTopBottom(topBottomRect); cursor.Prepend(newTopBottom);
cursor.Prepend(newTopBottom); rectCopy.m_top = topBottom->m_top;
rectCopy.m_top = topBottom->m_top; }
} else if (topBottom->m_top < rectCopy.m_top) {
else if (topBottom->m_top < rectCopy.m_top) { MxRegionTopBottom *newTopBottom = topBottom->Clone();
MxRegionTopBottom *newTopBottom = topBottom->Clone(); newTopBottom->m_bottom = rectCopy.m_top;
newTopBottom->m_bottom = rectCopy.m_top; topBottom->m_top = rectCopy.m_top;
topBottom->m_top = rectCopy.m_top; cursor.Prepend(newTopBottom);
cursor.Prepend(newTopBottom); }
}
if (rectCopy.m_bottom < topBottom->m_top) { if (rectCopy.m_bottom < topBottom->m_top) {
MxRegionTopBottom *newTopBottom = topBottom->Clone(); MxRegionTopBottom *newTopBottom = topBottom->Clone();
newTopBottom->m_bottom = rectCopy.m_bottom; newTopBottom->m_bottom = rectCopy.m_bottom;
topBottom->m_top = rectCopy.m_bottom; topBottom->m_top = rectCopy.m_bottom;
newTopBottom->FUN_100c5280(rectCopy.m_left, rectCopy.m_right); newTopBottom->FUN_100c5280(rectCopy.m_left, rectCopy.m_right);
cursor.Prepend(newTopBottom); cursor.Prepend(newTopBottom);
rectCopy.m_top = rectCopy.m_bottom; rectCopy.m_top = rectCopy.m_bottom;
} }
else { else {
topBottom->FUN_100c5280(rectCopy.m_left, rectCopy.m_right); topBottom->FUN_100c5280(rectCopy.m_left, rectCopy.m_right);
rectCopy.m_top = topBottom->m_top; rectCopy.m_top = topBottom->m_top;
}
} }
} }