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) |