| 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 612 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 623 kInvalidPropertyTreeNodeId); | 623 kInvalidPropertyTreeNodeId); |
| 624 | 624 |
| 625 node->has_potential_animation = has_potentially_animated_transform; | 625 node->has_potential_animation = has_potentially_animated_transform; |
| 626 node->is_currently_animating = TransformIsAnimating(layer); | 626 node->is_currently_animating = TransformIsAnimating(layer); |
| 627 if (has_potentially_animated_transform) { | 627 if (has_potentially_animated_transform) { |
| 628 node->has_only_translation_animations = | 628 node->has_only_translation_animations = |
| 629 HasOnlyTranslationTransforms(layer); | 629 HasOnlyTranslationTransforms(layer); |
| 630 } | 630 } |
| 631 | 631 |
| 632 float post_local_scale_factor = 1.0f; | 632 float post_local_scale_factor = 1.0f; |
| 633 if (is_root) |
| 634 post_local_scale_factor = |
| 635 data_for_children->property_trees->transform_tree.device_scale_factor(); |
| 633 | 636 |
| 634 if (is_page_scale_layer) { | 637 if (is_page_scale_layer) { |
| 635 if (!is_root) | 638 post_local_scale_factor *= data_from_ancestor.page_scale_factor; |
| 636 post_local_scale_factor *= data_from_ancestor.page_scale_factor; | |
| 637 data_for_children->property_trees->transform_tree.set_page_scale_factor( | 639 data_for_children->property_trees->transform_tree.set_page_scale_factor( |
| 638 data_from_ancestor.page_scale_factor); | 640 data_from_ancestor.page_scale_factor); |
| 639 } | 641 } |
| 640 | 642 |
| 641 if (has_surface && !is_root) | 643 if (has_surface && !is_root) |
| 642 node->needs_surface_contents_scale = true; | 644 node->needs_surface_contents_scale = true; |
| 643 | 645 |
| 644 node->source_node_id = source_index; | 646 node->source_node_id = source_index; |
| 645 node->post_local_scale_factor = post_local_scale_factor; | 647 node->post_local_scale_factor = post_local_scale_factor; |
| 646 if (is_root) { | 648 if (is_root) { |
| 647 float page_scale_factor_for_root = | 649 data_for_children->property_trees->transform_tree.SetDeviceTransform( |
| 648 is_page_scale_layer ? data_from_ancestor.page_scale_factor : 1.f; | 650 *data_from_ancestor.device_transform, layer->position()); |
| 649 data_for_children->property_trees->transform_tree | 651 data_for_children->property_trees->transform_tree |
| 650 .SetRootTransformsAndScales(data_for_children->property_trees | 652 .SetDeviceTransformScaleFactor(*data_from_ancestor.device_transform); |
| 651 ->transform_tree.device_scale_factor(), | |
| 652 page_scale_factor_for_root, | |
| 653 *data_from_ancestor.device_transform, | |
| 654 layer->position()); | |
| 655 } else { | 653 } else { |
| 656 node->source_offset = source_offset; | 654 node->source_offset = source_offset; |
| 657 node->update_post_local_transform(layer->position(), | 655 node->update_post_local_transform(layer->position(), |
| 658 TransformOrigin(layer)); | 656 TransformOrigin(layer)); |
| 659 } | 657 } |
| 660 | 658 |
| 661 if (is_overscroll_elasticity_layer) { | 659 if (is_overscroll_elasticity_layer) { |
| 662 DCHECK(!is_scrollable); | 660 DCHECK(!is_scrollable); |
| 663 node->scroll_offset = | 661 node->scroll_offset = |
| 664 gfx::ScrollOffset(data_from_ancestor.elastic_overscroll); | 662 gfx::ScrollOffset(data_from_ancestor.elastic_overscroll); |
| (...skipping 669 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1334 const gfx::Transform& device_transform, | 1332 const gfx::Transform& device_transform, |
| 1335 PropertyTrees* property_trees, | 1333 PropertyTrees* property_trees, |
| 1336 SkColor color) { | 1334 SkColor color) { |
| 1337 if (!property_trees->needs_rebuild) { | 1335 if (!property_trees->needs_rebuild) { |
| 1338 draw_property_utils::UpdatePageScaleFactor( | 1336 draw_property_utils::UpdatePageScaleFactor( |
| 1339 property_trees, page_scale_layer, page_scale_factor, | 1337 property_trees, page_scale_layer, page_scale_factor, |
| 1340 device_scale_factor, device_transform); | 1338 device_scale_factor, device_transform); |
| 1341 draw_property_utils::UpdateElasticOverscroll( | 1339 draw_property_utils::UpdateElasticOverscroll( |
| 1342 property_trees, overscroll_elasticity_layer, elastic_overscroll); | 1340 property_trees, overscroll_elasticity_layer, elastic_overscroll); |
| 1343 property_trees->clip_tree.SetViewportClip(gfx::RectF(viewport)); | 1341 property_trees->clip_tree.SetViewportClip(gfx::RectF(viewport)); |
| 1344 float page_scale_factor_for_root = | 1342 property_trees->transform_tree.SetDeviceTransform(device_transform, |
| 1345 page_scale_layer == root_layer ? page_scale_factor : 1.f; | 1343 root_layer->position()); |
| 1346 property_trees->transform_tree.SetRootTransformsAndScales( | |
| 1347 device_scale_factor, page_scale_factor_for_root, device_transform, | |
| 1348 root_layer->position()); | |
| 1349 return; | 1344 return; |
| 1350 } | 1345 } |
| 1351 | 1346 |
| 1352 property_trees->sequence_number++; | 1347 property_trees->sequence_number++; |
| 1353 | 1348 |
| 1354 DataForRecursion<LayerType> data_for_recursion; | 1349 DataForRecursion<LayerType> data_for_recursion; |
| 1355 data_for_recursion.property_trees = property_trees; | 1350 data_for_recursion.property_trees = property_trees; |
| 1356 data_for_recursion.transform_tree_parent = nullptr; | 1351 data_for_recursion.transform_tree_parent = nullptr; |
| 1357 data_for_recursion.transform_fixed_parent = nullptr; | 1352 data_for_recursion.transform_fixed_parent = nullptr; |
| 1358 data_for_recursion.render_target = kRootPropertyTreeNodeId; | 1353 data_for_recursion.render_target = kRootPropertyTreeNodeId; |
| (...skipping 23 matching lines...) Expand all Loading... |
| 1382 data_for_recursion.axis_align_since_render_target = true; | 1377 data_for_recursion.axis_align_since_render_target = true; |
| 1383 data_for_recursion.property_trees->transform_tree.set_device_scale_factor( | 1378 data_for_recursion.property_trees->transform_tree.set_device_scale_factor( |
| 1384 device_scale_factor); | 1379 device_scale_factor); |
| 1385 data_for_recursion.safe_opaque_background_color = color; | 1380 data_for_recursion.safe_opaque_background_color = color; |
| 1386 | 1381 |
| 1387 ClipNode root_clip; | 1382 ClipNode root_clip; |
| 1388 root_clip.resets_clip = true; | 1383 root_clip.resets_clip = true; |
| 1389 root_clip.applies_local_clip = true; | 1384 root_clip.applies_local_clip = true; |
| 1390 root_clip.clip = gfx::RectF(viewport); | 1385 root_clip.clip = gfx::RectF(viewport); |
| 1391 root_clip.transform_id = kRootPropertyTreeNodeId; | 1386 root_clip.transform_id = kRootPropertyTreeNodeId; |
| 1392 root_clip.target_transform_id = kRootPropertyTreeNodeId; | |
| 1393 data_for_recursion.clip_tree_parent = | 1387 data_for_recursion.clip_tree_parent = |
| 1394 data_for_recursion.property_trees->clip_tree.Insert( | 1388 data_for_recursion.property_trees->clip_tree.Insert( |
| 1395 root_clip, kRootPropertyTreeNodeId); | 1389 root_clip, kRootPropertyTreeNodeId); |
| 1396 | 1390 |
| 1397 DataForRecursionFromChild<LayerType> data_from_child; | 1391 DataForRecursionFromChild<LayerType> data_from_child; |
| 1398 BuildPropertyTreesInternal(root_layer, data_for_recursion, &data_from_child); | 1392 BuildPropertyTreesInternal(root_layer, data_for_recursion, &data_from_child); |
| 1399 property_trees->needs_rebuild = false; | 1393 property_trees->needs_rebuild = false; |
| 1400 | 1394 |
| 1401 // The transform tree is kept up to date as it is built, but the | 1395 // The transform tree is kept up to date as it is built, but the |
| 1402 // combined_clips stored in the clip tree and the screen_space_opacity and | 1396 // combined_clips stored in the clip tree and the screen_space_opacity and |
| (...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1484 color = SkColorSetA(color, 255); | 1478 color = SkColorSetA(color, 255); |
| 1485 BuildPropertyTreesTopLevelInternal( | 1479 BuildPropertyTreesTopLevelInternal( |
| 1486 root_layer, page_scale_layer, inner_viewport_scroll_layer, | 1480 root_layer, page_scale_layer, inner_viewport_scroll_layer, |
| 1487 outer_viewport_scroll_layer, overscroll_elasticity_layer, | 1481 outer_viewport_scroll_layer, overscroll_elasticity_layer, |
| 1488 elastic_overscroll, page_scale_factor, device_scale_factor, viewport, | 1482 elastic_overscroll, page_scale_factor, device_scale_factor, viewport, |
| 1489 device_transform, property_trees, color); | 1483 device_transform, property_trees, color); |
| 1490 property_trees->ResetCachedData(); | 1484 property_trees->ResetCachedData(); |
| 1491 } | 1485 } |
| 1492 | 1486 |
| 1493 } // namespace cc | 1487 } // namespace cc |
| OLD | NEW |