Skip to content

Commit

Permalink
SharedGraphics: Make Rect::shatter() return a Vector<Rect, 4>.
Browse files Browse the repository at this point in the history
We know that shatter() will never return more than four rects, so we can
use vector inline capacity to always avoid heap allocation here.
  • Loading branch information
awesomekling committed May 27, 2019
1 parent 3873c51 commit 4fb2e5d
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 8 deletions.
14 changes: 7 additions & 7 deletions SharedGraphics/Rect.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -34,11 +34,11 @@ Rect Rect::united(const Rect& other) const
return rect;
}

Vector<Rect> Rect::shatter(const Rect& hammer) const
Vector<Rect, 4> Rect::shatter(const Rect& hammer) const
{
Vector<Rect> pieces;
Vector<Rect, 4> pieces;
if (!intersects(hammer)) {
pieces.append(*this);
pieces.unchecked_append(*this);
return pieces;
}
Rect top_shard {
Expand Down Expand Up @@ -66,13 +66,13 @@ Vector<Rect> Rect::shatter(const Rect& hammer) const
min((hammer.y() + hammer.height()), (y() + height())) - max(hammer.y(), y())
};
if (intersects(top_shard))
pieces.append(top_shard);
pieces.unchecked_append(top_shard);
if (intersects(bottom_shard))
pieces.append(bottom_shard);
pieces.unchecked_append(bottom_shard);
if (intersects(left_shard))
pieces.append(left_shard);
pieces.unchecked_append(left_shard);
if (intersects(right_shard))
pieces.append(right_shard);
pieces.unchecked_append(right_shard);

return pieces;
}
Expand Down
2 changes: 1 addition & 1 deletion SharedGraphics/Rect.h
Original file line number Diff line number Diff line change
Expand Up @@ -177,7 +177,7 @@ class Rect {
Point location() const { return m_location; }
Size size() const { return m_size; }

Vector<Rect> shatter(const Rect& hammer) const;
Vector<Rect, 4> shatter(const Rect& hammer) const;

operator WSAPI_Rect() const;

Expand Down

0 comments on commit 4fb2e5d

Please sign in to comment.