diff options
author | Andreas Kling <awesomekling@gmail.com> | 2019-02-19 16:37:12 +0100 |
---|---|---|
committer | Andreas Kling <awesomekling@gmail.com> | 2019-02-19 16:37:12 +0100 |
commit | 210646edd2c711ada97c9a27eb8321bd22026c6f (patch) | |
tree | 4b45491d61afc0def5879014a89a2b587cb6f991 | |
parent | 57546d84205ac98c8af6cc435f494391ed02c51d (diff) | |
download | serenity-210646edd2c711ada97c9a27eb8321bd22026c6f.zip |
SharedGraphics: Minor tweaks in rect shattering code.
-rw-r--r-- | SharedGraphics/DisjointRectSet.cpp | 5 | ||||
-rw-r--r-- | SharedGraphics/Rect.cpp | 3 |
2 files changed, 3 insertions, 5 deletions
diff --git a/SharedGraphics/DisjointRectSet.cpp b/SharedGraphics/DisjointRectSet.cpp index 76ba128e0f..4966984c35 100644 --- a/SharedGraphics/DisjointRectSet.cpp +++ b/SharedGraphics/DisjointRectSet.cpp @@ -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,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 aad87432d8..d97ce129dd 100644 --- a/SharedGraphics/Rect.cpp +++ b/SharedGraphics/Rect.cpp @@ -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)) |