Added + and - operators to Outline

0.8
Bruno Van de Velde 2019-03-29 18:52:32 +01:00
parent f47c5bc9f6
commit 208477fb3e
3 changed files with 103 additions and 0 deletions

View File

@ -9,6 +9,7 @@ TGUI 0.8.5 (TBD)
- Added functions to ListView to change existing items
- Support typing tabs in TextBox (if tab usage is disabled in gui)
- Added function to signals to temporarily disable callbacks
- Added addition and subtraction operators to Outline
- ChildWindow can now have a different border color in focused state
- Added function to select item in TreeView
- EditBox::setInputValidator now returns false when regex was invalid

View File

@ -190,6 +190,61 @@ namespace tgui
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// @brief Adds two outlines together (e.g. to add padding and borders)
///
/// @param other The outline to add together with this instance
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
TGUI_CONSTEXPR Outline operator+(const Outline& other) const
{
return {getLeft() + other.getLeft(),
getTop() + other.getTop(),
getRight() + other.getRight(),
getBottom() + other.getBottom()};
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// @brief Subtracts two outlines from each other
///
/// @param other The outline to subtract from this instance
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
TGUI_CONSTEXPR Outline operator-(const Outline& other) const
{
return {getLeft() - other.getLeft(),
getTop() - other.getTop(),
getRight() - other.getRight(),
getBottom() - other.getBottom()};
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// @brief Adds an outline to this instance (e.g. to add padding and borders)
///
/// @param other The outline to add to this instance
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
TGUI_CONSTEXPR Outline& operator+=(const Outline& other)
{
m_left = getLeft() + other.getLeft();
m_top = getTop() + other.getTop();
m_right = getRight() + other.getRight();
m_bottom = getBottom() + other.getBottom();
return *this;
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// @brief Subtracts an outline from this instance
///
/// @param other The outline to subtract from this instance
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
TGUI_CONSTEXPR Outline& operator-=(const Outline& other)
{
m_left = getLeft() - other.getLeft();
m_top = getTop() - other.getTop();
m_right = getRight() - other.getRight();
m_bottom = getBottom() - other.getBottom();
return *this;
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// @internal
/// @brief Update the size to which the outline depends on if its values are relative

View File

@ -130,6 +130,53 @@ TEST_CASE("[Outline]")
REQUIRE(!(outline1 != outline4));
REQUIRE(!(outline4 != outline4));
}
SECTION("+")
{
REQUIRE(outline1 + outline3 == tgui::Outline{7, 9, 11, 13});
REQUIRE(outline4 + outline4 == tgui::Outline{2, 4, 6, 8});
REQUIRE(outline1 + outline3 == outline3 + outline1);
}
SECTION("-")
{
REQUIRE(outline1 - outline3 == tgui::Outline{-5, -5, -5, -5});
REQUIRE(outline3 - outline1 == tgui::Outline{5, 5, 5, 5});
REQUIRE(outline4 - outline4 == tgui::Outline{0, 0, 0, 0});
}
SECTION("+=")
{
outline1 += outline3;
REQUIRE(outline1 == tgui::Outline{7, 9, 11, 13});
#if defined(__GNUC__)
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wself-assign-overloaded"
#endif
outline4 += outline4;
#if defined(__GNUC__)
#pragma GCC diagnostic pop
#endif
REQUIRE(outline4 == tgui::Outline{2, 4, 6, 8});
}
SECTION("-=")
{
outline1 -= outline3;
REQUIRE(outline1 == tgui::Outline{-5, -5, -5, -5});
#if defined(__GNUC__)
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wself-assign-overloaded"
#endif
outline4 -= outline4;
#if defined(__GNUC__)
#pragma GCC diagnostic pop
#endif
REQUIRE(outline4 == tgui::Outline{0, 0, 0, 0});
}
}
SECTION("toString")