| 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 |
| (...skipping 778 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 789 if (can_render_to_separate_surface) | 789 if (can_render_to_separate_surface) |
| 790 ValidateRenderSurfaceForLayer(layer); | 790 ValidateRenderSurfaceForLayer(layer); |
| 791 #endif | 791 #endif |
| 792 } | 792 } |
| 793 LayerImplList update_layer_list; | 793 LayerImplList update_layer_list; |
| 794 ComputeVisibleRectsInternal(root_layer, property_trees, | 794 ComputeVisibleRectsInternal(root_layer, property_trees, |
| 795 can_render_to_separate_surface, | 795 can_render_to_separate_surface, |
| 796 &update_layer_list, visible_layer_list); | 796 &update_layer_list, visible_layer_list); |
| 797 } | 797 } |
| 798 | 798 |
| 799 template <typename LayerType> | 799 gfx::Transform DrawTransform(const LayerImpl* layer, |
| 800 static gfx::Transform DrawTransformInternal(const LayerType* layer, | 800 const TransformTree& tree) { |
| 801 const TransformNode* node) { | 801 const TransformNode* node = tree.Node(layer->transform_tree_index()); |
| 802 gfx::Transform xform; | 802 gfx::Transform xform; |
| 803 const bool owns_non_root_surface = | 803 const bool owns_non_root_surface = |
| 804 !IsRootLayer(layer) && layer->has_render_surface(); | 804 !IsRootLayer(layer) && layer->has_render_surface(); |
| 805 if (!owns_non_root_surface) { | 805 if (!owns_non_root_surface) { |
| 806 // If you're not the root, or you don't own a surface, you need to apply | 806 // If you're not the root, or you don't own a surface, you need to apply |
| 807 // your local offset. | 807 // your local offset. |
| 808 xform = node->data.to_target; | 808 xform = node->data.to_target; |
| 809 if (layer->should_flatten_transform_from_property_tree()) | 809 if (layer->should_flatten_transform_from_property_tree()) |
| 810 xform.FlattenTo2d(); | 810 xform.FlattenTo2d(); |
| 811 xform.Translate(layer->offset_to_transform_parent().x(), | 811 xform.Translate(layer->offset_to_transform_parent().x(), |
| 812 layer->offset_to_transform_parent().y()); | 812 layer->offset_to_transform_parent().y()); |
| 813 } else { | 813 } else { |
| 814 // Surfaces need to apply their sublayer scale. | 814 // Surfaces need to apply their sublayer scale. |
| 815 xform.Scale(node->data.sublayer_scale.x(), node->data.sublayer_scale.y()); | 815 xform.Scale(node->data.sublayer_scale.x(), node->data.sublayer_scale.y()); |
| 816 } | 816 } |
| 817 return xform; | 817 return xform; |
| 818 } | 818 } |
| 819 | 819 |
| 820 gfx::Transform DrawTransform(const Layer* layer, const TransformTree& tree) { | |
| 821 return DrawTransformInternal(layer, tree.Node(layer->transform_tree_index())); | |
| 822 } | |
| 823 | |
| 824 gfx::Transform DrawTransform(const LayerImpl* layer, | |
| 825 const TransformTree& tree) { | |
| 826 return DrawTransformInternal(layer, tree.Node(layer->transform_tree_index())); | |
| 827 } | |
| 828 | |
| 829 static void SetSurfaceDrawTransform(const TransformTree& tree, | 820 static void SetSurfaceDrawTransform(const TransformTree& tree, |
| 830 RenderSurfaceImpl* render_surface) { | 821 RenderSurfaceImpl* render_surface) { |
| 831 const TransformNode* node = tree.Node(render_surface->TransformTreeIndex()); | 822 const TransformNode* node = tree.Node(render_surface->TransformTreeIndex()); |
| 832 // The draw transform of root render surface is identity tranform. | 823 // The draw transform of root render surface is identity tranform. |
| 833 if (node->id == 1) { | 824 if (node->id == 1) { |
| 834 render_surface->SetDrawTransform(gfx::Transform()); | 825 render_surface->SetDrawTransform(gfx::Transform()); |
| 835 return; | 826 return; |
| 836 } | 827 } |
| 837 | 828 |
| 838 gfx::Transform render_surface_transform; | 829 gfx::Transform render_surface_transform; |
| (...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1017 property_trees->transform_tree.Node(layer->transform_tree_index()); | 1008 property_trees->transform_tree.Node(layer->transform_tree_index()); |
| 1018 const EffectNode* effect_node = | 1009 const EffectNode* effect_node = |
| 1019 property_trees->effect_tree.Node(layer->effect_tree_index()); | 1010 property_trees->effect_tree.Node(layer->effect_tree_index()); |
| 1020 const ClipNode* clip_node = | 1011 const ClipNode* clip_node = |
| 1021 property_trees->clip_tree.Node(layer->clip_tree_index()); | 1012 property_trees->clip_tree.Node(layer->clip_tree_index()); |
| 1022 | 1013 |
| 1023 layer->draw_properties().screen_space_transform = | 1014 layer->draw_properties().screen_space_transform = |
| 1024 ScreenSpaceTransformInternal(layer, transform_node); | 1015 ScreenSpaceTransformInternal(layer, transform_node); |
| 1025 if (property_trees->non_root_surfaces_enabled) { | 1016 if (property_trees->non_root_surfaces_enabled) { |
| 1026 layer->draw_properties().target_space_transform = | 1017 layer->draw_properties().target_space_transform = |
| 1027 DrawTransformInternal(layer, transform_node); | 1018 DrawTransform(layer, property_trees->transform_tree); |
| 1028 } else { | 1019 } else { |
| 1029 layer->draw_properties().target_space_transform = | 1020 layer->draw_properties().target_space_transform = |
| 1030 layer->draw_properties().screen_space_transform; | 1021 layer->draw_properties().screen_space_transform; |
| 1031 } | 1022 } |
| 1032 layer->draw_properties().screen_space_transform_is_animating = | 1023 layer->draw_properties().screen_space_transform_is_animating = |
| 1033 transform_node->data.to_screen_is_animated; | 1024 transform_node->data.to_screen_is_animated; |
| 1034 if (layer->layer_tree_impl() | 1025 if (layer->layer_tree_impl() |
| 1035 ->settings() | 1026 ->settings() |
| 1036 .layer_transforms_should_scale_layer_contents) { | 1027 .layer_transforms_should_scale_layer_contents) { |
| 1037 layer->draw_properties().maximum_animation_contents_scale = | 1028 layer->draw_properties().maximum_animation_contents_scale = |
| (...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1176 void UpdateElasticOverscroll(PropertyTrees* property_trees, | 1167 void UpdateElasticOverscroll(PropertyTrees* property_trees, |
| 1177 const Layer* overscroll_elasticity_layer, | 1168 const Layer* overscroll_elasticity_layer, |
| 1178 const gfx::Vector2dF& elastic_overscroll) { | 1169 const gfx::Vector2dF& elastic_overscroll) { |
| 1179 UpdateElasticOverscrollInternal(property_trees, overscroll_elasticity_layer, | 1170 UpdateElasticOverscrollInternal(property_trees, overscroll_elasticity_layer, |
| 1180 elastic_overscroll); | 1171 elastic_overscroll); |
| 1181 } | 1172 } |
| 1182 | 1173 |
| 1183 } // namespace draw_property_utils | 1174 } // namespace draw_property_utils |
| 1184 | 1175 |
| 1185 } // namespace cc | 1176 } // namespace cc |
| OLD | NEW |