From 47df89ebfd548de2ccd91387e1d7eee418b65f96 Mon Sep 17 00:00:00 2001 From: reed Date: Thu, 30 Jun 2016 06:38:54 -0700 Subject: speed up maprect for scale+trans case BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2111703002 Review-Url: https://codereview.chromium.org/2111703002 --- tests/MatrixTest.cpp | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'tests/MatrixTest.cpp') 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]); + } +} -- cgit v1.2.3