| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2011 Google Inc. | 2 * Copyright 2011 Google Inc. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
| 5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
| 6 */ | 6 */ |
| 7 | 7 |
| 8 #include "SkMath.h" | 8 #include "SkMath.h" |
| 9 #include "SkMatrix.h" | 9 #include "SkMatrix.h" |
| 10 #include "SkMatrixUtils.h" | 10 #include "SkMatrixUtils.h" |
| (...skipping 753 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 764 for (int j = 0; j < kTripleCount; ++j) { | 764 for (int j = 0; j < kTripleCount; ++j) { |
| 765 SkScalar dst[3]; | 765 SkScalar dst[3]; |
| 766 mats[i].mapHomogeneousPoints(dst, &randTriples[j*3], 1); | 766 mats[i].mapHomogeneousPoints(dst, &randTriples[j*3], 1); |
| 767 REPORTER_ASSERT(reporter, naive_homogeneous_mapping(mats[i], &randTr
iples[j*3], dst)); | 767 REPORTER_ASSERT(reporter, naive_homogeneous_mapping(mats[i], &randTr
iples[j*3], dst)); |
| 768 } | 768 } |
| 769 } | 769 } |
| 770 } | 770 } |
| 771 | 771 |
| 772 } | 772 } |
| 773 | 773 |
| 774 static bool check_decompScale(const SkMatrix& matrix) { |
| 775 SkSize scale; |
| 776 SkMatrix remaining; |
| 777 |
| 778 if (!matrix.decomposeScale(&scale, &remaining)) { |
| 779 return false; |
| 780 } |
| 781 if (scale.width() <= 0 || scale.height() <= 0) { |
| 782 return false; |
| 783 } |
| 784 remaining.preScale(scale.width(), scale.height()); |
| 785 return nearly_equal(matrix, remaining); |
| 786 } |
| 787 |
| 788 static void test_decompScale(skiatest::Reporter* reporter) { |
| 789 SkMatrix m; |
| 790 |
| 791 m.reset(); |
| 792 REPORTER_ASSERT(reporter, check_decompScale(m)); |
| 793 m.setScale(2, 3); |
| 794 REPORTER_ASSERT(reporter, check_decompScale(m)); |
| 795 m.setRotate(35, 0, 0); |
| 796 REPORTER_ASSERT(reporter, check_decompScale(m)); |
| 797 |
| 798 m.setScale(1, 0); |
| 799 REPORTER_ASSERT(reporter, !check_decompScale(m)); |
| 800 } |
| 801 |
| 774 DEF_TEST(Matrix, reporter) { | 802 DEF_TEST(Matrix, reporter) { |
| 775 SkMatrix mat, inverse, iden1, iden2; | 803 SkMatrix mat, inverse, iden1, iden2; |
| 776 | 804 |
| 777 mat.reset(); | 805 mat.reset(); |
| 778 mat.setTranslate(SK_Scalar1, SK_Scalar1); | 806 mat.setTranslate(SK_Scalar1, SK_Scalar1); |
| 779 REPORTER_ASSERT(reporter, mat.invert(&inverse)); | 807 REPORTER_ASSERT(reporter, mat.invert(&inverse)); |
| 780 iden1.setConcat(mat, inverse); | 808 iden1.setConcat(mat, inverse); |
| 781 REPORTER_ASSERT(reporter, is_identity(iden1)); | 809 REPORTER_ASSERT(reporter, is_identity(iden1)); |
| 782 | 810 |
| 783 mat.setScale(SkIntToScalar(2), SkIntToScalar(4)); | 811 mat.setScale(SkIntToScalar(2), SkIntToScalar(4)); |
| (...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 882 mat.set(SkMatrix::kMSkewX, SK_ScalarNaN); | 910 mat.set(SkMatrix::kMSkewX, SK_ScalarNaN); |
| 883 mat2.set(SkMatrix::kMSkewX, SK_ScalarNaN); | 911 mat2.set(SkMatrix::kMSkewX, SK_ScalarNaN); |
| 884 REPORTER_ASSERT(reporter, !are_equal(reporter, mat, mat2)); | 912 REPORTER_ASSERT(reporter, !are_equal(reporter, mat, mat2)); |
| 885 | 913 |
| 886 test_matrix_min_max_scale(reporter); | 914 test_matrix_min_max_scale(reporter); |
| 887 test_matrix_preserve_shape(reporter); | 915 test_matrix_preserve_shape(reporter); |
| 888 test_matrix_recttorect(reporter); | 916 test_matrix_recttorect(reporter); |
| 889 test_matrix_decomposition(reporter); | 917 test_matrix_decomposition(reporter); |
| 890 test_matrix_homogeneous(reporter); | 918 test_matrix_homogeneous(reporter); |
| 891 test_set9(reporter); | 919 test_set9(reporter); |
| 920 |
| 921 test_decompScale(reporter); |
| 892 } | 922 } |
| 893 | 923 |
| 894 DEF_TEST(Matrix_Concat, r) { | 924 DEF_TEST(Matrix_Concat, r) { |
| 895 SkMatrix a; | 925 SkMatrix a; |
| 896 a.setTranslate(10, 20); | 926 a.setTranslate(10, 20); |
| 897 | 927 |
| 898 SkMatrix b; | 928 SkMatrix b; |
| 899 b.setScale(3, 5); | 929 b.setScale(3, 5); |
| 900 | 930 |
| 901 SkMatrix expected; | 931 SkMatrix expected; |
| 902 expected.setConcat(a,b); | 932 expected.setConcat(a,b); |
| 903 | 933 |
| 904 REPORTER_ASSERT(r, expected == SkMatrix::Concat(a, b)); | 934 REPORTER_ASSERT(r, expected == SkMatrix::Concat(a, b)); |
| 905 } | 935 } |
| OLD | NEW |