diff options
author | Andreas Kling <awesomekling@gmail.com> | 2019-01-19 23:22:46 +0100 |
---|---|---|
committer | Andreas Kling <awesomekling@gmail.com> | 2019-01-19 23:22:46 +0100 |
commit | 7e5b81fe4807f89868af61ab27b53f003d607167 (patch) | |
tree | 219fa209115c2708d56be06205aff43b01279cf3 /SharedGraphics/Rect.cpp | |
parent | b75ee4aacbf41539d73f494da5aba468310b71b9 (diff) | |
download | serenity-7e5b81fe4807f89868af61ab27b53f003d607167.zip |
Make a SharedGraphics directory for classes shared between Kernel and LibGUI.
Diffstat (limited to 'SharedGraphics/Rect.cpp')
-rw-r--r-- | SharedGraphics/Rect.cpp | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/SharedGraphics/Rect.cpp b/SharedGraphics/Rect.cpp new file mode 100644 index 0000000000..5b01bf2e1e --- /dev/null +++ b/SharedGraphics/Rect.cpp @@ -0,0 +1,35 @@ +#include "Rect.h" +#include <AK/StdLibExtras.h> + +void Rect::intersect(const Rect& other) +{ + int l = max(left(), other.left()); + int r = min(right(), other.right()); + int t = max(top(), other.top()); + int b = min(bottom(), other.bottom()); + + if (l >= r || t >= b) { + m_location = { }; + m_size = { }; + return; + } + + m_location.set_x(l); + m_location.set_y(t); + m_size.set_width((r - l) + 1); + m_size.set_height((b - t) + 1); +} + +Rect Rect::united(const Rect& other) const +{ + if (is_null()) + return other; + if (other.is_null()) + return *this; + Rect rect; + rect.set_left(min(left(), other.left())); + rect.set_top(min(top(), other.top())); + rect.set_right(max(right(), other.right())); + rect.set_bottom(max(bottom(), other.bottom())); + return rect; +} |