SharedGraphics: Minor tweaks in rect shattering code.

This commit is contained in:
Andreas Kling 2019-02-19 16:37:12 +01:00
parent 57546d8420
commit 210646edd2
Notes: sideshowbarker 2024-07-19 15:40:12 +09:00
2 changed files with 3 additions and 5 deletions

View File

@ -15,13 +15,13 @@ void DisjointRectSet::add(const Rect& new_rect)
void DisjointRectSet::shatter()
{
Vector<Rect> output;
output.ensure_capacity(m_rects.size());
bool pass_had_intersections = false;
do {
pass_had_intersections = false;
output.clear_with_capacity();
for (size_t i = 0; i < m_rects.size(); ++i) {
auto& r1 = m_rects[i];
bool r1_had_intersections = false;
for (size_t j = 0; j < m_rects.size(); ++j) {
if (i == j)
continue;
@ -37,7 +37,6 @@ void DisjointRectSet::shatter()
output.append(m_rects[i]);
goto next_pass;
}
if (!r1_had_intersections)
output.append(r1);
}
next_pass:

View File

@ -39,7 +39,6 @@ Vector<Rect> Rect::shatter(const Rect& hammer) const
Vector<Rect> pieces;
if (!intersects(hammer)) {
pieces.append(*this);
pieces.append(hammer);
return pieces;
}
Rect top_shard {
@ -63,7 +62,7 @@ Vector<Rect> Rect::shatter(const Rect& hammer) const
Rect right_shard {
hammer.x() + hammer.width(),
max(hammer.y(), y()),
(x() + width() - 1) - (hammer.x() + hammer.width() - 1),
right() - hammer.right(),
min((hammer.y() + hammer.height()), (y() + height())) - max(hammer.y(), y())
};
if (intersects(top_shard))