Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(46)

Side by Side Diff: tests/MatrixTest.cpp

Issue 1006173005: add SkMatrix::decomposeScale (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: add unittest Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/core/SkPictureShader.cpp ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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 }
OLDNEW
« no previous file with comments | « src/core/SkPictureShader.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698