summaryrefslogblamecommitdiffstats
path: root/src/math/Rect.h
blob: e9b25896e795dad0d4ff0dd5a6aece94b81bbe6f (plain) (tree)
1
2
3
4
5
6
7
8
9

            



                                
                                
                                
                                
 

                                                  


                                            

                                              
         


















                                                                  






                                         

                            





                            















                                                     

                                                      
  
#pragma once

class CRect
{
public:
	float left;     // x min
	float bottom;   // y max
	float right;    // x max
	float top;      // y min

	CRect(void);
	CRect(float l, float t, float r, float b);
	void ContainPoint(CVector const &v){
		if(v.x < left) left = v.x;
		if(v.x > right) right = v.x;
		if(v.y < top) top = v.y;
		if(v.y > bottom) bottom = v.y;
	}
	void ContainRect(const CRect &r){
		if(r.left < left) left = r.left;
		if(r.right > right) right = r.right;
		if(r.top < top) top = r.top;
		if(r.bottom > bottom) bottom = r.bottom;
	}

	bool IsPointInside(const CVector2D &p){
		return p.x >= left &&
			p.x <= right &&
			p.y >= top &&
			p.y <= bottom;
	}
	bool IsPointInside(const CVector2D &p, float extraRadius){
		return p.x >= left-extraRadius &&
			p.x <= right+extraRadius &&
			p.y >= top-extraRadius &&
			p.y <= bottom+extraRadius;
	}

	void Translate(float x, float y){
		left += x;
		right += x;
		bottom += y;
		top += y;
	}

	void Grow(float r) {
		left -= r;
		right += r;
		top -= r;
		bottom += r;
	}

	void Grow(float l, float r)
	{
		left -= l;
		top -= l;
		right += r;
		bottom += r;
	}

	void Grow(float l, float r, float t, float b)
	{
		left -= l;
		top -= t;
		right += r;
		bottom += b;
	}

	float GetWidth(void) { return right - left; }
	float GetHeight(void) { return bottom - top; }
};