92 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			92 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| //------------------------------------------------------------------------------
 | |
| // Author:		Gero Mueller <gero.mueller@cloo.de>
 | |
| // Copyright:	(c) 2006 Gero Mueller
 | |
| // License:		MIT License
 | |
| //------------------------------------------------------------------------------
 | |
| 
 | |
| #ifndef BLUECORE_RECTANGLE_H
 | |
| #define BLUECORE_RECTANGLE_H
 | |
| 
 | |
| #include "point.h"
 | |
| 
 | |
| namespace BlueCore
 | |
| {
 | |
| 	template<typename type>
 | |
| 	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<type> &topLeft, const Point2DTemplate<type> &bottomRight ) :
 | |
| 			_x(topLeft._x),
 | |
| 			_y(topLeft._y),
 | |
| 			_width(bottomRight._x - topLeft._x),
 | |
| 			_height(bottomRight._y - topLeft._y)
 | |
| 		{
 | |
| 		} 
 | |
| 		
 | |
| 		Rectangle2DTemplate &operator=(const Rectangle2DTemplate<type> &rect)
 | |
| 		{
 | |
| 			_x = rect._x;
 | |
| 			_y = rect._y;
 | |
| 			_width = rect._width;
 | |
| 			_height = rect._height;
 | |
| 			
 | |
| 			return *this;
 | |
| 		}
 | |
| 		
 | |
| 		bool overlaps( const Rectangle2DTemplate<type> &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<type> &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<int> Rectangle2D;
 | |
| }
 | |
| 	
 | |
| #endif
 | 
