#pragma once #include "engine/data/vector2.hpp" #include enum CoordsValidation { VALID, X_HIGH, X_LOW, Y_HIGH, Y_LOW }; struct BoundsOptions { uint32_t width; uint32_t height; }; class Bounds { public: explicit Bounds(const BoundsOptions &options); [[nodiscard]] uint32_t get_width() const noexcept; void set_width(uint32_t width) noexcept; [[nodiscard]] uint32_t get_height() const noexcept; void set_height(uint32_t height) noexcept; [[nodiscard]] CoordsValidation validate_coords(const Vector2 &coords) const noexcept; const Bounds &operator*=(const Bounds &bounds) noexcept; const Bounds &operator+=(const Bounds &bounds) noexcept; const Bounds &operator-=(const Bounds &bounds) noexcept; private: uint32_t _width = 0U; uint32_t _height = 0U; };