#include "core/rendering/PaintInfo.h"
#include "core/rendering/RenderView.h"
-namespace WebCore {
+namespace blink {
using namespace HTMLNames;
// FIXME: InterpolationNone should be used if ImageRenderingOptimizeContrast is set.
// See bug for more details: crbug.com/353716.
InterpolationQuality interpolationQuality = style()->imageRendering() == ImageRenderingOptimizeContrast ? InterpolationLow : CanvasDefaultInterpolationQuality;
+
+ HTMLCanvasElement* canvas = toHTMLCanvasElement(node());
+ LayoutSize layoutSize = contentRect.size();
+ if (style()->imageRendering() == ImageRenderingPixelated
+ && (layoutSize.width() > canvas->width() || layoutSize.height() > canvas->height() || layoutSize == canvas->size())) {
+ interpolationQuality = InterpolationNone;
+ }
+
InterpolationQuality previousInterpolationQuality = context->imageInterpolationQuality();
context->setImageInterpolationQuality(interpolationQuality);
- toHTMLCanvasElement(node())->paint(context, paintRect);
+ canvas->paint(context, paintRect);
context->setImageInterpolationQuality(previousInterpolationQuality);
if (clip)
setNeedsLayoutAndFullPaintInvalidation();
}
-CompositingReasons RenderHTMLCanvas::additionalCompositingReasons(CompositingTriggerFlags triggers) const
+CompositingReasons RenderHTMLCanvas::additionalCompositingReasons() const
{
- if (!(triggers & CanvasTrigger))
- return CompositingReasonNone;
-
HTMLCanvasElement* canvas = toHTMLCanvasElement(node());
if (canvas->renderingContext() && canvas->renderingContext()->isAccelerated())
return CompositingReasonCanvas;
return CompositingReasonNone;
}
-} // namespace WebCore
+} // namespace blink