CPos, CRect, CSize
This was SVN commit r288.
This commit is contained in:
parent
2954ec7997
commit
97441efac6
@ -20,4 +20,394 @@ COverlay::COverlay(const CRect& rect,int z,const CColor& color,const char* textu
|
||||
|
||||
COverlay::~COverlay()
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
CRect::CRect() :
|
||||
left(0), top(0), right(0), bottom(0)
|
||||
{
|
||||
}
|
||||
|
||||
CRect::CRect(const CPos &pos) :
|
||||
left(pos.x), top(pos.y), right(pos.x), bottom(pos.y)
|
||||
{
|
||||
}
|
||||
|
||||
CRect::CRect(const CSize &size) :
|
||||
left(0), top(0), right(size.cx), bottom(size.cy)
|
||||
{
|
||||
}
|
||||
|
||||
CRect::CRect(const CPos &upperleft, const CPos &bottomright) :
|
||||
left(upperleft.x), top(upperleft.y), right(bottomright.x), bottom(bottomright.y)
|
||||
{
|
||||
}
|
||||
|
||||
CRect::CRect(const CPos &pos, const CSize &size) :
|
||||
left(pos.x), top(pos.y), right(pos.x+size.cx), bottom(pos.y+size.cy)
|
||||
{
|
||||
}
|
||||
|
||||
CRect::CRect(const int32 &_l, const int32 &_t, const int32 &_r, const int32 &_b) :
|
||||
left(_l), top(_t), right(_r), bottom(_b)
|
||||
{
|
||||
}
|
||||
|
||||
// =
|
||||
void CRect::operator = (const CRect& a)
|
||||
{
|
||||
left = a.left;
|
||||
top = a.top;
|
||||
right = a.right;
|
||||
bottom = a.bottom;
|
||||
}
|
||||
|
||||
// ==
|
||||
bool CRect::operator ==(const CRect &a) const
|
||||
{
|
||||
return (left==a.left &&
|
||||
top==a.top &&
|
||||
right==a.right &&
|
||||
bottom==a.bottom);
|
||||
}
|
||||
|
||||
// !=
|
||||
bool CRect::operator != (const CRect& a) const
|
||||
{
|
||||
return !(*this==a);
|
||||
}
|
||||
|
||||
// - (the unary operator)
|
||||
CRect CRect::operator - (void) const
|
||||
{
|
||||
return CRect(-left, -top, -right, -bottom);
|
||||
}
|
||||
|
||||
// + (the unary operator)
|
||||
CRect CRect::operator + (void) const
|
||||
{
|
||||
return *this;
|
||||
}
|
||||
|
||||
// +
|
||||
CRect CRect::operator + (const CRect& a) const
|
||||
{
|
||||
return CRect(left+a.left, top+a.top, right+a.right, bottom+a.bottom);
|
||||
}
|
||||
|
||||
// +
|
||||
CRect CRect::operator + (const CPos& a) const
|
||||
{
|
||||
return CRect(left+a.x, top+a.y, right+a.x, bottom+a.y);
|
||||
}
|
||||
|
||||
// +
|
||||
CRect CRect::operator + (const CSize& a) const
|
||||
{
|
||||
return CRect(left+a.cx, top+a.cy, right+a.cx, bottom+a.cy);
|
||||
}
|
||||
|
||||
// -
|
||||
CRect CRect::operator - (const CRect& a) const
|
||||
{
|
||||
return CRect(left-a.left, top-a.top, right-a.right, bottom-a.bottom);
|
||||
}
|
||||
|
||||
// -
|
||||
CRect CRect::operator - (const CPos& a) const
|
||||
{
|
||||
return CRect(left-a.x, top-a.y, right-a.x, bottom-a.y);
|
||||
}
|
||||
|
||||
// -
|
||||
CRect CRect::operator - (const CSize& a) const
|
||||
{
|
||||
return CRect(left-a.cx, top-a.cy, right-a.cx, bottom-a.cy);
|
||||
}
|
||||
|
||||
// +=
|
||||
void CRect::operator +=(const CRect& a)
|
||||
{
|
||||
left += a.left;
|
||||
top += a.top;
|
||||
right += a.right;
|
||||
bottom += a.bottom;
|
||||
}
|
||||
|
||||
// +=
|
||||
void CRect::operator +=(const CPos& a)
|
||||
{
|
||||
left += a.x;
|
||||
top += a.y;
|
||||
right += a.x;
|
||||
bottom += a.y;
|
||||
}
|
||||
|
||||
// +=
|
||||
void CRect::operator +=(const CSize& a)
|
||||
{
|
||||
left += a.cx;
|
||||
top += a.cy;
|
||||
right += a.cx;
|
||||
bottom += a.cy;
|
||||
}
|
||||
|
||||
// -=
|
||||
void CRect::operator -=(const CRect& a)
|
||||
{
|
||||
left -= a.left;
|
||||
top -= a.top;
|
||||
right -= a.right;
|
||||
bottom -= a.bottom;
|
||||
}
|
||||
|
||||
// -=
|
||||
void CRect::operator -=(const CPos& a)
|
||||
{
|
||||
left -= a.x;
|
||||
top -= a.y;
|
||||
right -= a.x;
|
||||
bottom -= a.y;
|
||||
}
|
||||
|
||||
// -=
|
||||
void CRect::operator -=(const CSize& a)
|
||||
{
|
||||
left -= a.cx;
|
||||
top -= a.cy;
|
||||
right -= a.cx;
|
||||
bottom -= a.cy;
|
||||
}
|
||||
|
||||
int32 CRect::GetWidth() const
|
||||
{
|
||||
return right-left;
|
||||
}
|
||||
|
||||
int32 CRect::GetHeight() const
|
||||
{
|
||||
return bottom-top;
|
||||
}
|
||||
|
||||
CSize CRect::GetSize() const
|
||||
{
|
||||
return CSize(right-left, bottom-top);
|
||||
}
|
||||
|
||||
CPos CRect::TopLeft() const
|
||||
{
|
||||
return CPos(left, top);
|
||||
}
|
||||
|
||||
CPos CRect::BottomRight() const
|
||||
{
|
||||
return CPos(right, right);
|
||||
}
|
||||
|
||||
CPos CRect::CenterPoint() const
|
||||
{
|
||||
return CPos((left+right)/2, (top+bottom)/2);
|
||||
}
|
||||
|
||||
bool CRect::PointInside(const CPos &point) const
|
||||
{
|
||||
return (point.x >= left &&
|
||||
point.x <= right &&
|
||||
point.y >= top &&
|
||||
point.y <= bottom);
|
||||
}
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
CPos::CPos() : x(0), y(0)
|
||||
{
|
||||
}
|
||||
|
||||
CPos::CPos(const int32 &_x, const int32 &_y) : x(_x), y(_y)
|
||||
{
|
||||
}
|
||||
|
||||
// =
|
||||
void CPos::operator = (const CPos& a)
|
||||
{
|
||||
x = a.x;
|
||||
y = a.y;
|
||||
}
|
||||
|
||||
// ==
|
||||
bool CPos::operator ==(const CPos &a) const
|
||||
{
|
||||
return (x==a.x && y==a.y);
|
||||
}
|
||||
|
||||
// !=
|
||||
bool CPos::operator != (const CPos& a) const
|
||||
{
|
||||
return !(*this==a);
|
||||
}
|
||||
|
||||
// - (the unary operator)
|
||||
CPos CPos::operator - (void) const
|
||||
{
|
||||
return CPos(-x, -y);
|
||||
}
|
||||
|
||||
// + (the unary operator)
|
||||
CPos CPos::operator + (void) const
|
||||
{
|
||||
return *this;
|
||||
}
|
||||
|
||||
// +
|
||||
CPos CPos::operator + (const CPos& a) const
|
||||
{
|
||||
return CPos(x+a.x, y+a.y);
|
||||
}
|
||||
|
||||
// +
|
||||
CPos CPos::operator + (const CSize& a) const
|
||||
{
|
||||
return CPos(x+a.cx, y+a.cy);
|
||||
}
|
||||
|
||||
// -
|
||||
CPos CPos::operator - (const CPos& a) const
|
||||
{
|
||||
return CPos(x-a.x, y-a.y);
|
||||
}
|
||||
|
||||
// -
|
||||
CPos CPos::operator - (const CSize& a) const
|
||||
{
|
||||
return CPos(x-a.cx, y-a.cy);
|
||||
}
|
||||
|
||||
// +=
|
||||
void CPos::operator +=(const CPos& a)
|
||||
{
|
||||
x += a.x;
|
||||
y += a.y;
|
||||
}
|
||||
|
||||
// +=
|
||||
void CPos::operator +=(const CSize& a)
|
||||
{
|
||||
x += a.cx;
|
||||
y += a.cy;
|
||||
}
|
||||
|
||||
// -=
|
||||
void CPos::operator -=(const CPos& a)
|
||||
{
|
||||
x -= a.x;
|
||||
y -= a.y;
|
||||
}
|
||||
|
||||
// -=
|
||||
void CPos::operator -=(const CSize& a)
|
||||
{
|
||||
x -= a.cx;
|
||||
y -= a.cy;
|
||||
}
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
CSize::CSize() : cx(0), cy(0)
|
||||
{
|
||||
}
|
||||
|
||||
CSize::CSize(const CRect &rect) : cx(rect.GetWidth()), cy(rect.GetHeight())
|
||||
{
|
||||
}
|
||||
|
||||
CSize::CSize(const CPos &pos) : cx(pos.x), cy(pos.y)
|
||||
{
|
||||
}
|
||||
|
||||
CSize::CSize(const int32 &_cx, const int32 &_cy) : cx(_cx), cy(_cy)
|
||||
{
|
||||
}
|
||||
|
||||
// =
|
||||
void CSize::operator = (const CSize& a)
|
||||
{
|
||||
cx = a.cx;
|
||||
cy = a.cy;
|
||||
}
|
||||
|
||||
// ==
|
||||
bool CSize::operator ==(const CSize &a) const
|
||||
{
|
||||
return (cx==a.cx && cy==a.cy);
|
||||
}
|
||||
|
||||
// !=
|
||||
bool CSize::operator != (const CSize& a) const
|
||||
{
|
||||
return !(*this==a);
|
||||
}
|
||||
|
||||
// - (the unary operator)
|
||||
CSize CSize::operator - (void) const
|
||||
{
|
||||
return CSize(-cx, -cy);
|
||||
}
|
||||
|
||||
// + (the unary operator)
|
||||
CSize CSize::operator + (void) const
|
||||
{
|
||||
return *this;
|
||||
}
|
||||
|
||||
// +
|
||||
CSize CSize::operator + (const CSize& a) const
|
||||
{
|
||||
return CSize(cx+a.cx, cy+a.cy);
|
||||
}
|
||||
|
||||
// -
|
||||
CSize CSize::operator - (const CSize& a) const
|
||||
{
|
||||
return CSize(cx-a.cx, cy-a.cy);
|
||||
}
|
||||
|
||||
// /
|
||||
CSize CSize::operator / (const int& a) const
|
||||
{
|
||||
return CSize(cx/a, cy/a);
|
||||
}
|
||||
|
||||
// *
|
||||
CSize CSize::operator * (const int& a) const
|
||||
{
|
||||
return CSize(cx*a, cy*a);
|
||||
}
|
||||
|
||||
// +=
|
||||
void CSize::operator +=(const CSize& a)
|
||||
{
|
||||
cx += a.cx;
|
||||
cy += a.cy;
|
||||
}
|
||||
|
||||
// -=
|
||||
void CSize::operator -=(const CSize& a)
|
||||
{
|
||||
cx -= a.cx;
|
||||
cy -= a.cy;
|
||||
}
|
||||
|
||||
// /=
|
||||
void CSize::operator /=(const int& a)
|
||||
{
|
||||
cx /= a;
|
||||
cy /= a;
|
||||
}
|
||||
|
||||
// *=
|
||||
void CSize::operator *=(const int& a)
|
||||
{
|
||||
cx *= a;
|
||||
cy *= a;
|
||||
}
|
||||
|
@ -12,39 +12,199 @@ by Rich Cross, rich@0ad.wildfiregames.com
|
||||
#ifndef COVERLAY_H
|
||||
#define COVERLAY_H
|
||||
|
||||
#include "types.h"
|
||||
|
||||
struct CColor
|
||||
{
|
||||
CColor() {}
|
||||
CColor() : r(-1.f), g(-1.f), b(-1.f), a(1.f) {}
|
||||
CColor(float cr,float cg,float cb,float ca) : r(cr), g(cg), b(cb), a(ca) {}
|
||||
|
||||
bool operator == (const CColor &color) const
|
||||
{
|
||||
return r==color.r &&
|
||||
g==color.g &&
|
||||
b==color.b &&
|
||||
a==color.a;
|
||||
}
|
||||
|
||||
bool operator != (const CColor &color) const
|
||||
{
|
||||
return !(*this==color);
|
||||
}
|
||||
|
||||
float r, g, b, a;
|
||||
};
|
||||
|
||||
class CPos;
|
||||
class CSize;
|
||||
|
||||
// yuck - MFC already defines a CRect class...
|
||||
#define CRect PS_CRect
|
||||
|
||||
struct CRect
|
||||
/**
|
||||
* @author Gustav Larsson
|
||||
*
|
||||
* Rectangle class used for screen rectangles. It's very similiar to the MS
|
||||
* CRect, but be aware it is not identical.
|
||||
* Works with CPos.
|
||||
* @see CSize
|
||||
* @see CPos
|
||||
*/
|
||||
class CRect
|
||||
{
|
||||
CRect() {}
|
||||
CRect(int _l, int _t, int _r, int _b) :
|
||||
left(_l),
|
||||
top(_t),
|
||||
right(_r),
|
||||
bottom(_b) {}
|
||||
int bottom, top, left, right;
|
||||
public:
|
||||
CRect();
|
||||
CRect(const CPos &pos);
|
||||
CRect(const CSize &size);
|
||||
CRect(const CPos &upperleft, const CPos &bottomright);
|
||||
CRect(const CPos &pos, const CSize &size);
|
||||
CRect(const int32 &_l, const int32 &_t, const int32 &_r, const int32 &_b);
|
||||
|
||||
bool operator ==(const CRect &rect) const
|
||||
{
|
||||
return (bottom==rect.bottom) &&
|
||||
(top==rect.top) &&
|
||||
(left==rect.left) &&
|
||||
(right==rect.right);
|
||||
}
|
||||
// Operators
|
||||
void operator = (const CRect& a);
|
||||
bool operator == (const CRect& a) const;
|
||||
bool operator != (const CRect& a) const;
|
||||
CRect operator - (void) const;
|
||||
CRect operator + (void) const;
|
||||
|
||||
bool operator !=(const CRect &rect) const
|
||||
{
|
||||
return !(*this==rect);
|
||||
}
|
||||
CRect operator + (const CRect& a) const;
|
||||
CRect operator + (const CPos& a) const;
|
||||
CRect operator + (const CSize& a) const;
|
||||
CRect operator - (const CRect& a) const;
|
||||
CRect operator - (const CPos& a) const;
|
||||
CRect operator - (const CSize& a) const;
|
||||
|
||||
void operator += (const CRect& a);
|
||||
void operator += (const CPos& a);
|
||||
void operator += (const CSize& a);
|
||||
void operator -= (const CRect& a);
|
||||
void operator -= (const CPos& a);
|
||||
void operator -= (const CSize& a);
|
||||
|
||||
/**
|
||||
* @return Width of Rectangle
|
||||
*/
|
||||
int32 GetWidth() const;
|
||||
|
||||
/**
|
||||
* @return Height of Rectangle
|
||||
*/
|
||||
int32 GetHeight() const;
|
||||
|
||||
/**
|
||||
* Get Size
|
||||
*/
|
||||
CSize GetSize() const;
|
||||
|
||||
/**
|
||||
* Get Position equivalent to top/left corner
|
||||
*/
|
||||
CPos TopLeft() const;
|
||||
|
||||
/**
|
||||
* Get Position equivalent to bottom/right corner
|
||||
*/
|
||||
CPos BottomRight() const;
|
||||
|
||||
/**
|
||||
* Get Position equivalent to the center of the rectangle
|
||||
*/
|
||||
CPos CenterPoint() const;
|
||||
|
||||
/**
|
||||
* Evalutates if point is within the rectangle
|
||||
* @param point CPos representing point
|
||||
* @return true if inside.
|
||||
*/
|
||||
bool PointInside(const CPos &point) const;
|
||||
|
||||
/**
|
||||
* Returning CPos representing each corner.
|
||||
*/
|
||||
|
||||
public:
|
||||
/**
|
||||
* Dimensions
|
||||
*/
|
||||
int32 left, top, right, bottom;
|
||||
};
|
||||
|
||||
/**
|
||||
* @author Gustav Larsson
|
||||
*
|
||||
* Made to represent screen positions and delta values.
|
||||
* @see CRect
|
||||
* @see CSize
|
||||
*/
|
||||
class CPos
|
||||
{
|
||||
public:
|
||||
CPos();
|
||||
CPos(const int32 &_x, const int32 &_y);
|
||||
|
||||
// Operators
|
||||
void operator = (const CPos& a);
|
||||
bool operator == (const CPos& a) const;
|
||||
bool operator != (const CPos& a) const;
|
||||
CPos operator - (void) const;
|
||||
CPos operator + (void) const;
|
||||
|
||||
CPos operator + (const CPos& a) const;
|
||||
CPos operator + (const CSize& a) const;
|
||||
CPos operator - (const CPos& a) const;
|
||||
CPos operator - (const CSize& a) const;
|
||||
|
||||
void operator += (const CPos& a);
|
||||
void operator += (const CSize& a);
|
||||
void operator -= (const CPos& a);
|
||||
void operator -= (const CSize& a);
|
||||
|
||||
public:
|
||||
/**
|
||||
* Position
|
||||
*/
|
||||
int32 x, y;
|
||||
};
|
||||
|
||||
/**
|
||||
* @author Gustav Larsson
|
||||
*
|
||||
* Made to represent a screen size, should in philosophy
|
||||
* be made of unsigned ints, but for the sake of compatibility
|
||||
* with CRect and CPos it's not.
|
||||
* @see CRect
|
||||
* @see CPos
|
||||
*/
|
||||
class CSize
|
||||
{
|
||||
public:
|
||||
CSize();
|
||||
CSize(const CRect &rect);
|
||||
CSize(const CPos &pos);
|
||||
CSize(const int32 &_cx, const int32 &_cy);
|
||||
|
||||
// Operators
|
||||
void operator = (const CSize& a);
|
||||
bool operator == (const CSize& a) const;
|
||||
bool operator != (const CSize& a) const;
|
||||
CSize operator - (void) const;
|
||||
CSize operator + (void) const;
|
||||
|
||||
CSize operator + (const CSize& a) const;
|
||||
CSize operator - (const CSize& a) const;
|
||||
CSize operator / (const int &a) const;
|
||||
CSize operator * (const int &a) const;
|
||||
|
||||
void operator += (const CSize& a);
|
||||
void operator -= (const CSize& a);
|
||||
void operator /= (const int& a);
|
||||
void operator *= (const int& a);
|
||||
|
||||
public:
|
||||
/**
|
||||
* Size
|
||||
*/
|
||||
int32 cx, cy;
|
||||
};
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user