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

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

Issue 2341923002: Harmonize FilterEffect::mapRect and mapPaintRect (Closed)
Patch Set: Rebase 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/platform/graphics/filters/FEGaussianBlur.cpp
diff --git a/third_party/WebKit/Source/platform/graphics/filters/FEGaussianBlur.cpp b/third_party/WebKit/Source/platform/graphics/filters/FEGaussianBlur.cpp
index 0f2c446470975aba4303d1d3bcc246db1051173a..0fc4057d9c35ea352a4e4ddfb9ea5e299b29cf6c 100644
--- a/third_party/WebKit/Source/platform/graphics/filters/FEGaussianBlur.cpp
+++ b/third_party/WebKit/Source/platform/graphics/filters/FEGaussianBlur.cpp
@@ -76,35 +76,17 @@ IntSize FEGaussianBlur::calculateKernelSize(const Filter* filter, const FloatPoi
return calculateUnscaledKernelSize(stdError);
}
-FloatRect FEGaussianBlur::mapRect(const FloatRect& rect, bool) const
+FloatRect FEGaussianBlur::mapEffect(const FloatRect& rect) const
{
- FloatRect result = rect;
IntSize kernelSize = calculateKernelSize(getFilter(), FloatPoint(m_stdX, m_stdY));
// We take the half kernel size and multiply it with three, because we run box blur three times.
+ FloatRect result = rect;
result.inflateX(3.0f * kernelSize.width() * 0.5f);
result.inflateY(3.0f * kernelSize.height() * 0.5f);
return result;
}
-FloatRect FEGaussianBlur::determineAbsolutePaintRect(const FloatRect& originalRequestedRect) const
-{
- FloatRect requestedRect = originalRequestedRect;
- if (clipsToBounds())
- requestedRect.intersect(absoluteBounds());
-
- FilterEffect* input = inputEffect(0);
- FloatRect inputRect = input->determineAbsolutePaintRect(mapRect(requestedRect, false));
- FloatRect outputRect = mapRect(inputRect, true);
- outputRect.intersect(requestedRect);
-
- // Blur needs space for both input and output pixels in the paint area.
- // Input is also clipped to subregion.
- if (clipsToBounds())
- inputRect.intersect(absoluteBounds());
- return outputRect;
-}
-
sk_sp<SkImageFilter> FEGaussianBlur::createImageFilter()
{
sk_sp<SkImageFilter> input(SkiaImageFilterBuilder::build(inputEffect(0), operatingColorSpace()));

Powered by Google App Engine
This is Rietveld 408576698