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

Unified Diff: third_party/WebKit/Source/core/paint/SVGFilterPainter.cpp

Issue 2350063002: Replace FilterData::filter with lastEffect (Closed)
Patch Set: Created 4 years, 3 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/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..d20124482b0e0ba6a90ac15470571d246ab0de9d 100644
--- a/third_party/WebKit/Source/core/paint/SVGFilterPainter.cpp
+++ b/third_party/WebKit/Source/core/paint/SVGFilterPainter.cpp
@@ -7,6 +7,7 @@
#include "core/layout/svg/LayoutSVGResourceFilter.h"
#include "core/paint/FilterEffectBuilder.h"
#include "core/paint/LayoutObjectDrawingRecorder.h"
+#include "core/svg/graphics/filters/SVGFilterBuilder.h"
#include "platform/graphics/filters/SkiaImageFilterBuilder.h"
#include "platform/graphics/filters/SourceGraphic.h"
#include "wtf/PtrUtil.h"
@@ -29,13 +30,14 @@ void SVGFilterRecordingContext::endContent(FilterData* filterData)
{
DCHECK_EQ(filterData->m_state, FilterData::RecordingContent);
- SourceGraphic* sourceGraphic = filterData->filter->getSourceGraphic();
+ Filter* filter = filterData->lastEffect->getFilter();
+ SourceGraphic* sourceGraphic = filter->getSourceGraphic();
DCHECK(sourceGraphic);
// Use the context that contains the filtered content.
DCHECK(m_paintController);
DCHECK(m_context);
- m_context->beginRecording(filterData->filter->filterRegion());
+ m_context->beginRecording(filter->filterRegion());
m_paintController->commitNewDisplayItems();
m_paintController->paintArtifact().replay(*m_context);
@@ -51,18 +53,18 @@ void SVGFilterRecordingContext::endContent(FilterData* filterData)
static void paintFilteredContent(GraphicsContext& context, FilterData* filterData)
{
DCHECK_EQ(filterData->m_state, FilterData::ReadyToPaint);
- DCHECK(filterData->filter->getSourceGraphic());
+ DCHECK(filterData->lastEffect->getFilter()->getSourceGraphic());
filterData->m_state = FilterData::PaintingFilter;
- FilterEffect* lastEffect = filterData->filter->lastEffect();
+ FilterEffect* lastEffect = filterData->lastEffect;
sk_sp<SkImageFilter> imageFilter = SkiaImageFilterBuilder::build(lastEffect, ColorSpaceDeviceRGB);
context.save();
// Clip drawing of filtered image to the minimum required paint rect.
context.clipRect(lastEffect->determineAbsolutePaintRect(lastEffect->absoluteBounds()));
- FloatRect boundaries = filterData->filter->filterRegion();
+ FloatRect boundaries = lastEffect->getFilter()->filterRegion();
context.beginLayer(1, SkXfermode::kSrcOver_Mode, &boundaries, ColorFilterNone, std::move(imageFilter));
context.endLayer();
context.restore();
@@ -97,7 +99,7 @@ GraphicsContext* SVGFilterPainter::prepareEffect(const LayoutObject& object, SVG
filter->getSourceGraphic()->setSourceRect(sourceRegion);
FilterData* filterData = FilterData::create();
- filterData->filter = filter;
+ filterData->lastEffect = filter->lastEffect();
filterData->nodeMap = nodeMap;
// TODO(pdr): Can this be moved out of painter?
@@ -128,7 +130,7 @@ void SVGFilterPainter::finishEffect(const LayoutObject& object, SVGFilterRecordi
if (LayoutObjectDrawingRecorder::useCachedDrawingIfPossible(context, object, DisplayItem::kSVGFilter))
return;
- FloatRect filterRegion = filterData ? filterData->filter->filterRegion() : FloatRect();
+ FloatRect filterRegion = filterData ? filterData->lastEffect->getFilter()->filterRegion() : FloatRect();
LayoutObjectDrawingRecorder recorder(context, object, DisplayItem::kSVGFilter, filterRegion);
if (filterData && filterData->m_state == FilterData::ReadyToPaint)
paintFilteredContent(context, filterData);

Powered by Google App Engine
This is Rietveld 408576698