aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests/MatrixTest.cpp
diff options
context:
space:
mode:
authorGravatar reed <reed@google.com>2015-03-19 16:10:54 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2015-03-19 16:10:54 -0700
commitadf9990cb56ca389f37f02ac637496083b3c3cfc (patch)
tree9836e2845d7cc22b84d5f035d868610925b38f1d /tests/MatrixTest.cpp
parentd800d878caae5d25b275d488a1b5ae8c24cea492 (diff)
add SkMatrix::decomposeScale
Diffstat (limited to 'tests/MatrixTest.cpp')
-rw-r--r--tests/MatrixTest.cpp30
1 files changed, 30 insertions, 0 deletions
diff --git a/tests/MatrixTest.cpp b/tests/MatrixTest.cpp
index 7875d9ea45..95d33acabd 100644
--- a/tests/MatrixTest.cpp
+++ b/tests/MatrixTest.cpp
@@ -771,6 +771,34 @@ static void test_matrix_homogeneous(skiatest::Reporter* reporter) {
}
+static bool check_decompScale(const SkMatrix& matrix) {
+ SkSize scale;
+ SkMatrix remaining;
+
+ if (!matrix.decomposeScale(&scale, &remaining)) {
+ return false;
+ }
+ if (scale.width() <= 0 || scale.height() <= 0) {
+ return false;
+ }
+ remaining.preScale(scale.width(), scale.height());
+ return nearly_equal(matrix, remaining);
+}
+
+static void test_decompScale(skiatest::Reporter* reporter) {
+ SkMatrix m;
+
+ m.reset();
+ REPORTER_ASSERT(reporter, check_decompScale(m));
+ m.setScale(2, 3);
+ REPORTER_ASSERT(reporter, check_decompScale(m));
+ m.setRotate(35, 0, 0);
+ REPORTER_ASSERT(reporter, check_decompScale(m));
+
+ m.setScale(1, 0);
+ REPORTER_ASSERT(reporter, !check_decompScale(m));
+}
+
DEF_TEST(Matrix, reporter) {
SkMatrix mat, inverse, iden1, iden2;
@@ -889,6 +917,8 @@ DEF_TEST(Matrix, reporter) {
test_matrix_decomposition(reporter);
test_matrix_homogeneous(reporter);
test_set9(reporter);
+
+ test_decompScale(reporter);
}
DEF_TEST(Matrix_Concat, r) {