//-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- TEST(RectTest, IncludeRect) { Rectd rect; { Rectd otherRect(10, 20, 5, 15); rect.include(otherRect); EXPECT_DOUBLE_EQ(0.0, rect.min().x()); EXPECT_DOUBLE_EQ(0.0, rect.min().y()); EXPECT_DOUBLE_EQ(15, rect.width()); EXPECT_DOUBLE_EQ(35, rect.height()); } { Rectd otherRect(-10, -20, 5, 5); rect.include(otherRect); EXPECT_DOUBLE_EQ(-10, rect.min().x()); EXPECT_DOUBLE_EQ(-20, rect.min().y()); EXPECT_DOUBLE_EQ(25, rect.width()); EXPECT_DOUBLE_EQ(55, rect.height()); } { Rectd otherRect(-100, -200, 200, 300); rect.include(otherRect); EXPECT_DOUBLE_EQ(-100, rect.min().x()); EXPECT_DOUBLE_EQ(-200, rect.min().y()); EXPECT_DOUBLE_EQ(200, rect.width()); EXPECT_DOUBLE_EQ(300, rect.height()); } }
//-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- TEST(RectTest, Include) { { Rectd rect; Vec2d pt1(10, 20); rect.include(pt1); EXPECT_DOUBLE_EQ(0.0, rect.min().x()); EXPECT_DOUBLE_EQ(0.0, rect.min().y()); EXPECT_DOUBLE_EQ(10, rect.width()); EXPECT_DOUBLE_EQ(20, rect.height()); Vec2d pt2(20, 30); rect.include(pt2); EXPECT_DOUBLE_EQ(0, rect.min().x()); EXPECT_DOUBLE_EQ(0, rect.min().y()); EXPECT_DOUBLE_EQ(20, rect.width()); EXPECT_DOUBLE_EQ(30, rect.height()); } { Rectd rect; Vec2d pt1(10, 20); rect.setMin(pt1); EXPECT_DOUBLE_EQ(10, rect.min().x()); EXPECT_DOUBLE_EQ(20, rect.min().y()); EXPECT_DOUBLE_EQ(0, rect.width()); EXPECT_DOUBLE_EQ(0, rect.height()); Vec2d pt2(20, 30); rect.include(pt2); EXPECT_DOUBLE_EQ(10, rect.min().x()); EXPECT_DOUBLE_EQ(20, rect.min().y()); EXPECT_DOUBLE_EQ(10, rect.width()); EXPECT_DOUBLE_EQ(10, rect.height()); Vec2d pt3(-20, -30); rect.include(pt3); EXPECT_DOUBLE_EQ(-20, rect.min().x()); EXPECT_DOUBLE_EQ(-30, rect.min().y()); EXPECT_DOUBLE_EQ(40, rect.width()); EXPECT_DOUBLE_EQ(60, rect.height()); } }
//-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- TEST(RectTest, FromMinMax) { { Rectd rect = Rectd::fromMinMax(Vec2d(-1, 2), Vec2d(10, 12)); EXPECT_TRUE(rect.isValid()); EXPECT_DOUBLE_EQ(-1, rect.min().x()); EXPECT_DOUBLE_EQ(2, rect.min().y()); EXPECT_DOUBLE_EQ(10, rect.max().x()); EXPECT_DOUBLE_EQ(12, rect.max().y()); EXPECT_DOUBLE_EQ(11, rect.width()); EXPECT_DOUBLE_EQ(10, rect.height()); } { Recti rect = Recti::fromMinMax(Vec2i(-1, 2), Vec2i(10, 12)); EXPECT_TRUE(rect.isValid()); EXPECT_EQ(-1, rect.min().x()); EXPECT_EQ( 2, rect.min().y()); EXPECT_EQ(10, rect.max().x()); EXPECT_EQ(12, rect.max().y()); EXPECT_EQ(11, rect.width()); EXPECT_EQ(10, rect.height()); } { Rectui rect = Rectui::fromMinMax(Vec2ui(1, 2), Vec2ui(11, 22)); EXPECT_TRUE(rect.isValid()); EXPECT_EQ( 1, rect.min().x()); EXPECT_EQ( 2, rect.min().y()); EXPECT_EQ(11, rect.max().x()); EXPECT_EQ(22, rect.max().y()); EXPECT_EQ(10, rect.width()); EXPECT_EQ(20, rect.height()); } }
// ----------------------------------------------------------------------------- // Draws the text box // ----------------------------------------------------------------------------- void TextBox::draw(int x, int y, const ColRGBA& colour, Drawing::Align alignment) { Rectd b; Drawing::enableTextStateReset(false); Drawing::setTextState(true); for (const auto& line : lines_) { drawText(line, x, y, colour, font_, alignment, &b); if (line_height_ < 0) y += b.height(); else y += line_height_; } Drawing::enableTextStateReset(true); Drawing::setTextState(false); }
//-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- TEST(RectTest, Construction) { { Rectd rect; EXPECT_DOUBLE_EQ(0.0, rect.min().x()); EXPECT_DOUBLE_EQ(0.0, rect.min().y()); EXPECT_DOUBLE_EQ(0.0, rect.width()); EXPECT_DOUBLE_EQ(0.0, rect.height()); EXPECT_FALSE(rect.isValid()); } { Rectd rect(-1, -2, 5, 10); EXPECT_DOUBLE_EQ(-1, rect.min().x()); EXPECT_DOUBLE_EQ(-2, rect.min().y()); EXPECT_DOUBLE_EQ(5, rect.width()); EXPECT_DOUBLE_EQ(10, rect.height()); EXPECT_TRUE(rect.isValid()); } { Vec2d min(-2, -3); Rectd rect(min, 5, 10); EXPECT_DOUBLE_EQ(min.x(), rect.min().x()); EXPECT_DOUBLE_EQ(min.y(), rect.min().y()); EXPECT_DOUBLE_EQ(5, rect.width()); EXPECT_DOUBLE_EQ(10, rect.height()); EXPECT_TRUE(rect.isValid()); } { Vec2d min(-2, -3); Rectd rect(min, 5, 10); EXPECT_DOUBLE_EQ(min.x(), rect.min().x()); EXPECT_DOUBLE_EQ(min.y(), rect.min().y()); EXPECT_DOUBLE_EQ(5, rect.width()); EXPECT_DOUBLE_EQ(10, rect.height()); EXPECT_TRUE(rect.isValid()); Rectd otherRect(rect); EXPECT_DOUBLE_EQ(rect.min().x(), otherRect.min().x()); EXPECT_DOUBLE_EQ(rect.min().y(), otherRect.min().y()); EXPECT_DOUBLE_EQ(rect.width(), otherRect.width()); EXPECT_DOUBLE_EQ(rect.height(), otherRect.height()); EXPECT_TRUE(otherRect.isValid()); } { Vec2d min(-2, -3); Vec2d max(5, 6); Rectd rect = Rectd::fromMinMax(min, max); EXPECT_TRUE(rect.isValid()); EXPECT_DOUBLE_EQ(min.x(), rect.min().x()); EXPECT_DOUBLE_EQ(min.y(), rect.min().y()); EXPECT_DOUBLE_EQ(7, rect.width()); EXPECT_DOUBLE_EQ(9, rect.height()); } { Vec2d min(-2, -3); Rectd rectOriginal(min, 5, 10); Rectd rect; EXPECT_FALSE(rect.isValid()); rect = rectOriginal; EXPECT_TRUE(rect.isValid()); EXPECT_DOUBLE_EQ(-2, rect.min().x()); EXPECT_DOUBLE_EQ(-3, rect.min().y()); EXPECT_DOUBLE_EQ(3, rect.max().x()); EXPECT_DOUBLE_EQ(7, rect.max().y()); } }