summaryrefslogtreecommitdiff
path: root/src/helpers/Box.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/helpers/Box.cpp')
-rw-r--r--src/helpers/Box.cpp18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/helpers/Box.cpp b/src/helpers/Box.cpp
index 59578f23..e9e0eeeb 100644
--- a/src/helpers/Box.cpp
+++ b/src/helpers/Box.cpp
@@ -116,6 +116,24 @@ CBox& CBox::noNegativeSize() {
return *this;
}
+CBox& CBox::intersection(const CBox other) {
+ const float newTop = std::max(y, other.y);
+ const float newBottom = std::min(y + h, other.y + other.h);
+ const float newLeft = std::max(x, other.x);
+ const float newRight = std::min(x + w, other.x + other.w);
+ y = newTop;
+ x = newLeft;
+ w = newRight - newLeft;
+ h = newBottom - newTop;
+
+ if (w <= 0 || h <= 0) {
+ w = 0;
+ h = 0;
+ }
+
+ return *this;
+}
+
CBox CBox::roundInternal() {
float newW = x + w - std::floor(x);
float newH = y + h - std::floor(y);