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

Unified Diff: Source/core/platform/graphics/filters/FEGaussianBlur.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: Fix test failures: ReferenceFilterOperation should ref the Filter which owns its FilterEffects Created 7 years, 7 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/platform/graphics/filters/FEGaussianBlur.cpp
diff --git a/Source/core/platform/graphics/filters/FEGaussianBlur.cpp b/Source/core/platform/graphics/filters/FEGaussianBlur.cpp
index d73fc9b4b4d892e1c4cd8be4960c12872acb06c3..0cd65a185f37db955074c2a91733f7415235f2bc 100644
--- a/Source/core/platform/graphics/filters/FEGaussianBlur.cpp
+++ b/Source/core/platform/graphics/filters/FEGaussianBlur.cpp
@@ -260,15 +260,7 @@ void FEGaussianBlur::calculateKernelSize(Filter* filter, unsigned& kernelSizeX,
void FEGaussianBlur::determineAbsolutePaintRect()
{
- unsigned kernelSizeX = 0;
- unsigned kernelSizeY = 0;
- calculateKernelSize(filter(), kernelSizeX, kernelSizeY, m_stdX, m_stdY);
-
- FloatRect absolutePaintRect = inputEffect(0)->absolutePaintRect();
-
- // We take the half kernel size and multiply it with three, because we run box blur three times.
- absolutePaintRect.inflateX(3 * kernelSizeX * 0.5f);
- absolutePaintRect.inflateY(3 * kernelSizeY * 0.5f);
+ FloatRect absolutePaintRect = mapRect(inputEffect(0)->absolutePaintRect());
if (clipsToBounds())
absolutePaintRect.intersect(maxEffectRect());
@@ -278,6 +270,19 @@ void FEGaussianBlur::determineAbsolutePaintRect()
setAbsolutePaintRect(enclosingIntRect(absolutePaintRect));
}
+FloatRect FEGaussianBlur::mapRect(const FloatRect& rect, bool)
+{
+ FloatRect result = rect;
+ unsigned kernelSizeX = 0;
+ unsigned kernelSizeY = 0;
+ calculateKernelSize(filter(), kernelSizeX, kernelSizeY, m_stdX, m_stdY);
+
+ // We take the half kernel size and multiply it with three, because we run box blur three times.
+ result.inflateX(3 * kernelSizeX * 0.5f);
+ result.inflateY(3 * kernelSizeY * 0.5f);
+ return result;
+}
+
void FEGaussianBlur::applySoftware()
{
FilterEffect* in = inputEffect(0);
« no previous file with comments | « Source/core/platform/graphics/filters/FEGaussianBlur.h ('k') | Source/core/platform/graphics/filters/FEMorphology.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698