From 210646edd2c711ada97c9a27eb8321bd22026c6f Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Tue, 19 Feb 2019 16:37:12 +0100 Subject: [PATCH] SharedGraphics: Minor tweaks in rect shattering code. --- SharedGraphics/DisjointRectSet.cpp | 5 ++--- SharedGraphics/Rect.cpp | 3 +-- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/SharedGraphics/DisjointRectSet.cpp b/SharedGraphics/DisjointRectSet.cpp index 76ba128e0f7..4966984c359 100644 --- a/SharedGraphics/DisjointRectSet.cpp +++ b/SharedGraphics/DisjointRectSet.cpp @@ -15,13 +15,13 @@ void DisjointRectSet::add(const Rect& new_rect) void DisjointRectSet::shatter() { Vector 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,8 +37,7 @@ void DisjointRectSet::shatter() output.append(m_rects[i]); goto next_pass; } - if (!r1_had_intersections) - output.append(r1); + output.append(r1); } next_pass: swap(output, m_rects); diff --git a/SharedGraphics/Rect.cpp b/SharedGraphics/Rect.cpp index aad87432d81..d97ce129dd5 100644 --- a/SharedGraphics/Rect.cpp +++ b/SharedGraphics/Rect.cpp @@ -39,7 +39,6 @@ Vector Rect::shatter(const Rect& hammer) const Vector pieces; if (!intersects(hammer)) { pieces.append(*this); - pieces.append(hammer); return pieces; } Rect top_shard { @@ -63,7 +62,7 @@ Vector 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))