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 300 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
311 | 311 |
312 data_for_children->transform_tree->Insert(TransformNode(), parent_index); | 312 data_for_children->transform_tree->Insert(TransformNode(), parent_index); |
313 | 313 |
314 TransformNode* node = data_for_children->transform_tree->back(); | 314 TransformNode* node = data_for_children->transform_tree->back(); |
315 layer->SetTransformTreeIndex(node->id); | 315 layer->SetTransformTreeIndex(node->id); |
316 if (layer->mask_layer()) | 316 if (layer->mask_layer()) |
317 layer->mask_layer()->SetTransformTreeIndex(node->id); | 317 layer->mask_layer()->SetTransformTreeIndex(node->id); |
318 | 318 |
319 node->data.scrolls = is_scrollable; | 319 node->data.scrolls = is_scrollable; |
320 node->data.flattens_inherited_transform = data_for_children->should_flatten; | 320 node->data.flattens_inherited_transform = data_for_children->should_flatten; |
321 | |
322 if (layer == data_from_ancestor.page_scale_layer) | |
323 data_for_children->in_subtree_of_page_scale_layer = true; | |
324 node->data.in_subtree_of_page_scale_layer = | 321 node->data.in_subtree_of_page_scale_layer = |
325 data_for_children->in_subtree_of_page_scale_layer; | 322 data_for_children->in_subtree_of_page_scale_layer; |
326 | 323 |
327 // Surfaces inherently flatten transforms. | 324 // Surfaces inherently flatten transforms. |
328 data_for_children->should_flatten = | 325 data_for_children->should_flatten = |
329 layer->should_flatten_transform() || has_surface; | 326 layer->should_flatten_transform() || has_surface; |
330 DCHECK_GT(data_from_ancestor.effect_tree->size(), 0u); | 327 DCHECK_GT(data_from_ancestor.effect_tree->size(), 0u); |
331 | 328 |
332 node->data.target_id = | 329 node->data.target_id = |
333 data_for_children->effect_tree->Node(data_from_ancestor.render_target) | 330 data_for_children->effect_tree->Node(data_from_ancestor.render_target) |
(...skipping 290 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
624 data_for_children->axis_align_since_render_target = true; | 621 data_for_children->axis_align_since_render_target = true; |
625 } | 622 } |
626 return should_create_render_surface; | 623 return should_create_render_surface; |
627 } | 624 } |
628 | 625 |
629 template <typename LayerType> | 626 template <typename LayerType> |
630 void BuildPropertyTreesInternal( | 627 void BuildPropertyTreesInternal( |
631 LayerType* layer, | 628 LayerType* layer, |
632 const DataForRecursion<LayerType>& data_from_parent) { | 629 const DataForRecursion<LayerType>& data_from_parent) { |
633 layer->set_property_tree_sequence_number(data_from_parent.sequence_number); | 630 layer->set_property_tree_sequence_number(data_from_parent.sequence_number); |
634 if (layer->mask_layer()) | |
635 layer->mask_layer()->set_property_tree_sequence_number( | |
636 data_from_parent.sequence_number); | |
637 | |
638 DataForRecursion<LayerType> data_for_children(data_from_parent); | 631 DataForRecursion<LayerType> data_for_children(data_from_parent); |
639 | 632 |
640 bool created_render_surface = | 633 bool created_render_surface = |
641 AddEffectNodeIfNeeded(data_from_parent, layer, &data_for_children); | 634 AddEffectNodeIfNeeded(data_from_parent, layer, &data_for_children); |
642 | 635 |
643 if (created_render_surface) { | 636 if (created_render_surface) { |
644 data_for_children.render_target = data_for_children.effect_tree_parent; | 637 data_for_children.render_target = data_for_children.effect_tree_parent; |
645 layer->set_draw_blend_mode(SkXfermode::kSrcOver_Mode); | 638 layer->set_draw_blend_mode(SkXfermode::kSrcOver_Mode); |
646 } else { | 639 } else { |
647 layer->set_draw_blend_mode(layer->blend_mode()); | 640 layer->set_draw_blend_mode(layer->blend_mode()); |
648 } | 641 } |
649 | 642 |
650 bool created_transform_node = AddTransformNodeIfNeeded( | 643 bool created_transform_node = AddTransformNodeIfNeeded( |
651 data_from_parent, layer, created_render_surface, &data_for_children); | 644 data_from_parent, layer, created_render_surface, &data_for_children); |
652 AddClipNodeIfNeeded(data_from_parent, layer, created_render_surface, | 645 AddClipNodeIfNeeded(data_from_parent, layer, created_render_surface, |
653 created_transform_node, &data_for_children); | 646 created_transform_node, &data_for_children); |
654 | 647 |
| 648 if (layer == data_from_parent.page_scale_layer) |
| 649 data_for_children.in_subtree_of_page_scale_layer = true; |
| 650 |
655 data_for_children.is_hidden = | 651 data_for_children.is_hidden = |
656 layer->hide_layer_and_subtree() || data_from_parent.is_hidden; | 652 layer->hide_layer_and_subtree() || data_from_parent.is_hidden; |
657 layer->set_is_hidden_from_property_trees(data_for_children.is_hidden); | 653 layer->set_is_hidden_from_property_trees(data_for_children.is_hidden); |
658 | 654 |
659 for (size_t i = 0; i < layer->children().size(); ++i) { | 655 for (size_t i = 0; i < layer->children().size(); ++i) { |
660 if (!layer->child_at(i)->scroll_parent()) { | 656 if (!layer->child_at(i)->scroll_parent()) { |
661 BuildPropertyTreesInternal(layer->child_at(i), data_for_children); | 657 BuildPropertyTreesInternal(layer->child_at(i), data_for_children); |
662 } else { | 658 } else { |
663 // The child should be included in its scroll parent's list of scroll | 659 // The child should be included in its scroll parent's list of scroll |
664 // children. | 660 // children. |
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
789 const gfx::Transform& device_transform, | 785 const gfx::Transform& device_transform, |
790 PropertyTrees* property_trees) { | 786 PropertyTrees* property_trees) { |
791 BuildPropertyTreesTopLevelInternal( | 787 BuildPropertyTreesTopLevelInternal( |
792 root_layer, page_scale_layer, inner_viewport_scroll_layer, | 788 root_layer, page_scale_layer, inner_viewport_scroll_layer, |
793 outer_viewport_scroll_layer, overscroll_elasticity_layer, | 789 outer_viewport_scroll_layer, overscroll_elasticity_layer, |
794 elastic_overscroll, page_scale_factor, device_scale_factor, viewport, | 790 elastic_overscroll, page_scale_factor, device_scale_factor, viewport, |
795 device_transform, property_trees); | 791 device_transform, property_trees); |
796 } | 792 } |
797 | 793 |
798 } // namespace cc | 794 } // namespace cc |
OLD | NEW |