/* * Rect.h * * Created on: Dec 4, 2016 * Author: tibi */ #ifndef UTILS_RECT_H_ #define UTILS_RECT_H_ namespace farmlands { namespace utils { template class Rect { public: // Constructors Rect() : x(), y(), w(), h() { } Rect(T x, T y, T w, T h) : x(x), y(y), w(w), h(h) { } bool contains(T px, T py) { bool containsX = (x <= px && px <= x + w); bool containsY = (y <= px && px <= x + w); return containsX && containsY; } bool intersects(const Rect other) { bool intersectsX = (x <= other.x && other.x <= x + w) || (other.x <= x && other.x + other.w >= x); bool intersectsY = (y <= other.y && other.y <= y + h) || (other.y <= y && other.y + other.h >= y); return intersectsX && intersectsY; } // Values T x, y, w, h; }; typedef Rect RectF; } /* namespace utils */ } /* namespace farmlands */ #endif /* UTILS_RECT_H_ */