aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests/MatrixTest.cpp
diff options
context:
space:
mode:
authorGravatar reed <reed@google.com>2016-06-30 06:38:54 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2016-06-30 06:38:54 -0700
commit47df89ebfd548de2ccd91387e1d7eee418b65f96 (patch)
tree97ef6df66cec123f559f7feb98dd5942670bf744 /tests/MatrixTest.cpp
parent501ca7f538f129efd27113e641ad17363920886e (diff)
speed up maprect for scale+trans case
Diffstat (limited to 'tests/MatrixTest.cpp')
-rw-r--r--tests/MatrixTest.cpp26
1 files changed, 26 insertions, 0 deletions
diff --git a/tests/MatrixTest.cpp b/tests/MatrixTest.cpp
index 2f91ccae97..01b2ba4e43 100644
--- a/tests/MatrixTest.cpp
+++ b/tests/MatrixTest.cpp
@@ -953,3 +953,29 @@ DEF_TEST(Matrix_Concat, r) {
REPORTER_ASSERT(r, expected == SkMatrix::Concat(a, b));
}
+
+// Test that all variants of maprect are correct.
+DEF_TEST(Matrix_maprects, r) {
+ const SkScalar scale = 1000;
+
+ SkMatrix mat;
+ mat.setScale(2, 3);
+ mat.postTranslate(1, 4);
+
+ SkRandom rand;
+ for (int i = 0; i < 10000; ++i) {
+ SkRect src = SkRect::MakeLTRB(rand.nextSScalar1() * scale,
+ rand.nextSScalar1() * scale,
+ rand.nextSScalar1() * scale,
+ rand.nextSScalar1() * scale);
+ SkRect dst[3];
+
+ mat.mapPoints((SkPoint*)&dst[0].fLeft, (SkPoint*)&src.fLeft, 2);
+ dst[0].sort();
+ mat.mapRect(&dst[1], src);
+ mat.mapRectScaleTranslate(&dst[2], src);
+
+ REPORTER_ASSERT(r, dst[0] == dst[1]);
+ REPORTER_ASSERT(r, dst[0] == dst[2]);
+ }
+}