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

Unified Diff: cc/trees/property_tree_builder.cc

Issue 2423483003: cc: Make visible rect computation aware of pixel-moving filters (Closed)
Patch Set: It's 2017 -- update copyright for new files Created 3 years, 11 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: cc/trees/property_tree_builder.cc
diff --git a/cc/trees/property_tree_builder.cc b/cc/trees/property_tree_builder.cc
index 23ce510aaf89537c18df9f1258d78a1784d4f521..f66fcda90e52146e4886f811b9225547aee64cf8 100644
--- a/cc/trees/property_tree_builder.cc
+++ b/cc/trees/property_tree_builder.cc
@@ -9,6 +9,7 @@
#include <map>
#include <set>
+#include "base/memory/ptr_util.h"
#include "cc/base/math_util.h"
#include "cc/layers/layer.h"
#include "cc/layers/layer_impl.h"
@@ -225,6 +226,14 @@ static size_t NumUnclippedDescendants(LayerImpl* layer) {
return layer->test_properties()->num_unclipped_descendants;
}
+static inline const FilterOperations& Filters(Layer* layer) {
+ return layer->filters();
+}
+
+static inline const FilterOperations& Filters(LayerImpl* layer) {
+ return layer->test_properties()->filters;
+}
+
static Layer* MaskLayer(Layer* layer) {
return layer->mask_layer();
}
@@ -437,10 +446,15 @@ void AddClipNodeIfNeeded(const DataForRecursion<LayerType>& data_from_ancestor,
node.layer_clipping_uses_only_local_clip = false;
}
- if (layer_clips_subtree)
+ if (layer_clips_subtree) {
node.clip_type = ClipNode::ClipType::APPLIES_LOCAL_CLIP;
- else
+ } else if (Filters(layer).HasFilterThatMovesPixels()) {
+ node.clip_type = ClipNode::ClipType::EXPANDS_CLIP;
+ node.clip_expander =
+ base::MakeUnique<ClipExpander>(layer->effect_tree_index());
+ } else {
node.clip_type = ClipNode::ClipType::NONE;
+ }
node.resets_clip = has_unclipped_surface;
node.layers_are_clipped = layers_are_clipped;
node.layers_are_clipped_when_surfaces_disabled =
@@ -834,10 +848,6 @@ static inline SkBlendMode BlendMode(LayerImpl* layer) {
return layer->test_properties()->blend_mode;
}
-static inline const FilterOperations& Filters(Layer* layer) {
- return layer->filters();
-}
-
static inline const gfx::PointF FiltersOrigin(Layer* layer) {
return layer->filters_origin();
}
@@ -846,10 +856,6 @@ static inline const gfx::PointF FiltersOrigin(LayerImpl* layer) {
return layer->test_properties()->filters_origin;
}
-static inline const FilterOperations& Filters(LayerImpl* layer) {
- return layer->test_properties()->filters;
-}
-
static inline const FilterOperations& BackgroundFilters(Layer* layer) {
return layer->background_filters();
}

Powered by Google App Engine
This is Rietveld 408576698