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