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

Unified Diff: third_party/WebKit/Source/platform/graphics/filters/FilterEffect.cpp

Issue 1855303002: Replace filter outsets with bounds mapping in Blink. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: additional unit tests for FilterOperations::mapRect Created 4 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: third_party/WebKit/Source/platform/graphics/filters/FilterEffect.cpp
diff --git a/third_party/WebKit/Source/platform/graphics/filters/FilterEffect.cpp b/third_party/WebKit/Source/platform/graphics/filters/FilterEffect.cpp
index 3c4448004c871e75ab4517c96f11987c6f3e9f5c..a533ca05316c0627b22fca8297fa4ab8bb4b2840 100644
--- a/third_party/WebKit/Source/platform/graphics/filters/FilterEffect.cpp
+++ b/third_party/WebKit/Source/platform/graphics/filters/FilterEffect.cpp
@@ -85,16 +85,20 @@ FloatRect FilterEffect::determineAbsolutePaintRect(const FloatRect& originalRequ
return inputUnion;
}
-FloatRect FilterEffect::mapRectRecursive(const FloatRect& rect) const
+FloatRect FilterEffect::mapRectRecursive(const FloatRect& rect, bool forward) const
{
- FloatRect result;
- if (m_inputEffects.size() > 0) {
- result = m_inputEffects.at(0)->mapRectRecursive(rect);
+ auto mapInputs = [this](const FloatRect& rect, bool forward)
+ {
+ if (!m_inputEffects.size())
+ return rect;
+ FloatRect result = m_inputEffects.at(0)->mapRectRecursive(rect, forward);
for (unsigned i = 1; i < m_inputEffects.size(); ++i)
- result.unite(m_inputEffects.at(i)->mapRectRecursive(rect));
- } else
- result = rect;
- return mapRect(result);
+ result.unite(m_inputEffects.at(i)->mapRectRecursive(rect, forward));
+ return result;
+ };
+ return forward
+ ? mapRect(mapInputs(rect, forward), forward)
+ : mapInputs(mapRect(rect, forward), forward);
}
FilterEffect* FilterEffect::inputEffect(unsigned number) const

Powered by Google App Engine
This is Rietveld 408576698