OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "cc/trees/property_tree_builder.h" | 5 #include "cc/trees/property_tree_builder.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include <map> | 9 #include <map> |
10 #include <set> | 10 #include <set> |
(...skipping 594 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
605 return false; | 605 return false; |
606 } | 606 } |
607 | 607 |
608 EffectNode node; | 608 EffectNode node; |
609 node.owner_id = layer->id(); | 609 node.owner_id = layer->id(); |
610 node.data.opacity = layer->EffectiveOpacity(); | 610 node.data.opacity = layer->EffectiveOpacity(); |
611 node.data.has_render_surface = should_create_render_surface; | 611 node.data.has_render_surface = should_create_render_surface; |
612 node.data.has_copy_request = layer->HasCopyRequest(); | 612 node.data.has_copy_request = layer->HasCopyRequest(); |
613 node.data.has_background_filters = !layer->background_filters().IsEmpty(); | 613 node.data.has_background_filters = !layer->background_filters().IsEmpty(); |
614 node.data.has_animated_opacity = has_animated_opacity; | 614 node.data.has_animated_opacity = has_animated_opacity; |
| 615 node.data.double_sided = layer->double_sided(); |
615 | 616 |
616 if (!is_root) { | 617 if (!is_root) { |
617 // The effect node's transform id is used only when we create a render | 618 // The effect node's transform id is used only when we create a render |
618 // surface. So, we can leave the default value when we don't create a render | 619 // surface. So, we can leave the default value when we don't create a render |
619 // surface. | 620 // surface. |
620 if (should_create_render_surface) { | 621 if (should_create_render_surface) { |
621 // In this case, we will create a transform node, so it's safe to use the | 622 // In this case, we will create a transform node, so it's safe to use the |
622 // next available id from the transform tree as this effect node's | 623 // next available id from the transform tree as this effect node's |
623 // transform id. | 624 // transform id. |
624 node.data.transform_id = | 625 node.data.transform_id = |
625 data_from_ancestor.transform_tree->next_available_id(); | 626 data_from_ancestor.transform_tree->next_available_id(); |
626 } | 627 } |
627 node.data.clip_id = data_from_ancestor.clip_tree_parent; | 628 node.data.clip_id = data_from_ancestor.clip_tree_parent; |
| 629 EffectNode* parent_node = data_for_children->effect_tree->Node(parent_id); |
| 630 node.data.node_or_ancestor_has_background_filters = |
| 631 parent_node->data.node_or_ancestor_has_background_filters || |
| 632 node.data.has_background_filters; |
| 633 node.data.to_screen_opacity_is_animated = |
| 634 parent_node->data.to_screen_opacity_is_animated || has_animated_opacity; |
628 } else { | 635 } else { |
629 // Root render surface acts the unbounded and untransformed to draw content | 636 // Root render surface acts the unbounded and untransformed to draw content |
630 // into. Transform node created from root layer (includes device scale | 637 // into. Transform node created from root layer (includes device scale |
631 // factor) and clip node created from root layer (include viewports) applies | 638 // factor) and clip node created from root layer (include viewports) applies |
632 // to root render surface's content, but not root render surface itself. | 639 // to root render surface's content, but not root render surface itself. |
633 node.data.transform_id = kRootPropertyTreeNodeId; | 640 node.data.transform_id = kRootPropertyTreeNodeId; |
634 node.data.clip_id = kRootPropertyTreeNodeId; | 641 node.data.clip_id = kRootPropertyTreeNodeId; |
| 642 node.data.node_or_ancestor_has_background_filters = |
| 643 node.data.has_background_filters; |
| 644 node.data.to_screen_opacity_is_animated = has_animated_opacity; |
635 } | 645 } |
636 node.data.target_id = | 646 node.data.target_id = |
637 should_create_render_surface | 647 should_create_render_surface |
638 ? data_from_ancestor.effect_tree->next_available_id() | 648 ? data_from_ancestor.effect_tree->next_available_id() |
639 : data_for_children->render_target; | 649 : data_for_children->render_target; |
640 data_for_children->effect_tree_parent = | 650 data_for_children->effect_tree_parent = |
641 data_for_children->effect_tree->Insert(node, parent_id); | 651 data_for_children->effect_tree->Insert(node, parent_id); |
642 layer->SetEffectTreeIndex(data_for_children->effect_tree_parent); | 652 layer->SetEffectTreeIndex(data_for_children->effect_tree_parent); |
643 if (should_create_render_surface) { | 653 if (should_create_render_surface) { |
644 data_for_children->compound_transform_since_render_target = | 654 data_for_children->compound_transform_since_render_target = |
(...skipping 354 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
999 if (SkColorGetA(color) != 255) | 1009 if (SkColorGetA(color) != 255) |
1000 color = SkColorSetA(color, 255); | 1010 color = SkColorSetA(color, 255); |
1001 BuildPropertyTreesTopLevelInternal( | 1011 BuildPropertyTreesTopLevelInternal( |
1002 root_layer, page_scale_layer, inner_viewport_scroll_layer, | 1012 root_layer, page_scale_layer, inner_viewport_scroll_layer, |
1003 outer_viewport_scroll_layer, overscroll_elasticity_layer, | 1013 outer_viewport_scroll_layer, overscroll_elasticity_layer, |
1004 elastic_overscroll, page_scale_factor, device_scale_factor, viewport, | 1014 elastic_overscroll, page_scale_factor, device_scale_factor, viewport, |
1005 device_transform, property_trees, color); | 1015 device_transform, property_trees, color); |
1006 } | 1016 } |
1007 | 1017 |
1008 } // namespace cc | 1018 } // namespace cc |
OLD | NEW |