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

Unified Diff: cc/trees/property_tree.cc

Issue 1947683007: cc : Add subtree is hidden bool to effect tree (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 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
« no previous file with comments | « cc/trees/property_tree.h ('k') | cc/trees/property_tree_builder.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/trees/property_tree.cc
diff --git a/cc/trees/property_tree.cc b/cc/trees/property_tree.cc
index b6be2aa9ed57a3440825f5ef961e82866a35d9e3..49c4ed6a330b0d554a4c6e3c54074e971eca404c 100644
--- a/cc/trees/property_tree.cc
+++ b/cc/trees/property_tree.cc
@@ -453,6 +453,7 @@ EffectNodeData::EffectNodeData()
hidden_by_backface_visibility(false),
double_sided(false),
is_drawn(true),
+ subtree_hidden(false),
has_animated_opacity(false),
effect_changed(false),
num_copy_requests_in_subtree(0),
@@ -470,6 +471,7 @@ bool EffectNodeData::operator==(const EffectNodeData& other) const {
has_background_filters == other.has_background_filters &&
hidden_by_backface_visibility == other.hidden_by_backface_visibility &&
double_sided == other.double_sided && is_drawn == other.is_drawn &&
+ subtree_hidden == other.subtree_hidden &&
has_animated_opacity == other.has_animated_opacity &&
effect_changed == other.effect_changed &&
num_copy_requests_in_subtree == other.num_copy_requests_in_subtree &&
@@ -488,6 +490,7 @@ void EffectNodeData::ToProtobuf(proto::TreeNode* proto) const {
data->set_hidden_by_backface_visibility(hidden_by_backface_visibility);
data->set_double_sided(double_sided);
data->set_is_drawn(is_drawn);
+ data->set_subtree_hidden(subtree_hidden);
data->set_has_animated_opacity(has_animated_opacity);
data->set_effect_changed(effect_changed);
data->set_num_copy_requests_in_subtree(num_copy_requests_in_subtree);
@@ -508,6 +511,7 @@ void EffectNodeData::FromProtobuf(const proto::TreeNode& proto) {
hidden_by_backface_visibility = data.hidden_by_backface_visibility();
double_sided = data.double_sided();
is_drawn = data.is_drawn();
+ subtree_hidden = data.subtree_hidden();
has_animated_opacity = data.has_animated_opacity();
effect_changed = data.effect_changed();
num_copy_requests_in_subtree = data.num_copy_requests_in_subtree();
@@ -1221,8 +1225,12 @@ void TransformTree::FromProtobuf(const proto::PropertyTree& proto) {
}
}
+float EffectTree::EffectiveOpacity(const EffectNode* node) const {
+ return node->data.subtree_hidden ? 0.f : node->data.opacity;
+}
+
void EffectTree::UpdateOpacities(EffectNode* node, EffectNode* parent_node) {
- node->data.screen_space_opacity = node->data.opacity;
+ node->data.screen_space_opacity = EffectiveOpacity(node);
if (parent_node)
node->data.screen_space_opacity *= parent_node->data.screen_space_opacity;
@@ -1238,7 +1246,7 @@ void EffectTree::UpdateIsDrawn(EffectNode* node, EffectNode* parent_node) {
// are drawn if their parent is drawn irrespective of their opacity.
if (node->data.has_copy_request)
node->data.is_drawn = true;
- else if (node->data.opacity == 0.f &&
+ else if (EffectiveOpacity(node) == 0.f &&
(!node->data.has_animated_opacity || property_trees()->is_active) &&
!node->data.has_background_filters)
node->data.is_drawn = false;
« no previous file with comments | « cc/trees/property_tree.h ('k') | cc/trees/property_tree_builder.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698