mirror of
https://github.com/libSDL2pp/libSDL2pp.git
synced 2025-09-08 06:48:56 -04:00
Add mutating Union method
This commit is contained in:
parent
2e3f6bbeb2
commit
0de09713c9
@ -159,6 +159,18 @@ Rect Rect::GetUnion(const Rect& rect) const {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Rect& Rect::Union(const Rect& rect) {
|
||||||
|
int nx = std::min(x, rect.x);
|
||||||
|
int ny = std::min(y, rect.y);
|
||||||
|
int nx2 = std::max(GetX2(), rect.GetX2());
|
||||||
|
int ny2 = std::max(GetY2(), rect.GetY2());
|
||||||
|
x = nx;
|
||||||
|
y = ny;
|
||||||
|
SetX2(nx2);
|
||||||
|
SetY2(ny2);
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
Optional<Rect> Rect::GetIntersection(const Rect& rect) const {
|
Optional<Rect> Rect::GetIntersection(const Rect& rect) const {
|
||||||
if (!Intersects(rect))
|
if (!Intersects(rect))
|
||||||
return NullOpt;
|
return NullOpt;
|
||||||
|
@ -336,6 +336,16 @@ public:
|
|||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
Rect GetUnion(const Rect& rect) const;
|
Rect GetUnion(const Rect& rect) const;
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
/// \brief Union rect with another rect
|
||||||
|
///
|
||||||
|
/// \param[in] rect Rect to union with
|
||||||
|
///
|
||||||
|
/// \returns Reference to self
|
||||||
|
///
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
Rect& Union(const Rect& rect);
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
/// \brief Calculate intersection with another rect
|
/// \brief Calculate intersection with another rect
|
||||||
///
|
///
|
||||||
|
@ -233,6 +233,11 @@ BEGIN_TEST()
|
|||||||
EXPECT_TRUE(Rect(30, 20, 1, 1).GetUnion(Rect(10, 40, 1, 1)) == Rect::FromCorners(10, 20, 30, 40));
|
EXPECT_TRUE(Rect(30, 20, 1, 1).GetUnion(Rect(10, 40, 1, 1)) == Rect::FromCorners(10, 20, 30, 40));
|
||||||
EXPECT_TRUE(Rect(10, 40, 1, 1).GetUnion(Rect(30, 20, 1, 1)) == Rect::FromCorners(10, 20, 30, 40));
|
EXPECT_TRUE(Rect(10, 40, 1, 1).GetUnion(Rect(30, 20, 1, 1)) == Rect::FromCorners(10, 20, 30, 40));
|
||||||
EXPECT_TRUE(Rect(30, 40, 1, 1).GetUnion(Rect(10, 20, 1, 1)) == Rect::FromCorners(10, 20, 30, 40));
|
EXPECT_TRUE(Rect(30, 40, 1, 1).GetUnion(Rect(10, 20, 1, 1)) == Rect::FromCorners(10, 20, 30, 40));
|
||||||
|
|
||||||
|
EXPECT_TRUE(Rect(10, 20, 1, 1).Union(Rect(30, 40, 1, 1)) == Rect::FromCorners(10, 20, 30, 40));
|
||||||
|
EXPECT_TRUE(Rect(30, 20, 1, 1).Union(Rect(10, 40, 1, 1)) == Rect::FromCorners(10, 20, 30, 40));
|
||||||
|
EXPECT_TRUE(Rect(10, 40, 1, 1).Union(Rect(30, 20, 1, 1)) == Rect::FromCorners(10, 20, 30, 40));
|
||||||
|
EXPECT_TRUE(Rect(30, 40, 1, 1).Union(Rect(10, 20, 1, 1)) == Rect::FromCorners(10, 20, 30, 40));
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user