diff options
author | fmalita <fmalita@chromium.org> | 2016-01-07 08:02:25 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-01-07 08:02:26 -0800 |
commit | 983dc2541a729609037a05eba731b3eb9788c517 (patch) | |
tree | 352e3f143db88ea70b09e5c1893660046edaa44c /tests | |
parent | c070d1514ace6b672d5dbaaa3090d27698400f1f (diff) |
SkTreatAsSprite should take AA into account
Currently we always call SkTreatAsSprite with 0 subpixel bits, which means
subpixel translations are ignored. This is incorrect for the anti-aliased
case (drawSprite always pixel-snaps, so we lose edge AA).
The CL updates SkTreatAsSprite to take an SkPaint argument and use 8 subpixel
bits when AA is requested.
Also remove unused SkTreatAsSpriteFilter.
BUG=skia:4761
R=reed@google.com
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1566943002
Review URL: https://codereview.chromium.org/1566943002
Diffstat (limited to 'tests')
-rw-r--r-- | tests/DrawBitmapRectTest.cpp | 38 |
1 files changed, 18 insertions, 20 deletions
diff --git a/tests/DrawBitmapRectTest.cpp b/tests/DrawBitmapRectTest.cpp index 2eb181960b..88b9437935 100644 --- a/tests/DrawBitmapRectTest.cpp +++ b/tests/DrawBitmapRectTest.cpp @@ -82,24 +82,22 @@ static void rand_size(SkISize* size, SkRandom& rand) { size->set(rand.nextU() & 0xFFFF, rand.nextU() & 0xFFFF); } -static bool treat_as_sprite(const SkMatrix& mat, const SkISize& size, - unsigned bits) { - return SkTreatAsSprite(mat, size.width(), size.height(), bits); -} - static void test_treatAsSprite(skiatest::Reporter* reporter) { - const unsigned bilerBits = kSkSubPixelBitsForBilerp; SkMatrix mat; SkISize size; SkRandom rand; - // assert: translate-only no-filter can always be treated as sprite + SkPaint noaaPaint; + SkPaint aaPaint; + aaPaint.setAntiAlias(true); + + // assert: translate-only no-aa can always be treated as sprite for (int i = 0; i < 1000; ++i) { rand_matrix(&mat, rand, SkMatrix::kTranslate_Mask); for (int j = 0; j < 1000; ++j) { rand_size(&size, rand); - REPORTER_ASSERT(reporter, treat_as_sprite(mat, size, 0)); + REPORTER_ASSERT(reporter, SkTreatAsSprite(mat, size, noaaPaint)); } } @@ -108,8 +106,8 @@ static void test_treatAsSprite(skiatest::Reporter* reporter) { rand_matrix(&mat, rand, SkMatrix::kAffine_Mask | SkMatrix::kPerspective_Mask); for (int j = 0; j < 1000; ++j) { rand_size(&size, rand); - REPORTER_ASSERT(reporter, !treat_as_sprite(mat, size, 0)); - REPORTER_ASSERT(reporter, !treat_as_sprite(mat, size, bilerBits)); + REPORTER_ASSERT(reporter, !SkTreatAsSprite(mat, size, noaaPaint)); + REPORTER_ASSERT(reporter, !SkTreatAsSprite(mat, size, aaPaint)); } } @@ -117,33 +115,33 @@ static void test_treatAsSprite(skiatest::Reporter* reporter) { const SkScalar tooMuchSubpixel = 100.1f; mat.setTranslate(tooMuchSubpixel, 0); - REPORTER_ASSERT(reporter, !treat_as_sprite(mat, size, bilerBits)); + REPORTER_ASSERT(reporter, !SkTreatAsSprite(mat, size, aaPaint)); mat.setTranslate(0, tooMuchSubpixel); - REPORTER_ASSERT(reporter, !treat_as_sprite(mat, size, bilerBits)); + REPORTER_ASSERT(reporter, !SkTreatAsSprite(mat, size, aaPaint)); const SkScalar tinySubPixel = 100.02f; mat.setTranslate(tinySubPixel, 0); - REPORTER_ASSERT(reporter, treat_as_sprite(mat, size, bilerBits)); + REPORTER_ASSERT(reporter, SkTreatAsSprite(mat, size, aaPaint)); mat.setTranslate(0, tinySubPixel); - REPORTER_ASSERT(reporter, treat_as_sprite(mat, size, bilerBits)); + REPORTER_ASSERT(reporter, SkTreatAsSprite(mat, size, aaPaint)); const SkScalar twoThirds = SK_Scalar1 * 2 / 3; const SkScalar bigScale = (size.width() + twoThirds) / size.width(); mat.setScale(bigScale, bigScale); - REPORTER_ASSERT(reporter, !treat_as_sprite(mat, size, false)); - REPORTER_ASSERT(reporter, !treat_as_sprite(mat, size, bilerBits)); + REPORTER_ASSERT(reporter, !SkTreatAsSprite(mat, size, noaaPaint)); + REPORTER_ASSERT(reporter, !SkTreatAsSprite(mat, size, aaPaint)); const SkScalar oneThird = SK_Scalar1 / 3; const SkScalar smallScale = (size.width() + oneThird) / size.width(); mat.setScale(smallScale, smallScale); - REPORTER_ASSERT(reporter, treat_as_sprite(mat, size, false)); - REPORTER_ASSERT(reporter, !treat_as_sprite(mat, size, bilerBits)); + REPORTER_ASSERT(reporter, SkTreatAsSprite(mat, size, noaaPaint)); + REPORTER_ASSERT(reporter, !SkTreatAsSprite(mat, size, aaPaint)); const SkScalar oneFortyth = SK_Scalar1 / 40; const SkScalar tinyScale = (size.width() + oneFortyth) / size.width(); mat.setScale(tinyScale, tinyScale); - REPORTER_ASSERT(reporter, treat_as_sprite(mat, size, false)); - REPORTER_ASSERT(reporter, treat_as_sprite(mat, size, bilerBits)); + REPORTER_ASSERT(reporter, SkTreatAsSprite(mat, size, noaaPaint)); + REPORTER_ASSERT(reporter, SkTreatAsSprite(mat, size, aaPaint)); } static void assert_ifDrawnTo(skiatest::Reporter* reporter, |