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

Unified Diff: third_party/WebKit/Source/core/svg/graphics/filters/SVGFilterBuilder.cpp

Issue 1543593002: Forward fill and stroke styles from 2d canvas to canvas filters (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Remove PaintFilterEffect::affectsTransparentPixels Created 4 years, 11 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/svg/graphics/filters/SVGFilterBuilder.cpp
diff --git a/third_party/WebKit/Source/core/svg/graphics/filters/SVGFilterBuilder.cpp b/third_party/WebKit/Source/core/svg/graphics/filters/SVGFilterBuilder.cpp
index 7df918e438004d69e4cbe9a5c4571fb3ab79c9bc..a58d52f5fcf054bf7bdbd8de69bb0f4cbde01cc4 100644
--- a/third_party/WebKit/Source/core/svg/graphics/filters/SVGFilterBuilder.cpp
+++ b/third_party/WebKit/Source/core/svg/graphics/filters/SVGFilterBuilder.cpp
@@ -27,11 +27,43 @@
#include "core/svg/SVGFilterElement.h"
#include "core/svg/SVGFilterPrimitiveStandardAttributes.h"
#include "platform/graphics/filters/Filter.h"
+#include "platform/graphics/filters/PaintFilterEffect.h"
#include "platform/graphics/filters/SourceAlpha.h"
#include "platform/graphics/filters/SourceGraphic.h"
namespace blink {
+namespace {
+
+class FilterInputKeywords {
+public:
+ static const AtomicString& sourceGraphic()
+ {
+ DEFINE_STATIC_LOCAL(const AtomicString, s_sourceGraphicName, ("SourceGraphic", AtomicString::ConstructFromLiteral));
+ return s_sourceGraphicName;
+ }
+
+ static const AtomicString& sourceAlpha()
+ {
+ DEFINE_STATIC_LOCAL(const AtomicString, s_sourceAlphaName, ("SourceAlpha", AtomicString::ConstructFromLiteral));
+ return s_sourceAlphaName;
+ }
+
+ static const AtomicString& fillPaint()
+ {
+ DEFINE_STATIC_LOCAL(const AtomicString, s_fillPaintName, ("FillPaint", AtomicString::ConstructFromLiteral));
+ return s_fillPaintName;
+ }
+
+ static const AtomicString& strokePaint()
+ {
+ DEFINE_STATIC_LOCAL(const AtomicString, s_strokePaintName, ("StrokePaint", AtomicString::ConstructFromLiteral));
+ return s_strokePaintName;
+ }
+};
+
+} // namespace
+
void SVGFilterGraphNodeMap::addBuiltinEffect(FilterEffect* effect)
{
m_effectReferences.add(effect, FilterEffectSet());
@@ -83,12 +115,18 @@ DEFINE_TRACE(SVGFilterGraphNodeMap)
SVGFilterBuilder::SVGFilterBuilder(
PassRefPtrWillBeRawPtr<FilterEffect> sourceGraphic,
- PassRefPtrWillBeRawPtr<SVGFilterGraphNodeMap> nodeMap)
+ PassRefPtrWillBeRawPtr<SVGFilterGraphNodeMap> nodeMap,
+ const SkPaint* fillPaint,
+ const SkPaint* strokePaint)
: m_nodeMap(nodeMap)
{
RefPtrWillBeRawPtr<FilterEffect> sourceGraphicRef = sourceGraphic;
- m_builtinEffects.add(SourceGraphic::effectName(), sourceGraphicRef);
- m_builtinEffects.add(SourceAlpha::effectName(), SourceAlpha::create(sourceGraphicRef.get()));
+ m_builtinEffects.add(FilterInputKeywords::sourceGraphic(), sourceGraphicRef);
+ m_builtinEffects.add(FilterInputKeywords::sourceAlpha(), SourceAlpha::create(sourceGraphicRef.get()));
+ if (fillPaint)
+ m_builtinEffects.add(FilterInputKeywords::fillPaint(), PaintFilterEffect::create(sourceGraphicRef->filter(), *fillPaint));
+ if (strokePaint)
+ m_builtinEffects.add(FilterInputKeywords::strokePaint(), PaintFilterEffect::create(sourceGraphicRef->filter(), *strokePaint));
addBuiltinEffects();
}
@@ -172,7 +210,7 @@ FilterEffect* SVGFilterBuilder::getEffectById(const AtomicString& id) const
if (m_lastEffect)
return m_lastEffect.get();
- return m_builtinEffects.get(SourceGraphic::effectName());
+ return m_builtinEffects.get(FilterInputKeywords::sourceGraphic());
}
} // namespace blink

Powered by Google App Engine
This is Rietveld 408576698