Chromium Code Reviews| 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 30 matching lines...) Expand all Loading... | |
| 41 const LayerType* outer_viewport_scroll_layer; | 41 const LayerType* outer_viewport_scroll_layer; |
| 42 const LayerType* overscroll_elasticity_layer; | 42 const LayerType* overscroll_elasticity_layer; |
| 43 gfx::Vector2dF elastic_overscroll; | 43 gfx::Vector2dF elastic_overscroll; |
| 44 float page_scale_factor; | 44 float page_scale_factor; |
| 45 bool in_subtree_of_page_scale_layer; | 45 bool in_subtree_of_page_scale_layer; |
| 46 bool affected_by_inner_viewport_bounds_delta; | 46 bool affected_by_inner_viewport_bounds_delta; |
| 47 bool affected_by_outer_viewport_bounds_delta; | 47 bool affected_by_outer_viewport_bounds_delta; |
| 48 bool should_flatten; | 48 bool should_flatten; |
| 49 bool target_is_clipped; | 49 bool target_is_clipped; |
| 50 bool is_hidden; | 50 bool is_hidden; |
| 51 bool contributes_to_copy_request; | |
| 51 const gfx::Transform* device_transform; | 52 const gfx::Transform* device_transform; |
| 52 gfx::Vector2dF scroll_compensation_adjustment; | 53 gfx::Vector2dF scroll_compensation_adjustment; |
| 53 gfx::Transform compound_transform_since_render_target; | 54 gfx::Transform compound_transform_since_render_target; |
| 54 bool axis_align_since_render_target; | 55 bool axis_align_since_render_target; |
| 55 int sequence_number; | 56 int sequence_number; |
| 56 }; | 57 }; |
| 57 | 58 |
| 58 template <typename LayerType> | 59 template <typename LayerType> |
| 59 struct DataForRecursionFromChild { | 60 struct DataForRecursionFromChild { |
| 60 int num_copy_requests_in_subtree; | 61 int num_copy_requests_in_subtree; |
| (...skipping 506 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 567 data_for_children->compound_transform_since_render_target *= | 568 data_for_children->compound_transform_since_render_target *= |
| 568 layer->transform(); | 569 layer->transform(); |
| 569 return false; | 570 return false; |
| 570 } | 571 } |
| 571 | 572 |
| 572 EffectNode node; | 573 EffectNode node; |
| 573 node.owner_id = layer->id(); | 574 node.owner_id = layer->id(); |
| 574 node.data.opacity = layer->opacity(); | 575 node.data.opacity = layer->opacity(); |
| 575 node.data.screen_space_opacity = layer->opacity(); | 576 node.data.screen_space_opacity = layer->opacity(); |
| 576 node.data.has_render_surface = should_create_render_surface; | 577 node.data.has_render_surface = should_create_render_surface; |
| 578 // A node contributes to copy request when it is in the subtree of a layer | |
| 579 // with a copy request and is visible inside the copy request. | |
| 580 data_for_children->contributes_to_copy_request = | |
| 581 layer->HasCopyRequest() || | |
| 582 (data_from_ancestor.contributes_to_copy_request && | |
| 583 layer->opacity() != 0.f); | |
| 584 node.data.contributes_to_copy_request = | |
|
ajuma
2016/01/15 15:02:47
Does this value need to get updated on the composi
jaydasika
2016/01/19 20:02:49
Done.
| |
| 585 data_for_children->contributes_to_copy_request; | |
| 577 | 586 |
| 578 if (!is_root) { | 587 if (!is_root) { |
| 579 // The effect node's transform id is used only when we create a render | 588 // The effect node's transform id is used only when we create a render |
| 580 // surface. So, we can leave the default value when we don't create a render | 589 // surface. So, we can leave the default value when we don't create a render |
| 581 // surface. | 590 // surface. |
| 582 if (should_create_render_surface) { | 591 if (should_create_render_surface) { |
| 583 // In this case, we will create a transform node, so it's safe to use the | 592 // In this case, we will create a transform node, so it's safe to use the |
| 584 // next available id from the transform tree as this effect node's | 593 // next available id from the transform tree as this effect node's |
| 585 // transform id. | 594 // transform id. |
| 586 node.data.transform_id = | 595 node.data.transform_id = |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 630 layer->set_draw_blend_mode(SkXfermode::kSrcOver_Mode); | 639 layer->set_draw_blend_mode(SkXfermode::kSrcOver_Mode); |
| 631 } else { | 640 } else { |
| 632 layer->set_draw_blend_mode(layer->blend_mode()); | 641 layer->set_draw_blend_mode(layer->blend_mode()); |
| 633 } | 642 } |
| 634 | 643 |
| 635 bool created_transform_node = AddTransformNodeIfNeeded( | 644 bool created_transform_node = AddTransformNodeIfNeeded( |
| 636 data_from_parent, layer, created_render_surface, &data_for_children); | 645 data_from_parent, layer, created_render_surface, &data_for_children); |
| 637 AddClipNodeIfNeeded(data_from_parent, layer, created_render_surface, | 646 AddClipNodeIfNeeded(data_from_parent, layer, created_render_surface, |
| 638 created_transform_node, &data_for_children); | 647 created_transform_node, &data_for_children); |
| 639 | 648 |
| 640 data_for_children.is_hidden = | |
| 641 layer->hide_layer_and_subtree() || data_from_parent.is_hidden; | |
| 642 layer->set_is_hidden_from_property_trees(data_for_children.is_hidden); | |
| 643 | |
| 644 for (size_t i = 0; i < layer->children().size(); ++i) { | 649 for (size_t i = 0; i < layer->children().size(); ++i) { |
| 645 if (!layer->child_at(i)->scroll_parent()) { | 650 if (!layer->child_at(i)->scroll_parent()) { |
| 646 DataForRecursionFromChild<LayerType> data_from_child; | 651 DataForRecursionFromChild<LayerType> data_from_child; |
| 647 BuildPropertyTreesInternal(layer->child_at(i), data_for_children, | 652 BuildPropertyTreesInternal(layer->child_at(i), data_for_children, |
| 648 &data_from_child); | 653 &data_from_child); |
| 649 data_to_parent->Merge(data_from_child); | 654 data_to_parent->Merge(data_from_child); |
| 650 } else { | 655 } else { |
| 651 // The child should be included in its scroll parent's list of scroll | 656 // The child should be included in its scroll parent's list of scroll |
| 652 // children. | 657 // children. |
| 653 DCHECK(layer->child_at(i)->scroll_parent()->scroll_children()->count( | 658 DCHECK(layer->child_at(i)->scroll_parent()->scroll_children()->count( |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 725 data_for_recursion.outer_viewport_scroll_layer = outer_viewport_scroll_layer; | 730 data_for_recursion.outer_viewport_scroll_layer = outer_viewport_scroll_layer; |
| 726 data_for_recursion.overscroll_elasticity_layer = overscroll_elasticity_layer; | 731 data_for_recursion.overscroll_elasticity_layer = overscroll_elasticity_layer; |
| 727 data_for_recursion.elastic_overscroll = elastic_overscroll; | 732 data_for_recursion.elastic_overscroll = elastic_overscroll; |
| 728 data_for_recursion.page_scale_factor = page_scale_factor; | 733 data_for_recursion.page_scale_factor = page_scale_factor; |
| 729 data_for_recursion.in_subtree_of_page_scale_layer = false; | 734 data_for_recursion.in_subtree_of_page_scale_layer = false; |
| 730 data_for_recursion.affected_by_inner_viewport_bounds_delta = false; | 735 data_for_recursion.affected_by_inner_viewport_bounds_delta = false; |
| 731 data_for_recursion.affected_by_outer_viewport_bounds_delta = false; | 736 data_for_recursion.affected_by_outer_viewport_bounds_delta = false; |
| 732 data_for_recursion.should_flatten = false; | 737 data_for_recursion.should_flatten = false; |
| 733 data_for_recursion.target_is_clipped = false; | 738 data_for_recursion.target_is_clipped = false; |
| 734 data_for_recursion.is_hidden = false; | 739 data_for_recursion.is_hidden = false; |
| 740 data_for_recursion.contributes_to_copy_request = false; | |
| 735 data_for_recursion.device_transform = &device_transform; | 741 data_for_recursion.device_transform = &device_transform; |
| 736 | 742 |
| 737 data_for_recursion.transform_tree->clear(); | 743 data_for_recursion.transform_tree->clear(); |
| 738 data_for_recursion.clip_tree->clear(); | 744 data_for_recursion.clip_tree->clear(); |
| 739 data_for_recursion.effect_tree->clear(); | 745 data_for_recursion.effect_tree->clear(); |
| 740 data_for_recursion.compound_transform_since_render_target = gfx::Transform(); | 746 data_for_recursion.compound_transform_since_render_target = gfx::Transform(); |
| 741 data_for_recursion.axis_align_since_render_target = true; | 747 data_for_recursion.axis_align_since_render_target = true; |
| 742 data_for_recursion.sequence_number = property_trees->sequence_number; | 748 data_for_recursion.sequence_number = property_trees->sequence_number; |
| 743 data_for_recursion.transform_tree->set_device_scale_factor( | 749 data_for_recursion.transform_tree->set_device_scale_factor( |
| 744 device_scale_factor); | 750 device_scale_factor); |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 795 const gfx::Transform& device_transform, | 801 const gfx::Transform& device_transform, |
| 796 PropertyTrees* property_trees) { | 802 PropertyTrees* property_trees) { |
| 797 BuildPropertyTreesTopLevelInternal( | 803 BuildPropertyTreesTopLevelInternal( |
| 798 root_layer, page_scale_layer, inner_viewport_scroll_layer, | 804 root_layer, page_scale_layer, inner_viewport_scroll_layer, |
| 799 outer_viewport_scroll_layer, overscroll_elasticity_layer, | 805 outer_viewport_scroll_layer, overscroll_elasticity_layer, |
| 800 elastic_overscroll, page_scale_factor, device_scale_factor, viewport, | 806 elastic_overscroll, page_scale_factor, device_scale_factor, viewport, |
| 801 device_transform, property_trees); | 807 device_transform, property_trees); |
| 802 } | 808 } |
| 803 | 809 |
| 804 } // namespace cc | 810 } // namespace cc |
| OLD | NEW |