aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests/DrawBitmapRectTest.cpp
diff options
context:
space:
mode:
authorGravatar fmalita <fmalita@chromium.org>2016-01-07 10:34:46 -0800
committerGravatar Commit bot <commit-bot@chromium.org>2016-01-07 10:34:46 -0800
commitc7e211acd0c9201688de7ff0c9a2271c67440adf (patch)
treec21a3f91ab7e063f9874f90ad62d6a970340ad87 /tests/DrawBitmapRectTest.cpp
parentb7f4b8e94e2414d17eb68a9ceae42b2eea38e604 (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 Committed: https://skia.googlesource.com/skia/+/983dc2541a729609037a05eba731b3eb9788c517 Review URL: https://codereview.chromium.org/1566943002
Diffstat (limited to 'tests/DrawBitmapRectTest.cpp')
-rw-r--r--tests/DrawBitmapRectTest.cpp38
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,