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

Unified Diff: sky/engine/core/rendering/RenderBox.cpp

Issue 963253002: Move FilterEffectRenderer out of RenderLayer into RenderBox. (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 10 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
« no previous file with comments | « sky/engine/core/rendering/RenderBox.h ('k') | sky/engine/core/rendering/RenderLayer.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: sky/engine/core/rendering/RenderBox.cpp
diff --git a/sky/engine/core/rendering/RenderBox.cpp b/sky/engine/core/rendering/RenderBox.cpp
index deb06c148bc60126e927b9cbccdf112a0b33a137..4bea821698afbbdcc6b677dd3da8ee44ebbe6cfa 100644
--- a/sky/engine/core/rendering/RenderBox.cpp
+++ b/sky/engine/core/rendering/RenderBox.cpp
@@ -37,7 +37,6 @@
#include "sky/engine/core/html/HTMLElement.h"
#include "sky/engine/core/page/EventHandler.h"
#include "sky/engine/core/page/Page.h"
-#include "sky/engine/core/rendering/FilterEffectRenderer.h"
#include "sky/engine/core/rendering/HitTestResult.h"
#include "sky/engine/core/rendering/HitTestingTransformState.h"
#include "sky/engine/core/rendering/PaintInfo.h"
@@ -172,6 +171,22 @@ void RenderBox::updateFromStyle()
}
setHasTransform(styleToUse->hasTransformRelatedProperty());
+ updateFilters();
+}
+
+void RenderBox::updateFilters()
+{
+ if (!style()->hasFilter()) {
+ m_filterRenderer = nullptr;
+ return;
+ }
+
+ m_filterRenderer = FilterEffectRenderer::create();
+
+ // If the filter fails to build, remove it from the layer. It will still attempt to
+ // go through regular processing (e.g. compositing), but never apply anything.
+ if (!m_filterRenderer->build(this, style()->filter()))
+ m_filterRenderer = nullptr;
}
void RenderBox::layout()
@@ -856,13 +871,13 @@ void RenderBox::paintLayerContents(GraphicsContext* context, const LayerPainting
layer()->clipToRect(localPaintingInfo, context, contentRect);
- FilterEffectRendererHelper filterPainter(layer()->filterRenderer() && hasFilter());
+ FilterEffectRendererHelper filterPainter(m_filterRenderer && style()->hasFilter());
if (filterPainter.haveFilterEffect()) {
if (!rootRelativeBoundsComputed)
rootRelativeBounds = layer()->physicalBoundingBoxIncludingReflectionAndStackingChildren(paintingInfo.rootLayer, offsetFromRoot);
- if (filterPainter.prepareFilterEffect(layer(), rootRelativeBounds, paintingInfo.paintDirtyRect))
+ if (filterPainter.prepareFilterEffect(m_filterRenderer.get(), rootRelativeBounds, paintingInfo.paintDirtyRect))
context = filterPainter.beginFilterEffect(context);
}
« no previous file with comments | « sky/engine/core/rendering/RenderBox.h ('k') | sky/engine/core/rendering/RenderLayer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698