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

Unified Diff: third_party/WebKit/Source/core/style/FilterOperation.cpp

Issue 2393993004: Consolidate FilterOperation and FilterEffect mapRect implementations (Closed)
Patch Set: Fixup indent; make independent Created 4 years, 2 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/style/FilterOperation.cpp
diff --git a/third_party/WebKit/Source/core/style/FilterOperation.cpp b/third_party/WebKit/Source/core/style/FilterOperation.cpp
index 5490b437d763412b30ee5483def01df223aa3e8e..cfdc512a8a4c65b8802312355b611979d91fa992 100644
--- a/third_party/WebKit/Source/core/style/FilterOperation.cpp
+++ b/third_party/WebKit/Source/core/style/FilterOperation.cpp
@@ -27,23 +27,12 @@
#include "platform/LengthFunctions.h"
#include "platform/animation/AnimationUtilities.h"
+#include "platform/graphics/filters/FEDropShadow.h"
#include "platform/graphics/filters/FEGaussianBlur.h"
#include "platform/graphics/filters/FilterEffect.h"
-#include "platform/graphics/filters/SkiaImageFilterBuilder.h"
namespace blink {
-static inline FloatSize outsetSizeForBlur(float stdDeviation) {
- IntSize kernelSize = FEGaussianBlur::calculateUnscaledKernelSize(
- FloatPoint(stdDeviation, stdDeviation));
- FloatSize outset;
- // We take the half kernel size and multiply it with three, because we run box
- // blur three times.
- outset.setWidth(3.0f * kernelSize.width() * 0.5f);
- outset.setHeight(3.0f * kernelSize.height() * 0.5f);
- return outset;
-}
-
FilterOperation* FilterOperation::blend(const FilterOperation* from,
const FilterOperation* to,
double progress) {
@@ -145,13 +134,8 @@ FilterOperation* BasicComponentTransferFilterOperation::blend(
}
FloatRect BlurFilterOperation::mapRect(const FloatRect& rect) const {
- // Matches FEGaussianBlur::mapRect.
float stdDeviation = floatValueForLength(m_stdDeviation, 0);
- FloatSize outsetSize = outsetSizeForBlur(stdDeviation);
- FloatRect mappedRect = rect;
- mappedRect.inflateX(outsetSize.width());
- mappedRect.inflateY(outsetSize.height());
- return mappedRect;
+ return FEGaussianBlur::mapEffect(FloatSize(stdDeviation, stdDeviation), rect);
}
FilterOperation* BlurFilterOperation::blend(const FilterOperation* from,
@@ -167,13 +151,9 @@ FilterOperation* BlurFilterOperation::blend(const FilterOperation* from,
}
FloatRect DropShadowFilterOperation::mapRect(const FloatRect& rect) const {
- FloatSize outsetSize = outsetSizeForBlur(m_stdDeviation);
- FloatRect mappedRect = rect;
- mappedRect.inflateX(outsetSize.width());
- mappedRect.inflateY(outsetSize.height());
- mappedRect.moveBy(m_location);
- mappedRect.unite(rect);
- return mappedRect;
+ float stdDeviation = m_stdDeviation;
Stephen Chennney 2016/10/10 19:43:25 Why does this not do the floatValueForLength that
fs 2016/10/10 20:40:03 This caught me by surprise too, but it turns out t
+ return FEDropShadow::mapEffect(FloatSize(stdDeviation, stdDeviation),
+ FloatPoint(m_location), rect);
}
FilterOperation* DropShadowFilterOperation::blend(const FilterOperation* from,

Powered by Google App Engine
This is Rietveld 408576698