Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(11)

Side by Side Diff: cc/trees/draw_property_utils.cc

Issue 2180223005: cc : Split TransformTree::ComputeTransform (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: . Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | cc/trees/property_tree.h » ('j') | cc/trees/property_tree.cc » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
OLDNEW
« no previous file with comments | « no previous file | cc/trees/property_tree.h » ('j') | cc/trees/property_tree.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698