//------------------------------------------------------------------------------ // Author: Gero Mueller // Copyright: (c) 2006 Gero Mueller // License: MIT License //------------------------------------------------------------------------------ #ifndef BLUECORE_RECTANGLE_H #define BLUECORE_RECTANGLE_H #include "Point.h" namespace BlueCore { template struct Rectangle2DTemplate { type _x, _y, _width, _height; Rectangle2DTemplate() : _x(0), _y(0), _width(0), _height(0) { } Rectangle2DTemplate( int x, int y, int width, int height ) : _x(x), _y(y), _width(width), _height(height) { } Rectangle2DTemplate( const Point2DTemplate &topLeft, const Point2DTemplate &bottomRight ) : _x(topLeft._x), _y(topLeft._y), _width(bottomRight._x - topLeft._x), _height(bottomRight._y - topLeft._y) { } Rectangle2DTemplate &operator=(const Rectangle2DTemplate &rect) { _x = rect._x; _y = rect._y; _width = rect._width; _height = rect._height; return *this; } bool overlaps( const Rectangle2DTemplate &rect ) { if( (rect._x + rect._width) < _x ) return false; if( rect._x > (_x + _width) ) return false; if( rect._y < (_y - _height) ) return false; if( (rect._y - rect._height) > _y ) return false; return true; } bool contains( const Point2DTemplate &point ) const { if( point._x < _x ) return false; if( point._y < _y ) return false; if( point._x > (_x + _width) ) return false; if( point._y > (_y + _height) ) return false; return true; } }; typedef Rectangle2DTemplate Rectangle2D; } #endif