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

Unified Diff: third_party/WebKit/Source/platform/graphics/CrossfadeGeneratedImage.cpp

Issue 2157953002: Change filter quality when scaling-down in drawImage (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 5 months 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/platform/graphics/CrossfadeGeneratedImage.cpp
diff --git a/third_party/WebKit/Source/platform/graphics/CrossfadeGeneratedImage.cpp b/third_party/WebKit/Source/platform/graphics/CrossfadeGeneratedImage.cpp
index f3c28073dd30e1bdb7200873200ca6e45ee08ae3..876206440dc2cb577938222b799dbb2af7041dd2 100644
--- a/third_party/WebKit/Source/platform/graphics/CrossfadeGeneratedImage.cpp
+++ b/third_party/WebKit/Source/platform/graphics/CrossfadeGeneratedImage.cpp
@@ -62,14 +62,14 @@ void CrossfadeGeneratedImage::drawCrossfade(SkCanvas* canvas, const SkPaint& pai
// TODO(junov): This code should probably be propagating the RespectImageOrientationEnum
// form CrossfadeGeneratedImage::draw. Code was written this way during refactoring to
// avoid modifying existing behavior, but this warrants further investigation. crbug.com/472634
- m_fromImage->draw(canvas, imagePaint, destRect, fromImageRect, DoNotRespectImageOrientation, clampMode);
+ m_fromImage->draw(canvas, imagePaint, destRect, fromImageRect, true, DoNotRespectImageOrientation, clampMode);
imagePaint.setXfermodeMode(SkXfermode::kPlus_Mode);
imageAlpha = clampedAlphaForBlending(m_percentage);
imagePaint.setAlpha(imageAlpha > 255 ? 255 : imageAlpha);
- m_toImage->draw(canvas, imagePaint, destRect, toImageRect, DoNotRespectImageOrientation, clampMode);
+ m_toImage->draw(canvas, imagePaint, destRect, toImageRect, true, DoNotRespectImageOrientation, clampMode);
}
-void CrossfadeGeneratedImage::draw(SkCanvas* canvas, const SkPaint& paint, const FloatRect& dstRect, const FloatRect& srcRect, RespectImageOrientationEnum, ImageClampingMode clampMode)
+void CrossfadeGeneratedImage::draw(SkCanvas* canvas, const SkPaint& paint, const FloatRect& dstRect, const FloatRect& srcRect, bool imageSmoothingEnabled, RespectImageOrientationEnum, ImageClampingMode clampMode)
{
// Draw nothing if either of the images hasn't loaded yet.
if (m_fromImage == Image::nullImage() || m_toImage == Image::nullImage())
@@ -82,7 +82,11 @@ void CrossfadeGeneratedImage::draw(SkCanvas* canvas, const SkPaint& paint, const
canvas->scale(dstRect.width() / srcRect.width(), dstRect.height() / srcRect.height());
canvas->translate(-srcRect.x(), -srcRect.y());
- drawCrossfade(canvas, paint, clampMode);
+ SkPaint adjustedPaint = paint;
+ if (!imageSmoothingEnabled && Image::isDrawScalingDown(srcRect, dstRect))
+ adjustedPaint.setFilterQuality(kLow_SkFilterQuality);
+
+ drawCrossfade(canvas, adjustedPaint, clampMode);
}
void CrossfadeGeneratedImage::drawTile(GraphicsContext& context, const FloatRect& srcRect)

Powered by Google App Engine
This is Rietveld 408576698