summaryrefslogtreecommitdiff
path: root/core/fxcrt/fx_coordinates_unittest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'core/fxcrt/fx_coordinates_unittest.cpp')
-rw-r--r--core/fxcrt/fx_coordinates_unittest.cpp42
1 files changed, 42 insertions, 0 deletions
diff --git a/core/fxcrt/fx_coordinates_unittest.cpp b/core/fxcrt/fx_coordinates_unittest.cpp
index b885d07095..3d11748649 100644
--- a/core/fxcrt/fx_coordinates_unittest.cpp
+++ b/core/fxcrt/fx_coordinates_unittest.cpp
@@ -458,3 +458,45 @@ TEST(CFX_Matrix, ComposeTransformations) {
EXPECT_FLOAT_EQ(-271.0f, p_10_20_transformed.x);
EXPECT_FLOAT_EQ(73.0f, p_10_20_transformed.y);
}
+
+TEST(CFX_Matrix, TransformRectForRectF) {
+ CFX_Matrix rotate_90;
+ rotate_90.Rotate(FX_PI / 2);
+
+ CFX_Matrix scale_5_13;
+ scale_5_13.Scale(5, 13);
+
+ CFX_RectF rect(10.5f, 20.5f, 4.25f, 3.25f);
+ rect = rotate_90.TransformRect(rect);
+ EXPECT_FLOAT_EQ(-23.75f, rect.Left());
+ EXPECT_FLOAT_EQ(10.5f, rect.Top());
+ EXPECT_FLOAT_EQ(3.25f, rect.Width());
+ EXPECT_FLOAT_EQ(4.25f, rect.Height());
+
+ rect = scale_5_13.TransformRect(rect);
+ EXPECT_FLOAT_EQ(-118.75f, rect.Left());
+ EXPECT_FLOAT_EQ(136.5f, rect.Top());
+ EXPECT_FLOAT_EQ(16.25f, rect.Width());
+ EXPECT_FLOAT_EQ(55.25f, rect.Height());
+}
+
+TEST(CFX_Matrix, TransformRectForFloatRect) {
+ CFX_Matrix rotate_90;
+ rotate_90.Rotate(FX_PI / 2);
+
+ CFX_Matrix scale_5_13;
+ scale_5_13.Scale(5, 13);
+
+ CFX_FloatRect rect(5.5f, 0.0f, 12.25f, 2.7f);
+ rect = rotate_90.TransformRect(rect);
+ EXPECT_FLOAT_EQ(-2.7f, rect.Left());
+ EXPECT_FLOAT_EQ(5.5f, rect.Bottom());
+ EXPECT_NEAR(0.0f, rect.Right(), 0.00001f);
+ EXPECT_FLOAT_EQ(12.25f, rect.Top());
+
+ rect = scale_5_13.TransformRect(rect);
+ EXPECT_FLOAT_EQ(-13.5f, rect.Left());
+ EXPECT_FLOAT_EQ(71.5f, rect.Bottom());
+ EXPECT_NEAR(0.0f, rect.Right(), 0.00001f);
+ EXPECT_FLOAT_EQ(159.25f, rect.Top());
+}