| 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/draw_property_utils.h" | 5 #include "cc/trees/draw_property_utils.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| 11 #include "cc/base/math_util.h" | 11 #include "cc/base/math_util.h" |
| 12 #include "cc/layers/draw_properties.h" | 12 #include "cc/layers/draw_properties.h" |
| 13 #include "cc/layers/layer.h" | 13 #include "cc/layers/layer.h" |
| 14 #include "cc/layers/layer_impl.h" | 14 #include "cc/layers/layer_impl.h" |
| 15 #include "cc/trees/clip_node.h" | 15 #include "cc/trees/clip_node.h" |
| 16 #include "cc/trees/effect_node.h" | 16 #include "cc/trees/effect_node.h" |
| 17 #include "cc/trees/layer_tree_impl.h" | 17 #include "cc/trees/layer_tree_impl.h" |
| 18 #include "cc/trees/property_tree.h" | 18 #include "cc/trees/property_tree.h" |
| 19 #include "cc/trees/property_tree_builder.h" | 19 #include "cc/trees/property_tree_builder.h" |
| 20 #include "cc/trees/scroll_node.h" |
| 20 #include "cc/trees/transform_node.h" | 21 #include "cc/trees/transform_node.h" |
| 21 #include "ui/gfx/geometry/rect_conversions.h" | 22 #include "ui/gfx/geometry/rect_conversions.h" |
| 22 | 23 |
| 23 namespace cc { | 24 namespace cc { |
| 24 | 25 |
| 25 namespace draw_property_utils { | 26 namespace draw_property_utils { |
| 26 | 27 |
| 27 namespace { | 28 namespace { |
| 28 | 29 |
| 29 static bool IsRootLayer(const Layer* layer) { | 30 static bool IsRootLayer(const Layer* layer) { |
| (...skipping 872 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 902 | 903 |
| 903 clip_node->combined_clip_in_target_space = gfx::IntersectRects( | 904 clip_node->combined_clip_in_target_space = gfx::IntersectRects( |
| 904 parent_combined_clip_in_target_space, source_clip_in_target_space); | 905 parent_combined_clip_in_target_space, source_clip_in_target_space); |
| 905 } | 906 } |
| 906 ResetIfHasNanCoordinate(&clip_node->clip_in_target_space); | 907 ResetIfHasNanCoordinate(&clip_node->clip_in_target_space); |
| 907 ResetIfHasNanCoordinate(&clip_node->combined_clip_in_target_space); | 908 ResetIfHasNanCoordinate(&clip_node->combined_clip_in_target_space); |
| 908 } | 909 } |
| 909 clip_tree->set_needs_update(false); | 910 clip_tree->set_needs_update(false); |
| 910 } | 911 } |
| 911 | 912 |
| 913 void UpdateScrollTree(ScrollTree* scroll_tree, |
| 914 const LayerTreeHost* layer_tree_host) { |
| 915 if (!scroll_tree->needs_update()) |
| 916 return; |
| 917 |
| 918 for (int i = ScrollTree::kRootNodeId; |
| 919 i < static_cast<int>(scroll_tree->size()); ++i) { |
| 920 ScrollNode* scroll_node = scroll_tree->Node(i); |
| 921 if (Layer* scroll_layer = |
| 922 layer_tree_host->LayerById(scroll_node->owning_layer_id)) { |
| 923 if (Layer* scroll_clip_layer = scroll_layer->scroll_clip_layer()) { |
| 924 scroll_node->scroll_clip_layer_bounds = scroll_clip_layer->bounds(); |
| 925 } |
| 926 } |
| 927 } |
| 928 } |
| 929 |
| 912 void ComputeTransforms(TransformTree* transform_tree) { | 930 void ComputeTransforms(TransformTree* transform_tree) { |
| 913 if (!transform_tree->needs_update()) | 931 if (!transform_tree->needs_update()) |
| 914 return; | 932 return; |
| 915 for (int i = TransformTree::kContentsRootNodeId; | 933 for (int i = TransformTree::kContentsRootNodeId; |
| 916 i < static_cast<int>(transform_tree->size()); ++i) | 934 i < static_cast<int>(transform_tree->size()); ++i) |
| 917 transform_tree->UpdateTransforms(i); | 935 transform_tree->UpdateTransforms(i); |
| 918 transform_tree->set_needs_update(false); | 936 transform_tree->set_needs_update(false); |
| 919 } | 937 } |
| 920 | 938 |
| 921 void UpdateRenderTarget(EffectTree* effect_tree, | 939 void UpdateRenderTarget(EffectTree* effect_tree, |
| (...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1048 ComputeClips(property_trees, can_render_to_separate_surface); | 1066 ComputeClips(property_trees, can_render_to_separate_surface); |
| 1049 | 1067 |
| 1050 FindLayersThatNeedUpdates(root_layer->layer_tree_impl(), property_trees, | 1068 FindLayersThatNeedUpdates(root_layer->layer_tree_impl(), property_trees, |
| 1051 visible_layer_list); | 1069 visible_layer_list); |
| 1052 CalculateClipRects(*visible_layer_list, property_trees, | 1070 CalculateClipRects(*visible_layer_list, property_trees, |
| 1053 can_render_to_separate_surface); | 1071 can_render_to_separate_surface); |
| 1054 CalculateVisibleRects(*visible_layer_list, property_trees, | 1072 CalculateVisibleRects(*visible_layer_list, property_trees, |
| 1055 can_render_to_separate_surface); | 1073 can_render_to_separate_surface); |
| 1056 } | 1074 } |
| 1057 | 1075 |
| 1058 void UpdatePropertyTrees(PropertyTrees* property_trees, | 1076 void UpdatePropertyTrees(LayerTreeHost* layer_tree_host, |
| 1077 PropertyTrees* property_trees, |
| 1059 bool can_render_to_separate_surface) { | 1078 bool can_render_to_separate_surface) { |
| 1079 DCHECK(layer_tree_host); |
| 1080 DCHECK(property_trees); |
| 1081 DCHECK_EQ(layer_tree_host->property_trees(), property_trees); |
| 1060 if (property_trees->non_root_surfaces_enabled != | 1082 if (property_trees->non_root_surfaces_enabled != |
| 1061 can_render_to_separate_surface) { | 1083 can_render_to_separate_surface) { |
| 1062 property_trees->non_root_surfaces_enabled = can_render_to_separate_surface; | 1084 property_trees->non_root_surfaces_enabled = can_render_to_separate_surface; |
| 1063 property_trees->transform_tree.set_needs_update(true); | 1085 property_trees->transform_tree.set_needs_update(true); |
| 1064 } | 1086 } |
| 1065 if (property_trees->transform_tree.needs_update()) { | 1087 if (property_trees->transform_tree.needs_update()) { |
| 1066 property_trees->clip_tree.set_needs_update(true); | 1088 property_trees->clip_tree.set_needs_update(true); |
| 1067 property_trees->effect_tree.set_needs_update(true); | 1089 property_trees->effect_tree.set_needs_update(true); |
| 1068 } | 1090 } |
| 1091 UpdateScrollTree(&property_trees->scroll_tree, layer_tree_host); |
| 1069 ComputeTransforms(&property_trees->transform_tree); | 1092 ComputeTransforms(&property_trees->transform_tree); |
| 1070 // Computation of clips uses surface contents scale which is updated while | 1093 // Computation of clips uses surface contents scale which is updated while |
| 1071 // computing effects. So, ComputeEffects should be before ComputeClips. | 1094 // computing effects. So, ComputeEffects should be before ComputeClips. |
| 1072 ComputeEffects(&property_trees->effect_tree); | 1095 ComputeEffects(&property_trees->effect_tree); |
| 1073 ComputeClips(property_trees, can_render_to_separate_surface); | 1096 ComputeClips(property_trees, can_render_to_separate_surface); |
| 1074 } | 1097 } |
| 1075 | 1098 |
| 1076 void BuildPropertyTreesAndComputeVisibleRects( | 1099 void BuildPropertyTreesAndComputeVisibleRects( |
| 1077 LayerImpl* root_layer, | 1100 LayerImpl* root_layer, |
| 1078 const LayerImpl* page_scale_layer, | 1101 const LayerImpl* page_scale_layer, |
| (...skipping 392 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1471 void UpdateElasticOverscroll(PropertyTrees* property_trees, | 1494 void UpdateElasticOverscroll(PropertyTrees* property_trees, |
| 1472 const Layer* overscroll_elasticity_layer, | 1495 const Layer* overscroll_elasticity_layer, |
| 1473 const gfx::Vector2dF& elastic_overscroll) { | 1496 const gfx::Vector2dF& elastic_overscroll) { |
| 1474 UpdateElasticOverscrollInternal(property_trees, overscroll_elasticity_layer, | 1497 UpdateElasticOverscrollInternal(property_trees, overscroll_elasticity_layer, |
| 1475 elastic_overscroll); | 1498 elastic_overscroll); |
| 1476 } | 1499 } |
| 1477 | 1500 |
| 1478 } // namespace draw_property_utils | 1501 } // namespace draw_property_utils |
| 1479 | 1502 |
| 1480 } // namespace cc | 1503 } // namespace cc |
| OLD | NEW |