summaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
Diffstat (limited to 'core')
-rw-r--r--core/fxcrt/fx_coordinates.cpp5
-rw-r--r--core/fxcrt/fx_coordinates.h5
-rw-r--r--core/fxcrt/fx_coordinates_unittest.cpp35
3 files changed, 31 insertions, 14 deletions
diff --git a/core/fxcrt/fx_coordinates.cpp b/core/fxcrt/fx_coordinates.cpp
index 7d0d104122..fabde1e80b 100644
--- a/core/fxcrt/fx_coordinates.cpp
+++ b/core/fxcrt/fx_coordinates.cpp
@@ -300,6 +300,11 @@ std::ostream& operator<<(std::ostream& os, const CFX_RectF& rect) {
}
#endif // NDEBUG
+std::tuple<float, float, float, float, float, float> CFX_Matrix::AsTuple()
+ const {
+ return {a, b, c, d, e, f};
+}
+
CFX_Matrix CFX_Matrix::GetInverse() const {
CFX_Matrix inverse;
float i = a * d - b * c;
diff --git a/core/fxcrt/fx_coordinates.h b/core/fxcrt/fx_coordinates.h
index 08dbd08903..67d3736fd8 100644
--- a/core/fxcrt/fx_coordinates.h
+++ b/core/fxcrt/fx_coordinates.h
@@ -8,12 +8,11 @@
#define CORE_FXCRT_FX_COORDINATES_H_
#include <algorithm>
+#include <tuple>
#include "core/fxcrt/fx_system.h"
#include "third_party/base/numerics/safe_math.h"
-class CFX_Matrix;
-
template <class BaseType>
class CFX_PTemplate {
public:
@@ -541,6 +540,8 @@ class CFX_Matrix {
f = other.f;
}
+ std::tuple<float, float, float, float, float, float> AsTuple() const;
+
void SetIdentity() {
a = 1;
b = 0;
diff --git a/core/fxcrt/fx_coordinates_unittest.cpp b/core/fxcrt/fx_coordinates_unittest.cpp
index 3d11748649..ded4d45c9d 100644
--- a/core/fxcrt/fx_coordinates_unittest.cpp
+++ b/core/fxcrt/fx_coordinates_unittest.cpp
@@ -248,27 +248,38 @@ TEST(CFX_Matrix, ReverseIdentity) {
TEST(CFX_Matrix, SetIdentity) {
CFX_Matrix m;
- EXPECT_FLOAT_EQ(1.0, m.a);
- EXPECT_FLOAT_EQ(0.0, m.b);
- EXPECT_FLOAT_EQ(0.0, m.c);
- EXPECT_FLOAT_EQ(1.0, m.d);
- EXPECT_FLOAT_EQ(0.0, m.e);
- EXPECT_FLOAT_EQ(0.0, m.f);
+ EXPECT_FLOAT_EQ(1.0f, m.a);
+ EXPECT_FLOAT_EQ(0.0f, m.b);
+ EXPECT_FLOAT_EQ(0.0f, m.c);
+ EXPECT_FLOAT_EQ(1.0f, m.d);
+ EXPECT_FLOAT_EQ(0.0f, m.e);
+ EXPECT_FLOAT_EQ(0.0f, m.f);
EXPECT_TRUE(m.IsIdentity());
m.a = -1;
EXPECT_FALSE(m.IsIdentity());
m.SetIdentity();
- EXPECT_FLOAT_EQ(1.0, m.a);
- EXPECT_FLOAT_EQ(0.0, m.b);
- EXPECT_FLOAT_EQ(0.0, m.c);
- EXPECT_FLOAT_EQ(1.0, m.d);
- EXPECT_FLOAT_EQ(0.0, m.e);
- EXPECT_FLOAT_EQ(0.0, m.f);
+ EXPECT_FLOAT_EQ(1.0f, m.a);
+ EXPECT_FLOAT_EQ(0.0f, m.b);
+ EXPECT_FLOAT_EQ(0.0f, m.c);
+ EXPECT_FLOAT_EQ(1.0f, m.d);
+ EXPECT_FLOAT_EQ(0.0f, m.e);
+ EXPECT_FLOAT_EQ(0.0f, m.f);
EXPECT_TRUE(m.IsIdentity());
}
+TEST(CFX_Matrix, AsTuple) {
+ CFX_Matrix m(1, 2, 3, 4, 5, 6);
+ auto tuple = m.AsTuple();
+ EXPECT_FLOAT_EQ(1.0f, std::get<0>(tuple));
+ EXPECT_FLOAT_EQ(2.0f, std::get<1>(tuple));
+ EXPECT_FLOAT_EQ(3.0f, std::get<2>(tuple));
+ EXPECT_FLOAT_EQ(4.0f, std::get<3>(tuple));
+ EXPECT_FLOAT_EQ(5.0f, std::get<4>(tuple));
+ EXPECT_FLOAT_EQ(6.0f, std::get<5>(tuple));
+}
+
TEST(CFX_Matrix, GetInverse) {
static constexpr float data[6] = {3, 0, 2, 3, 1, 4};
CFX_Matrix m(data);