diff options
author | Joe Gregorio <jcgregorio@google.com> | 2017-01-20 14:21:27 +0000 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-01-20 14:21:42 +0000 |
commit | c485907f0420e5f9cf8223e9ba53812cd8dd5368 (patch) | |
tree | ccb8bf27442eabffd30127e5f0ae635e6fc63f73 | |
parent | 1e18aecd0b5bdb6dea0b0bcebf985a8bb221e6a6 (diff) |
Revert "explictly fail to draw unpremul, as this is buggy, incomplete, tricky, and unused"
This reverts commit 1baaacac74d24604e3dfca9857fbd647df375997.
Reason for revert: Failing the roll: https://storage.googleapis.com/chromium-layout-test-archives/linux_trusty_blink_rel/3868/layout-test-results/results.html
Original change's description:
> explictly fail to draw unpremul, as this is buggy, incomplete, tricky, and unused
>
> BUG=skia:
>
> Change-Id: Ie9da6015cc4955c0f27f6db53fc6ae532e0132f4
> Reviewed-on: https://skia-review.googlesource.com/7304
> Commit-Queue: Mike Reed <reed@google.com>
> Reviewed-by: Matt Sarett <msarett@google.com>
>
TBR=bsalomon@google.com,msarett@google.com,brianosman@google.com,reed@google.com
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:
Change-Id: Ifc808a430b8afe4fef6df3775c2bfdcede1a2dd7
Reviewed-on: https://skia-review.googlesource.com/7329
Commit-Queue: Joe Gregorio <jcgregorio@google.com>
Reviewed-by: Joe Gregorio <jcgregorio@google.com>
-rw-r--r-- | gm/all_bitmap_configs.cpp | 14 | ||||
-rw-r--r-- | include/core/SkImageInfo.h | 4 | ||||
-rw-r--r-- | src/core/SkCanvas.cpp | 18 | ||||
-rw-r--r-- | src/image/SkImageShader.cpp | 4 |
4 files changed, 5 insertions, 35 deletions
diff --git a/gm/all_bitmap_configs.cpp b/gm/all_bitmap_configs.cpp index 0d9c2c5a3d..e954fc33e5 100644 --- a/gm/all_bitmap_configs.cpp +++ b/gm/all_bitmap_configs.cpp @@ -260,37 +260,27 @@ static void make_color_test_bitmap_variant( *pm.writable_addr32(x, y) = make_pixel(x, y, alphaType); } } - bm->setImmutable(); } -DEF_SIMPLE_GM(all_variants_8888, canvas, 4 * SCALE + 30, 4 * SCALE + 30) { +DEF_SIMPLE_GM(all_variants_8888, canvas, 4 * SCALE + 30, 2 * SCALE + 10) { sk_tool_utils::draw_checkerboard(canvas, SK_ColorLTGRAY, SK_ColorWHITE, 8); sk_sp<SkColorSpace> colorSpaces[] { SkColorSpace::MakeNamed(SkColorSpace::kSRGB_Named), nullptr, }; - - SkPaint rectPaint; - rectPaint.setColor(0x8000FF00); - SkRect r = { 0, 0, SCALE, SCALE }; - for (auto colorSpace : colorSpaces) { canvas->save(); - // unpremul is expected to *not* draw anything for (auto alphaType : {kPremul_SkAlphaType, kUnpremul_SkAlphaType}) { canvas->save(); for (auto colorType : {kRGBA_8888_SkColorType, kBGRA_8888_SkColorType}) { SkBitmap bm; make_color_test_bitmap_variant(colorType, alphaType, colorSpace, &bm); - canvas->drawRect(r, rectPaint); canvas->drawBitmap(bm, 0.0f, 0.0f); - canvas->drawRect(r.makeOffset(0, SCALE + 10), rectPaint); - canvas->drawImage(SkImage::MakeFromBitmap(bm), 0, SCALE + 10, nullptr); canvas->translate(SCALE + 10, 0.0f); } canvas->restore(); - canvas->translate(0.0f, (SCALE + 10) * 2); + canvas->translate(0.0f, SCALE + 10); } canvas->restore(); canvas->translate(2 * (SCALE + 10), 0.0f); diff --git a/include/core/SkImageInfo.h b/include/core/SkImageInfo.h index 2dea479c6f..4a8c2860fc 100644 --- a/include/core/SkImageInfo.h +++ b/include/core/SkImageInfo.h @@ -40,8 +40,8 @@ enum SkAlphaType { * All pixels have their color components stored without any regard to the * alpha. e.g. this is the default configuration for PNG images. * - * This alpha-type is ONLY supported for readPixels/writePixels operations, - * and is not supported for drawing. + * This alpha-type is ONLY supported for input images. Rendering cannot + * generate this on output. */ kUnpremul_SkAlphaType, diff --git a/src/core/SkCanvas.cpp b/src/core/SkCanvas.cpp index 367a348f51..0375ab738d 100644 --- a/src/core/SkCanvas.cpp +++ b/src/core/SkCanvas.cpp @@ -53,12 +53,6 @@ #define RETURN_ON_NULL(ptr) do { if (nullptr == (ptr)) return; } while (0) -#define RETURN_ON_UNPREMUL_IMAGE(image) \ - do { if (as_IB(image)->onAlphaType() == kUnpremul_SkAlphaType) return; } while (0) - -#define RETURN_ON_UNPREMUL_BITMAP(bitmap) \ - do { if (bitmap.alphaType() == kUnpremul_SkAlphaType) return; } while (0) - /* * Return true if the drawing this rect would hit every pixels in the canvas. * @@ -1915,14 +1909,12 @@ void SkCanvas::drawPath(const SkPath& path, const SkPaint& paint) { void SkCanvas::drawImage(const SkImage* image, SkScalar x, SkScalar y, const SkPaint* paint) { RETURN_ON_NULL(image); - RETURN_ON_UNPREMUL_IMAGE(image); this->onDrawImage(image, x, y, paint); } void SkCanvas::drawImageRect(const SkImage* image, const SkRect& src, const SkRect& dst, const SkPaint* paint, SrcRectConstraint constraint) { RETURN_ON_NULL(image); - RETURN_ON_UNPREMUL_IMAGE(image); if (dst.isEmpty() || src.isEmpty()) { return; } @@ -1932,14 +1924,12 @@ void SkCanvas::drawImageRect(const SkImage* image, const SkRect& src, const SkRe void SkCanvas::drawImageRect(const SkImage* image, const SkIRect& isrc, const SkRect& dst, const SkPaint* paint, SrcRectConstraint constraint) { RETURN_ON_NULL(image); - RETURN_ON_UNPREMUL_IMAGE(image); this->drawImageRect(image, SkRect::Make(isrc), dst, paint, constraint); } void SkCanvas::drawImageRect(const SkImage* image, const SkRect& dst, const SkPaint* paint, SrcRectConstraint constraint) { RETURN_ON_NULL(image); - RETURN_ON_UNPREMUL_IMAGE(image); this->drawImageRect(image, SkRect::MakeIWH(image->width(), image->height()), dst, paint, constraint); } @@ -1947,7 +1937,6 @@ void SkCanvas::drawImageRect(const SkImage* image, const SkRect& dst, const SkPa void SkCanvas::drawImageNine(const SkImage* image, const SkIRect& center, const SkRect& dst, const SkPaint* paint) { RETURN_ON_NULL(image); - RETURN_ON_UNPREMUL_IMAGE(image); if (dst.isEmpty()) { return; } @@ -1961,7 +1950,6 @@ void SkCanvas::drawImageNine(const SkImage* image, const SkIRect& center, const void SkCanvas::drawImageLattice(const SkImage* image, const Lattice& lattice, const SkRect& dst, const SkPaint* paint) { RETURN_ON_NULL(image); - RETURN_ON_UNPREMUL_IMAGE(image); if (dst.isEmpty()) { return; } @@ -1984,7 +1972,6 @@ void SkCanvas::drawBitmap(const SkBitmap& bitmap, SkScalar dx, SkScalar dy, cons if (bitmap.drawsNothing()) { return; } - RETURN_ON_UNPREMUL_BITMAP(bitmap); this->onDrawBitmap(bitmap, dx, dy, paint); } @@ -1993,7 +1980,6 @@ void SkCanvas::drawBitmapRect(const SkBitmap& bitmap, const SkRect& src, const S if (bitmap.drawsNothing() || dst.isEmpty() || src.isEmpty()) { return; } - RETURN_ON_UNPREMUL_BITMAP(bitmap); this->onDrawBitmapRect(bitmap, &src, dst, paint, constraint); } @@ -2013,7 +1999,6 @@ void SkCanvas::drawBitmapNine(const SkBitmap& bitmap, const SkIRect& center, con if (bitmap.drawsNothing() || dst.isEmpty()) { return; } - RETURN_ON_UNPREMUL_BITMAP(bitmap); if (SkLatticeIter::Valid(bitmap.width(), bitmap.height(), center)) { this->onDrawBitmapNine(bitmap, center, dst, paint); } else { @@ -2026,7 +2011,6 @@ void SkCanvas::drawBitmapLattice(const SkBitmap& bitmap, const Lattice& lattice, if (bitmap.drawsNothing() || dst.isEmpty()) { return; } - RETURN_ON_UNPREMUL_BITMAP(bitmap); SkIRect bounds; Lattice latticePlusBounds = lattice; @@ -2046,10 +2030,10 @@ void SkCanvas::drawAtlas(const SkImage* atlas, const SkRSXform xform[], const Sk const SkColor colors[], int count, SkBlendMode mode, const SkRect* cull, const SkPaint* paint) { RETURN_ON_NULL(atlas); - RETURN_ON_UNPREMUL_IMAGE(atlas); if (count <= 0) { return; } + SkASSERT(atlas); SkASSERT(tex); this->onDrawAtlas(atlas, xform, tex, colors, count, mode, cull, paint); } diff --git a/src/image/SkImageShader.cpp b/src/image/SkImageShader.cpp index 5cb1c24c5a..5b79fb1d9e 100644 --- a/src/image/SkImageShader.cpp +++ b/src/image/SkImageShader.cpp @@ -103,10 +103,6 @@ static bool bitmap_is_too_big(int w, int h) { sk_sp<SkShader> SkImageShader::Make(sk_sp<SkImage> image, TileMode tx, TileMode ty, const SkMatrix* localMatrix, SkTBlitterAllocator* allocator) { - if (image && as_IB(image)->onAlphaType() == kUnpremul_SkAlphaType) { - return nullptr; - } - SkShader* shader; if (!image || bitmap_is_too_big(image->width(), image->height())) { if (nullptr == allocator) { |