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

Unified Diff: Source/core/rendering/svg/RenderSVGResourceFilterPrimitive.cpp

Issue 14652016: Implement filter primitive subregion for reference CSS filters. This required refactoring determin… (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 7 years, 8 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: Source/core/rendering/svg/RenderSVGResourceFilterPrimitive.cpp
diff --git a/Source/core/rendering/svg/RenderSVGResourceFilterPrimitive.cpp b/Source/core/rendering/svg/RenderSVGResourceFilterPrimitive.cpp
index 7f985b2ff5b027919e66bd50ab570d39a48cb7dc..03514ae480dbc959813ed5ca27484bcff7de33bc 100644
--- a/Source/core/rendering/svg/RenderSVGResourceFilterPrimitive.cpp
+++ b/Source/core/rendering/svg/RenderSVGResourceFilterPrimitive.cpp
@@ -62,49 +62,6 @@ void RenderSVGResourceFilterPrimitive::styleDidChange(StyleDifference diff, cons
}
}
-FloatRect RenderSVGResourceFilterPrimitive::determineFilterPrimitiveSubregion(FilterEffect* effect)
-{
- SVGFilter* filter = static_cast<SVGFilter*>(effect->filter());
- ASSERT(filter);
-
- // FETile, FETurbulence, FEFlood don't have input effects, take the filter region as unite rect.
- FloatRect subregion;
- if (unsigned numberOfInputEffects = effect->inputEffects().size()) {
- subregion = determineFilterPrimitiveSubregion(effect->inputEffect(0));
- for (unsigned i = 1; i < numberOfInputEffects; ++i)
- subregion.unite(determineFilterPrimitiveSubregion(effect->inputEffect(i)));
- } else
- subregion = filter->filterRegionInUserSpace();
-
- // After calling determineFilterPrimitiveSubregion on the target effect, reset the subregion again for <feTile>.
- if (effect->filterEffectType() == FilterEffectTypeTile)
- subregion = filter->filterRegionInUserSpace();
-
- FloatRect effectBoundaries = effect->effectBoundaries();
- if (effect->hasX())
- subregion.setX(effectBoundaries.x());
- if (effect->hasY())
- subregion.setY(effectBoundaries.y());
- if (effect->hasWidth())
- subregion.setWidth(effectBoundaries.width());
- if (effect->hasHeight())
- subregion.setHeight(effectBoundaries.height());
-
- effect->setFilterPrimitiveSubregion(subregion);
-
- FloatRect absoluteSubregion = filter->absoluteTransform().mapRect(subregion);
- FloatSize filterResolution = filter->filterResolution();
- absoluteSubregion.scale(filterResolution.width(), filterResolution.height());
-
- // Clip every filter effect to the filter region.
- FloatRect absoluteScaledFilterRegion = filter->filterRegion();
- absoluteScaledFilterRegion.scale(filterResolution.width(), filterResolution.height());
- absoluteSubregion.intersect(absoluteScaledFilterRegion);
-
- effect->setMaxEffectRect(absoluteSubregion);
- return subregion;
-}
-
} // namespace WebCore
#endif // ENABLE(SVG)

Powered by Google App Engine
This is Rietveld 408576698