summaryrefslogtreecommitdiff
path: root/SharedGraphics
diff options
context:
space:
mode:
authorAndreas Kling <awesomekling@gmail.com>2019-02-19 16:37:12 +0100
committerAndreas Kling <awesomekling@gmail.com>2019-02-19 16:37:12 +0100
commit210646edd2c711ada97c9a27eb8321bd22026c6f (patch)
tree4b45491d61afc0def5879014a89a2b587cb6f991 /SharedGraphics
parent57546d84205ac98c8af6cc435f494391ed02c51d (diff)
downloadserenity-210646edd2c711ada97c9a27eb8321bd22026c6f.zip
SharedGraphics: Minor tweaks in rect shattering code.
Diffstat (limited to 'SharedGraphics')
-rw-r--r--SharedGraphics/DisjointRectSet.cpp5
-rw-r--r--SharedGraphics/Rect.cpp3
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))