mirror of
https://github.com/vcmi/vcmi.git
synced 2025-07-17 01:32:21 +02:00
Replace SDL_Point and SDL_Rect with Gfx::Point and Gfx::Rect,
synchronization with trunk.
This commit is contained in:
43
client/Gfx/Basic.cpp
Normal file
43
client/Gfx/Basic.cpp
Normal file
@ -0,0 +1,43 @@
|
||||
#include "StdInc.h"
|
||||
#include "Basic.h"
|
||||
|
||||
namespace Gfx
|
||||
{
|
||||
|
||||
void Rect::addOffs_copySize(const Rect & r)
|
||||
{
|
||||
x += r.x;
|
||||
y += r.y;
|
||||
w = r.w;
|
||||
h = r.h;
|
||||
}
|
||||
|
||||
|
||||
Rect Rect::operator&(const Rect &p) const //rect intersection
|
||||
{
|
||||
bool intersect = true;
|
||||
|
||||
if (
|
||||
leftX() > p.rightX() //rect p is on the left hand side of this
|
||||
|| rightX() < p.leftX() //rect p is on the right hand side of this
|
||||
|| topY() > p.bottomY() //rect p is above *this
|
||||
|| bottomY() < p.topY() //rect p is below *this
|
||||
)
|
||||
{
|
||||
return Rect();
|
||||
}
|
||||
else
|
||||
{
|
||||
Rect ret;
|
||||
ret.x = std::max(this->x, p.x);
|
||||
ret.y = std::max(this->y, p.y);
|
||||
Point bR; //bottomRight point of returned rect
|
||||
bR.x = std::min(this->w+this->x, p.w+p.x);
|
||||
bR.y = std::min(this->h+this->y, p.h+p.y);
|
||||
ret.w = bR.x - ret.x;
|
||||
ret.h = bR.y - ret.y;
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user