Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1065)

Unified Diff: third_party/WebKit/Source/core/frame/ImageBitmap.cpp

Issue 2559013002: Add ColorBehavior to blink::Image draw methods (Closed)
Patch Set: Rebase Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/core/frame/ImageBitmap.cpp
diff --git a/third_party/WebKit/Source/core/frame/ImageBitmap.cpp b/third_party/WebKit/Source/core/frame/ImageBitmap.cpp
index 776800c8b50edcf2a1e08e937bc39e32d2611268..64d6a6849b9a8bb9e2da1cac52ec8ef7bee55a23 100644
--- a/third_party/WebKit/Source/core/frame/ImageBitmap.cpp
+++ b/third_party/WebKit/Source/core/frame/ImageBitmap.cpp
@@ -300,7 +300,10 @@ static PassRefPtr<StaticBitmapImage> cropImage(
static_cast<unsigned>(info.width()) * info.bytesPerPixel()));
}
- sk_sp<SkImage> skiaImage = image->imageForCurrentFrame();
+ // TODO(ccameron): Canvas should operate in sRGB and not display space.
+ // https://crbug.com/667431
+ sk_sp<SkImage> skiaImage =
+ image->imageForCurrentFrame(ColorBehavior::transformToGlobalTarget());
// Attempt to get raw unpremultiplied image data, executed only when skiaImage
// is premultiplied.
if ((((!parsedOptions.premultiplyAlpha && !skiaImage->isOpaque()) ||
@@ -398,7 +401,10 @@ ImageBitmap::ImageBitmap(HTMLImageElement* image,
return;
// In the case where the source image is lazy-decoded, m_image may not be in
// a decoded state, we trigger it here.
- sk_sp<SkImage> skImage = m_image->imageForCurrentFrame();
+ // TODO(ccameron): Canvas should operate in sRGB and not display space.
+ // https://crbug.com/667431
+ sk_sp<SkImage> skImage =
+ m_image->imageForCurrentFrame(ColorBehavior::transformToGlobalTarget());
SkPixmap pixmap;
if (!skImage->isTextureBacked() && !skImage->peekPixels(&pixmap)) {
sk_sp<SkSurface> surface =
@@ -489,8 +495,11 @@ ImageBitmap::ImageBitmap(HTMLCanvasElement* canvas,
return;
if (isPremultiplyAlphaReverted) {
parsedOptions.premultiplyAlpha = false;
- m_image = StaticBitmapImage::create(
- premulSkImageToUnPremul(m_image->imageForCurrentFrame().get()));
+ // TODO(ccameron): Canvas should operate in sRGB and not display space.
+ // https://crbug.com/667431
+ m_image = StaticBitmapImage::create(premulSkImageToUnPremul(
+ m_image->imageForCurrentFrame(ColorBehavior::transformToGlobalTarget())
+ .get()));
}
if (!m_image)
return;
@@ -806,8 +815,12 @@ PassRefPtr<Uint8Array> ImageBitmap::copyBitmapData(AlphaDisposition alphaOp,
(format == RGBAColorType) ? kRGBA_8888_SkColorType : kN32_SkColorType,
(alphaOp == PremultiplyAlpha) ? kPremul_SkAlphaType
: kUnpremul_SkAlphaType);
- RefPtr<Uint8Array> dstPixels =
- copySkImageData(m_image->imageForCurrentFrame().get(), info);
+ // TODO(ccameron): Canvas should operate in sRGB and not display space.
+ // https://crbug.com/667431
+ RefPtr<Uint8Array> dstPixels = copySkImageData(
+ m_image->imageForCurrentFrame(ColorBehavior::transformToGlobalTarget())
+ .get(),
+ info);
return dstPixels.release();
}

Powered by Google App Engine
This is Rietveld 408576698