summaryrefslogtreecommitdiff
path: root/core/fxcrt
diff options
context:
space:
mode:
Diffstat (limited to 'core/fxcrt')
-rw-r--r--core/fxcrt/fx_coordinates.cpp14
-rw-r--r--core/fxcrt/fx_coordinates.h13
-rw-r--r--core/fxcrt/fx_coordinates_unittest.cpp22
3 files changed, 26 insertions, 23 deletions
diff --git a/core/fxcrt/fx_coordinates.cpp b/core/fxcrt/fx_coordinates.cpp
index c345a822b9..136ae72527 100644
--- a/core/fxcrt/fx_coordinates.cpp
+++ b/core/fxcrt/fx_coordinates.cpp
@@ -148,6 +148,20 @@ void CFX_FloatRect::UpdateRect(const CFX_PointF& point) {
top = std::max(top, point.y);
}
+void CFX_FloatRect::ScaleFromCenterPoint(float fScale) {
+ float fHalfWidth = (right - left) / 2.0f;
+ float fHalfHeight = (top - bottom) / 2.0f;
+
+ float center_x = (left + right) / 2;
+ float center_y = (top + bottom) / 2;
+
+ left = center_x - fHalfWidth * fScale;
+ bottom = center_y - fHalfHeight * fScale;
+ right = center_x + fHalfWidth * fScale;
+ top = center_y + fHalfHeight * fScale;
+}
+
+// static
CFX_FloatRect CFX_FloatRect::GetBBox(const CFX_PointF* pPoints, int nPoints) {
if (nPoints == 0)
return CFX_FloatRect();
diff --git a/core/fxcrt/fx_coordinates.h b/core/fxcrt/fx_coordinates.h
index 49173a38e8..0d3d123a59 100644
--- a/core/fxcrt/fx_coordinates.h
+++ b/core/fxcrt/fx_coordinates.h
@@ -329,18 +329,7 @@ class CFX_FloatRect {
bottom += f;
}
- void Scale(float fScale) {
- float fHalfWidth = (right - left) / 2.0f;
- float fHalfHeight = (top - bottom) / 2.0f;
-
- float center_x = (left + right) / 2;
- float center_y = (top + bottom) / 2;
-
- left = center_x - fHalfWidth * fScale;
- bottom = center_y - fHalfHeight * fScale;
- right = center_x + fHalfWidth * fScale;
- top = center_y + fHalfHeight * fScale;
- }
+ void ScaleFromCenterPoint(float fScale);
static CFX_FloatRect GetBBox(const CFX_PointF* pPoints, int nPoints);
diff --git a/core/fxcrt/fx_coordinates_unittest.cpp b/core/fxcrt/fx_coordinates_unittest.cpp
index b692b2e485..23d99e46d1 100644
--- a/core/fxcrt/fx_coordinates_unittest.cpp
+++ b/core/fxcrt/fx_coordinates_unittest.cpp
@@ -64,53 +64,53 @@ TEST(CFX_FloatRect, GetBBox) {
EXPECT_FLOAT_EQ(6.3f, rect.top);
}
-TEST(CFX_FloatRect, Scale) {
+TEST(CFX_FloatRect, ScaleFromCenterPoint) {
CFX_FloatRect rect(-1.0f, -3.0f, 4.5f, 3.2f);
- rect.Scale(1.0f);
+ rect.ScaleFromCenterPoint(1.0f);
EXPECT_FLOAT_EQ(-1.0f, rect.left);
EXPECT_FLOAT_EQ(-3.0f, rect.bottom);
EXPECT_FLOAT_EQ(4.5f, rect.right);
EXPECT_FLOAT_EQ(3.2f, rect.top);
- rect.Scale(0.5f);
+ rect.ScaleFromCenterPoint(0.5f);
EXPECT_FLOAT_EQ(0.375f, rect.left);
EXPECT_FLOAT_EQ(-1.45f, rect.bottom);
EXPECT_FLOAT_EQ(3.125f, rect.right);
EXPECT_FLOAT_EQ(1.65f, rect.top);
- rect.Scale(2.0f);
+ rect.ScaleFromCenterPoint(2.0f);
EXPECT_FLOAT_EQ(-1.0f, rect.left);
EXPECT_FLOAT_EQ(-3.0f, rect.bottom);
EXPECT_FLOAT_EQ(4.5f, rect.right);
EXPECT_FLOAT_EQ(3.2f, rect.top);
- rect.Scale(-1.0f);
+ rect.ScaleFromCenterPoint(-1.0f);
EXPECT_FLOAT_EQ(4.5f, rect.left);
EXPECT_FLOAT_EQ(3.2f, rect.bottom);
EXPECT_FLOAT_EQ(-1.0f, rect.right);
EXPECT_FLOAT_EQ(-3.0f, rect.top);
- rect.Scale(0.0f);
+ rect.ScaleFromCenterPoint(0.0f);
EXPECT_FLOAT_EQ(1.75f, rect.left);
EXPECT_NEAR(0.1f, rect.bottom, 0.001f);
EXPECT_FLOAT_EQ(1.75f, rect.right);
EXPECT_NEAR(0.1f, rect.top, 0.001f);
}
-TEST(CFX_FloatRect, ScaleEmpty) {
+TEST(CFX_FloatRect, ScaleFromCenterPointEmpty) {
CFX_FloatRect rect;
- rect.Scale(1.0f);
+ rect.ScaleFromCenterPoint(1.0f);
EXPECT_FLOAT_EQ(0.0f, rect.left);
EXPECT_FLOAT_EQ(0.0f, rect.bottom);
EXPECT_FLOAT_EQ(0.0f, rect.right);
EXPECT_FLOAT_EQ(0.0f, rect.top);
- rect.Scale(0.5f);
+ rect.ScaleFromCenterPoint(0.5f);
EXPECT_FLOAT_EQ(0.0f, rect.left);
EXPECT_FLOAT_EQ(0.0f, rect.bottom);
EXPECT_FLOAT_EQ(0.0f, rect.right);
EXPECT_FLOAT_EQ(0.0f, rect.top);
- rect.Scale(2.0f);
+ rect.ScaleFromCenterPoint(2.0f);
EXPECT_FLOAT_EQ(0.0f, rect.left);
EXPECT_FLOAT_EQ(0.0f, rect.bottom);
EXPECT_FLOAT_EQ(0.0f, rect.right);
EXPECT_FLOAT_EQ(0.0f, rect.top);
- rect.Scale(0.0f);
+ rect.ScaleFromCenterPoint(0.0f);
EXPECT_FLOAT_EQ(0.0f, rect.left);
EXPECT_FLOAT_EQ(0.0f, rect.bottom);
EXPECT_FLOAT_EQ(0.0f, rect.right);