From 7600183ba7d8c8df6fbba1b32a73e6394216754e Mon Sep 17 00:00:00 2001 From: "aleksandar.stojiljkovic" Date: Mon, 2 Nov 2015 13:28:51 -0800 Subject: 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 --- tests/RectTest.cpp | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) (limited to 'tests/RectTest.cpp') 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); } -- cgit v1.2.3