Chromium Code Reviews| Index: third_party/WebKit/Source/core/paint/SVGFilterPainter.cpp |
| diff --git a/third_party/WebKit/Source/core/paint/SVGFilterPainter.cpp b/third_party/WebKit/Source/core/paint/SVGFilterPainter.cpp |
| index 49c035b3a1e6abc0f5b03271856be7154a227cff..878c6bcb5712639ea5760d15a0137d0980cbc969 100644 |
| --- a/third_party/WebKit/Source/core/paint/SVGFilterPainter.cpp |
| +++ b/third_party/WebKit/Source/core/paint/SVGFilterPainter.cpp |
| @@ -48,7 +48,7 @@ void SVGFilterRecordingContext::endContent(FilterData* filterData) |
| filterData->m_state = FilterData::ReadyToPaint; |
| } |
| -static void paintFilteredContent(GraphicsContext& context, FilterData* filterData) |
| +static void paintFilteredContent(GraphicsContext& context, const LayoutObject& object, FilterData* filterData) |
| { |
| DCHECK_EQ(filterData->m_state, FilterData::ReadyToPaint); |
| DCHECK(filterData->filter->getSourceGraphic()); |
| @@ -60,7 +60,7 @@ static void paintFilteredContent(GraphicsContext& context, FilterData* filterDat |
| context.save(); |
| // Clip drawing of filtered image to the minimum required paint rect. |
| - context.clipRect(lastEffect->determineAbsolutePaintRect(lastEffect->absoluteBounds())); |
| + context.clipRect(lastEffect->mapRect(object.strokeBoundingBox())); |
|
Stephen White
2016/09/20 15:36:19
Does mapRect() now take into effect filters which
fs
2016/09/20 19:14:14
Yes, it should.
|
| FloatRect boundaries = filterData->filter->filterRegion(); |
| context.beginLayer(1, SkXfermode::kSrcOver_Mode, &boundaries, ColorFilterNone, std::move(imageFilter)); |
|
Stephen White
2016/09/20 15:36:19
Not new to this patch, but Skia may ignore the bou
fs
2016/09/20 19:14:14
mapRect() should apply that, which should hopefull
Stephen White
2016/09/20 19:46:38
Eventually, we can probably pass nullptr, and just
|
| @@ -131,7 +131,7 @@ void SVGFilterPainter::finishEffect(const LayoutObject& object, SVGFilterRecordi |
| FloatRect filterRegion = filterData ? filterData->filter->filterRegion() : FloatRect(); |
| LayoutObjectDrawingRecorder recorder(context, object, DisplayItem::kSVGFilter, filterRegion); |
| if (filterData && filterData->m_state == FilterData::ReadyToPaint) |
| - paintFilteredContent(context, filterData); |
| + paintFilteredContent(context, object, filterData); |
| } |
| } // namespace blink |