aboutsummaryrefslogtreecommitdiff
path: root/src/engine/graphics/bounds.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/engine/graphics/bounds.cpp')
-rw-r--r--src/engine/graphics/bounds.cpp65
1 files changed, 65 insertions, 0 deletions
diff --git a/src/engine/graphics/bounds.cpp b/src/engine/graphics/bounds.cpp
new file mode 100644
index 0000000..8cb83eb
--- /dev/null
+++ b/src/engine/graphics/bounds.cpp
@@ -0,0 +1,65 @@
+#include "bounds.hpp"
+
+Bounds::Bounds(const IBoundsOptions &options)
+ : _width(options.width), _height(options.height)
+{
+}
+
+unsigned int Bounds::width() const
+{
+ return _width;
+}
+
+void Bounds::width(unsigned int width)
+{
+ _width = width;
+}
+
+unsigned int Bounds::height() const
+{
+ return _height;
+}
+
+void Bounds::height(unsigned int height)
+{
+ _height = height;
+}
+
+CoordsValidation Bounds::validate_coords(const IVector2 &coords) const
+{
+ if (coords.x() >= _width)
+ {
+ return CoordsValidation::X_HIGH;
+ }
+
+ if (coords.y() >= _height)
+ {
+ return CoordsValidation::Y_HIGH;
+ }
+
+ return CoordsValidation::VALID;
+}
+
+const IBounds &Bounds::operator*=(const IBounds &bounds)
+{
+ _width *= bounds.width();
+ _height *= bounds.height();
+
+ return *this;
+}
+
+const IBounds &Bounds::operator+=(const IBounds &bounds)
+{
+ _width += bounds.width();
+ _height += bounds.height();
+
+ return *this;
+}
+
+const IBounds &Bounds::operator-=(const IBounds &bounds)
+{
+ _width -= bounds.width();
+ _height -= bounds.height();
+
+ return *this;
+}