summaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
Diffstat (limited to 'core')
-rw-r--r--core/fxcrt/fx_coordinates.cpp46
-rw-r--r--core/fxcrt/fx_coordinates.h6
2 files changed, 16 insertions, 36 deletions
diff --git a/core/fxcrt/fx_coordinates.cpp b/core/fxcrt/fx_coordinates.cpp
index f85394ca5c..7d0d104122 100644
--- a/core/fxcrt/fx_coordinates.cpp
+++ b/core/fxcrt/fx_coordinates.cpp
@@ -416,45 +416,31 @@ CFX_PointF CFX_Matrix::Transform(const CFX_PointF& point) const {
return CFX_PointF(a * point.x + c * point.y + e,
b * point.x + d * point.y + f);
}
-std::tuple<float, float, float, float> CFX_Matrix::TransformRect(
- const float& left,
- const float& right,
- const float& top,
- const float& bottom) const {
- CFX_PointF points[] = {
- {left, top}, {left, bottom}, {right, top}, {right, bottom}};
- for (int i = 0; i < 4; i++)
- points[i] = Transform(points[i]);
+
+CFX_RectF CFX_Matrix::TransformRect(const CFX_RectF& rect) const {
+ CFX_FloatRect result_rect = TransformRect(rect.ToFloatRect());
+ return CFX_RectF(result_rect.left, result_rect.bottom, result_rect.Width(),
+ result_rect.Height());
+}
+
+CFX_FloatRect CFX_Matrix::TransformRect(const CFX_FloatRect& rect) const {
+ CFX_PointF points[] = {{rect.left, rect.top},
+ {rect.left, rect.bottom},
+ {rect.right, rect.top},
+ {rect.right, rect.bottom}};
+ for (CFX_PointF& point : points)
+ point = Transform(point);
float new_right = points[0].x;
float new_left = points[0].x;
float new_top = points[0].y;
float new_bottom = points[0].y;
- for (int i = 1; i < 4; i++) {
+ for (size_t i = 1; i < FX_ArraySize(points); i++) {
new_right = std::max(new_right, points[i].x);
new_left = std::min(new_left, points[i].x);
new_top = std::max(new_top, points[i].y);
new_bottom = std::min(new_bottom, points[i].y);
}
- return std::make_tuple(new_left, new_right, new_top, new_bottom);
-}
-CFX_RectF CFX_Matrix::TransformRect(const CFX_RectF& rect) const {
- float left;
- float right;
- float bottom;
- float top;
- std::tie(left, right, bottom, top) =
- TransformRect(rect.left, rect.right(), rect.bottom(), rect.top);
- return CFX_RectF(left, top, right - left, bottom - top);
-}
-
-CFX_FloatRect CFX_Matrix::TransformRect(const CFX_FloatRect& rect) const {
- float left;
- float right;
- float top;
- float bottom;
- std::tie(left, right, top, bottom) =
- TransformRect(rect.left, rect.right, rect.top, rect.bottom);
- return CFX_FloatRect(left, bottom, right, top);
+ return CFX_FloatRect(new_left, new_bottom, new_right, new_top);
}
diff --git a/core/fxcrt/fx_coordinates.h b/core/fxcrt/fx_coordinates.h
index 4a63a6ca37..08dbd08903 100644
--- a/core/fxcrt/fx_coordinates.h
+++ b/core/fxcrt/fx_coordinates.h
@@ -8,7 +8,6 @@
#define CORE_FXCRT_FX_COORDINATES_H_
#include <algorithm>
-#include <tuple>
#include "core/fxcrt/fx_system.h"
#include "third_party/base/numerics/safe_math.h"
@@ -590,11 +589,6 @@ class CFX_Matrix {
CFX_PointF Transform(const CFX_PointF& point) const;
- std::tuple<float, float, float, float> TransformRect(
- const float& left,
- const float& right,
- const float& top,
- const float& bottom) const;
CFX_RectF TransformRect(const CFX_RectF& rect) const;
CFX_FloatRect TransformRect(const CFX_FloatRect& rect) const;