mirror of
https://github.com/halpz/re3.git
synced 2025-01-08 20:25:28 +00:00
72 lines
1.3 KiB
C++
72 lines
1.3 KiB
C++
#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; }
|
|
};
|