| 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 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 148 bool is_clipped; | 148 bool is_clipped; |
| 149 gfx::RectF clip_rect; | 149 gfx::RectF clip_rect; |
| 150 }; | 150 }; |
| 151 | 151 |
| 152 static ConditionalClip ComputeTargetRectInLocalSpace( | 152 static ConditionalClip ComputeTargetRectInLocalSpace( |
| 153 gfx::RectF rect, | 153 gfx::RectF rect, |
| 154 const PropertyTrees* property_trees, | 154 const PropertyTrees* property_trees, |
| 155 int target_transform_id, | 155 int target_transform_id, |
| 156 int local_transform_id, | 156 int local_transform_id, |
| 157 const int target_effect_id) { | 157 const int target_effect_id) { |
| 158 const TransformTree& transform_tree = property_trees->transform_tree; | |
| 159 const EffectTree& effect_tree = property_trees->effect_tree; | 158 const EffectTree& effect_tree = property_trees->effect_tree; |
| 160 gfx::Transform target_to_local; | 159 gfx::Transform target_to_local; |
| 161 bool success = transform_tree.ComputeTransform( | 160 bool success = property_trees->ComputeTransformFromTarget( |
| 162 target_transform_id, local_transform_id, &target_to_local); | 161 local_transform_id, target_effect_id, &target_to_local); |
| 163 if (!success) | 162 if (!success) |
| 164 // If transform is not invertible, cannot apply clip. | 163 // If transform is not invertible, cannot apply clip. |
| 165 return ConditionalClip{false, gfx::RectF()}; | 164 return ConditionalClip{false, gfx::RectF()}; |
| 166 const EffectNode* target_effect_node = effect_tree.Node(target_effect_id); | 165 const EffectNode* target_effect_node = effect_tree.Node(target_effect_id); |
| 167 ConcatInverseSurfaceContentsScale(target_effect_node, &target_to_local); | 166 ConcatInverseSurfaceContentsScale(target_effect_node, &target_to_local); |
| 168 | 167 |
| 169 if (target_transform_id > local_transform_id) | 168 if (target_transform_id > local_transform_id) |
| 170 return ConditionalClip{true, // is_clipped. | 169 return ConditionalClip{true, // is_clipped. |
| 171 MathUtil::MapClippedRect(target_to_local, rect)}; | 170 MathUtil::MapClippedRect(target_to_local, rect)}; |
| 172 | 171 |
| (...skipping 341 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 514 if (combined_clip_rect_in_target_space.IsEmpty()) { | 513 if (combined_clip_rect_in_target_space.IsEmpty()) { |
| 515 layer->set_visible_layer_rect(gfx::Rect()); | 514 layer->set_visible_layer_rect(gfx::Rect()); |
| 516 continue; | 515 continue; |
| 517 } | 516 } |
| 518 | 517 |
| 519 gfx::Transform target_to_layer; | 518 gfx::Transform target_to_layer; |
| 520 if (transform_node->ancestors_are_invertible) { | 519 if (transform_node->ancestors_are_invertible) { |
| 521 target_to_layer = transform_tree.FromTarget( | 520 target_to_layer = transform_tree.FromTarget( |
| 522 transform_node->id, layer->render_target_effect_tree_index()); | 521 transform_node->id, layer->render_target_effect_tree_index()); |
| 523 } else { | 522 } else { |
| 524 bool success = transform_tree.ComputeTransform( | 523 const EffectNode* target_effect_node = |
| 525 target_node_id, transform_node->id, &target_to_layer); | 524 ContentsTargetEffectNode(layer->effect_tree_index(), effect_tree); |
| 525 bool success = property_trees->ComputeTransformFromTarget( |
| 526 transform_node->id, target_effect_node->id, &target_to_layer); |
| 526 if (!success) { | 527 if (!success) { |
| 527 // An animated singular transform may become non-singular during the | 528 // An animated singular transform may become non-singular during the |
| 528 // animation, so we still need to compute a visible rect. In this | 529 // animation, so we still need to compute a visible rect. In this |
| 529 // situation, we treat the entire layer as visible. | 530 // situation, we treat the entire layer as visible. |
| 530 layer->set_visible_layer_rect(gfx::Rect(layer_bounds)); | 531 layer->set_visible_layer_rect(gfx::Rect(layer_bounds)); |
| 531 continue; | 532 continue; |
| 532 } | 533 } |
| 533 const EffectNode* target_effect_node = | |
| 534 ContentsTargetEffectNode(layer->effect_tree_index(), effect_tree); | |
| 535 if (target_effect_node->id != EffectTree::kContentsRootNodeId) { | 534 if (target_effect_node->id != EffectTree::kContentsRootNodeId) { |
| 536 ConcatInverseSurfaceContentsScale(target_effect_node, &target_to_layer); | 535 ConcatInverseSurfaceContentsScale(target_effect_node, &target_to_layer); |
| 537 #if DCHECK_IS_ON() | 536 #if DCHECK_IS_ON() |
| 538 VerifySurfaceContentsScalesMatch(target_effect_node->id, target_node_id, | 537 VerifySurfaceContentsScalesMatch(target_effect_node->id, target_node_id, |
| 539 effect_tree, transform_tree); | 538 effect_tree, transform_tree); |
| 540 #endif | 539 #endif |
| 541 } | 540 } |
| 542 } | 541 } |
| 543 gfx::Transform target_to_content; | 542 gfx::Transform target_to_content; |
| 544 target_to_content.Translate(-layer->offset_to_transform_parent().x(), | 543 target_to_content.Translate(-layer->offset_to_transform_parent().x(), |
| (...skipping 1060 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1605 void UpdateElasticOverscroll(PropertyTrees* property_trees, | 1604 void UpdateElasticOverscroll(PropertyTrees* property_trees, |
| 1606 const Layer* overscroll_elasticity_layer, | 1605 const Layer* overscroll_elasticity_layer, |
| 1607 const gfx::Vector2dF& elastic_overscroll) { | 1606 const gfx::Vector2dF& elastic_overscroll) { |
| 1608 UpdateElasticOverscrollInternal(property_trees, overscroll_elasticity_layer, | 1607 UpdateElasticOverscrollInternal(property_trees, overscroll_elasticity_layer, |
| 1609 elastic_overscroll); | 1608 elastic_overscroll); |
| 1610 } | 1609 } |
| 1611 | 1610 |
| 1612 } // namespace draw_property_utils | 1611 } // namespace draw_property_utils |
| 1613 | 1612 |
| 1614 } // namespace cc | 1613 } // namespace cc |
| OLD | NEW |