diff options
author | aleksandar.stojiljkovic <aleksandar.stojiljkovic@intel.com> | 2015-11-02 13:28:51 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-11-02 13:28:51 -0800 |
commit | 7600183ba7d8c8df6fbba1b32a73e6394216754e (patch) | |
tree | 61bb64b51077a78a0c679105af3a5396f671c1ec /tests/RectTest.cpp | |
parent | 29a440d2d6f306498a7b54e978e3b034bd625c19 (diff) |
SkScan_Antihair: assert in debug and potentialy lost last pixels
alpha: (uint8_t) 256 is clamped to 255 before static cast to
uint8_t in SkToU8.
BUG=4406
Review URL: https://codereview.chromium.org/1424253002
Diffstat (limited to 'tests/RectTest.cpp')
-rw-r--r-- | tests/RectTest.cpp | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/tests/RectTest.cpp b/tests/RectTest.cpp index be77a87406..820586c3c6 100644 --- a/tests/RectTest.cpp +++ b/tests/RectTest.cpp @@ -46,6 +46,45 @@ static void test_stroke_width_clipping(skiatest::Reporter* reporter) { REPORTER_ASSERT(reporter, has_green_pixels(bm)); } +static void test_skbug4406(skiatest::Reporter* reporter) { + SkBitmap bm; + bm.allocN32Pixels(10, 10); + bm.eraseColor(SK_ColorTRANSPARENT); + + SkCanvas canvas(bm); + const SkRect r = { 1.5f, 1, 3.5f, 3 }; + // draw filled green rect first + SkPaint paint; + paint.setStyle(SkPaint::kFill_Style); + paint.setColor(0xff00ff00); + paint.setStrokeWidth(1); + paint.setAntiAlias(true); + canvas.drawRect(r, paint); + + // paint black with stroke rect (that asserts in bug 4406) + // over the filled rect, it should cover it + paint.setStyle(SkPaint::kStroke_Style); + paint.setColor(0xff000000); + paint.setStrokeWidth(1); + canvas.drawRect(r, paint); + REPORTER_ASSERT(reporter, !has_green_pixels(bm)); + + // do it again with thinner stroke + paint.setStyle(SkPaint::kFill_Style); + paint.setColor(0xff00ff00); + paint.setStrokeWidth(1); + paint.setAntiAlias(true); + canvas.drawRect(r, paint); + // paint black with stroke rect (that asserts in bug 4406) + // over the filled rect, it doesnt cover it completelly with thinner stroke + paint.setStyle(SkPaint::kStroke_Style); + paint.setColor(0xff000000); + paint.setStrokeWidth(0.99f); + canvas.drawRect(r, paint); + REPORTER_ASSERT(reporter, has_green_pixels(bm)); +} + DEF_TEST(Rect, reporter) { test_stroke_width_clipping(reporter); + test_skbug4406(reporter); } |