diff options
author | Cary Clark <caryclark@skia.org> | 2018-05-16 21:28:55 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2018-05-17 14:02:43 +0000 |
commit | c06754b0466e14e1611fa3144bf337289e6ca82f (patch) | |
tree | 287a31a09b4556003569103655a855f8eefd43a6 /tests/MatrixTest.cpp | |
parent | bd74e6a02ae0e7b031aa1d1cd73062dba2c93daf (diff) |
mapRect should not fiddle with nonfinite values.
Docs-Preview: https://skia.org/?cl=128682
Bug: skia:7967
Change-Id: Ic43387b7705ee8385b8df2430886484ff856077c
Reviewed-on: https://skia-review.googlesource.com/128682
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
Diffstat (limited to 'tests/MatrixTest.cpp')
-rw-r--r-- | tests/MatrixTest.cpp | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/tests/MatrixTest.cpp b/tests/MatrixTest.cpp index ce1254e720..5dfe2ca936 100644 --- a/tests/MatrixTest.cpp +++ b/tests/MatrixTest.cpp @@ -987,14 +987,30 @@ DEF_TEST(Matrix_maprects, r) { rand.nextSScalar1() * scale, rand.nextSScalar1() * scale, rand.nextSScalar1() * scale); - SkRect dst[3]; + SkRect dst[4]; mat.mapPoints((SkPoint*)&dst[0].fLeft, (SkPoint*)&src.fLeft, 2); dst[0].sort(); mat.mapRect(&dst[1], src); mat.mapRectScaleTranslate(&dst[2], src); + dst[3] = mat.mapRect(src); REPORTER_ASSERT(r, dst[0] == dst[1]); REPORTER_ASSERT(r, dst[0] == dst[2]); + REPORTER_ASSERT(r, dst[0] == dst[3]); + } + + // We should report nonfinite-ness after a mapping + { + // We have special-cases in mapRect for different matrix types + SkMatrix m0 = SkMatrix::MakeScale(1e20f, 1e20f); + SkMatrix m1; m1.setRotate(30); m1.postScale(1e20f, 1e20f); + + for (const auto& m : { m0, m1 }) { + SkRect rect = { 0, 0, 1e20f, 1e20f }; + REPORTER_ASSERT(r, rect.isFinite()); + rect = m.mapRect(rect); + REPORTER_ASSERT(r, !rect.isFinite()); + } } } |