Index: third_party/WebKit/Source/modules/canvas2d/CanvasRenderingContext2DState.cpp |
diff --git a/third_party/WebKit/Source/modules/canvas2d/CanvasRenderingContext2DState.cpp b/third_party/WebKit/Source/modules/canvas2d/CanvasRenderingContext2DState.cpp |
index f69c0a7f7996765475e141ec7bf88899a148e666..e0c9c60d45b4091e7f80778664e14302a4f79af7 100644 |
--- a/third_party/WebKit/Source/modules/canvas2d/CanvasRenderingContext2DState.cpp |
+++ b/third_party/WebKit/Source/modules/canvas2d/CanvasRenderingContext2DState.cpp |
@@ -17,6 +17,7 @@ |
#include "modules/canvas2d/CanvasRenderingContext2D.h" |
#include "modules/canvas2d/CanvasStyle.h" |
#include "platform/graphics/DrawLooperBuilder.h" |
+#include "platform/graphics/filters/FilterEffect.h" |
#include "platform/graphics/filters/FilterOperation.h" |
#include "platform/graphics/filters/SkiaImageFilterBuilder.h" |
#include "platform/graphics/skia/SkiaUtils.h" |
@@ -308,21 +309,23 @@ SkImageFilter* CanvasRenderingContext2DState::getFilter(Element* styleResolution |
StyleBuilder::applyProperty(CSSPropertyFilter, resolverState, *m_filterValue); |
resolverState.loadPendingResources(); |
- FilterEffectBuilder* filterEffectBuilder = FilterEffectBuilder::create(); |
// We can't reuse m_fillPaint and m_strokePaint for the filter, since these incorporate |
// the global alpha, which isn't applicable here. |
SkPaint fillPaintForFilter; |
- SkPaint strokePaintForFilter; |
m_fillStyle->applyToPaint(fillPaintForFilter); |
- m_strokeStyle->applyToPaint(strokePaintForFilter); |
fillPaintForFilter.setColor(m_fillStyle->paintColor()); |
+ SkPaint strokePaintForFilter; |
+ m_strokeStyle->applyToPaint(strokePaintForFilter); |
strokePaintForFilter.setColor(m_strokeStyle->paintColor()); |
- FloatRect referenceBox((FloatPoint()), FloatSize(canvasSize)); |
- const double effectiveZoom = 1.0; // Deliberately ignore zoom on the canvas element |
- filterEffectBuilder->build(styleResolutionHost, filterStyle->filter(), effectiveZoom, referenceBox, &fillPaintForFilter, &strokePaintForFilter); |
- if (FilterEffect* lastEffect = filterEffectBuilder->lastEffect()) { |
+ FilterEffectBuilder filterEffectBuilder( |
+ styleResolutionHost, |
+ FloatRect((FloatPoint()), FloatSize(canvasSize)), |
+ 1.0f, // Deliberately ignore zoom on the canvas element. |
+ &fillPaintForFilter, &strokePaintForFilter); |
+ |
+ if (FilterEffect* lastEffect = filterEffectBuilder.buildFilterEffect(filterStyle->filter())) { |
m_resolvedFilter = SkiaImageFilterBuilder::build(lastEffect, ColorSpaceDeviceRGB); |
if (m_resolvedFilter) { |
updateFilterReferences(toHTMLCanvasElement(styleResolutionHost), context, filterStyle->filter()); |