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 618 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
629 kInvalidPropertyTreeNodeId); | 629 kInvalidPropertyTreeNodeId); |
630 | 630 |
631 node->has_potential_animation = has_potentially_animated_transform; | 631 node->has_potential_animation = has_potentially_animated_transform; |
632 node->is_currently_animating = TransformIsAnimating(layer); | 632 node->is_currently_animating = TransformIsAnimating(layer); |
633 if (has_potentially_animated_transform) { | 633 if (has_potentially_animated_transform) { |
634 node->has_only_translation_animations = | 634 node->has_only_translation_animations = |
635 HasOnlyTranslationTransforms(layer); | 635 HasOnlyTranslationTransforms(layer); |
636 } | 636 } |
637 | 637 |
638 float post_local_scale_factor = 1.0f; | 638 float post_local_scale_factor = 1.0f; |
| 639 if (is_root) |
| 640 post_local_scale_factor = |
| 641 data_for_children->property_trees->transform_tree.device_scale_factor(); |
639 | 642 |
640 if (is_page_scale_layer) { | 643 if (is_page_scale_layer) { |
641 if (!is_root) | 644 post_local_scale_factor *= data_from_ancestor.page_scale_factor; |
642 post_local_scale_factor *= data_from_ancestor.page_scale_factor; | |
643 data_for_children->property_trees->transform_tree.set_page_scale_factor( | 645 data_for_children->property_trees->transform_tree.set_page_scale_factor( |
644 data_from_ancestor.page_scale_factor); | 646 data_from_ancestor.page_scale_factor); |
645 } | 647 } |
646 | 648 |
647 node->source_node_id = source_index; | 649 node->source_node_id = source_index; |
648 node->post_local_scale_factor = post_local_scale_factor; | 650 node->post_local_scale_factor = post_local_scale_factor; |
649 if (is_root) { | 651 if (is_root) { |
650 float page_scale_factor_for_root = | 652 data_for_children->property_trees->transform_tree.SetDeviceTransform( |
651 is_page_scale_layer ? data_from_ancestor.page_scale_factor : 1.f; | 653 *data_from_ancestor.device_transform, layer->position()); |
652 data_for_children->property_trees->transform_tree | 654 data_for_children->property_trees->transform_tree |
653 .SetRootTransformsAndScales(data_for_children->property_trees | 655 .SetDeviceTransformScaleFactor(*data_from_ancestor.device_transform); |
654 ->transform_tree.device_scale_factor(), | |
655 page_scale_factor_for_root, | |
656 *data_from_ancestor.device_transform, | |
657 layer->position()); | |
658 } else { | 656 } else { |
659 node->source_offset = source_offset; | 657 node->source_offset = source_offset; |
660 node->update_post_local_transform(layer->position(), | 658 node->update_post_local_transform(layer->position(), |
661 TransformOrigin(layer)); | 659 TransformOrigin(layer)); |
662 } | 660 } |
663 | 661 |
664 if (is_overscroll_elasticity_layer) { | 662 if (is_overscroll_elasticity_layer) { |
665 DCHECK(!is_scrollable); | 663 DCHECK(!is_scrollable); |
666 node->scroll_offset = | 664 node->scroll_offset = |
667 gfx::ScrollOffset(data_from_ancestor.elastic_overscroll); | 665 gfx::ScrollOffset(data_from_ancestor.elastic_overscroll); |
(...skipping 676 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1344 const gfx::Transform& device_transform, | 1342 const gfx::Transform& device_transform, |
1345 PropertyTrees* property_trees, | 1343 PropertyTrees* property_trees, |
1346 SkColor color) { | 1344 SkColor color) { |
1347 if (!property_trees->needs_rebuild) { | 1345 if (!property_trees->needs_rebuild) { |
1348 draw_property_utils::UpdatePageScaleFactor( | 1346 draw_property_utils::UpdatePageScaleFactor( |
1349 property_trees, page_scale_layer, page_scale_factor, | 1347 property_trees, page_scale_layer, page_scale_factor, |
1350 device_scale_factor, device_transform); | 1348 device_scale_factor, device_transform); |
1351 draw_property_utils::UpdateElasticOverscroll( | 1349 draw_property_utils::UpdateElasticOverscroll( |
1352 property_trees, overscroll_elasticity_layer, elastic_overscroll); | 1350 property_trees, overscroll_elasticity_layer, elastic_overscroll); |
1353 property_trees->clip_tree.SetViewportClip(gfx::RectF(viewport)); | 1351 property_trees->clip_tree.SetViewportClip(gfx::RectF(viewport)); |
1354 float page_scale_factor_for_root = | 1352 property_trees->transform_tree.SetDeviceTransform(device_transform, |
1355 page_scale_layer == root_layer ? page_scale_factor : 1.f; | 1353 root_layer->position()); |
1356 property_trees->transform_tree.SetRootTransformsAndScales( | |
1357 device_scale_factor, page_scale_factor_for_root, device_transform, | |
1358 root_layer->position()); | |
1359 return; | 1354 return; |
1360 } | 1355 } |
1361 | 1356 |
1362 property_trees->sequence_number++; | 1357 property_trees->sequence_number++; |
1363 | 1358 |
1364 DataForRecursion<LayerType> data_for_recursion; | 1359 DataForRecursion<LayerType> data_for_recursion; |
1365 data_for_recursion.property_trees = property_trees; | 1360 data_for_recursion.property_trees = property_trees; |
1366 data_for_recursion.transform_tree_parent = nullptr; | 1361 data_for_recursion.transform_tree_parent = nullptr; |
1367 data_for_recursion.transform_fixed_parent = nullptr; | 1362 data_for_recursion.transform_fixed_parent = nullptr; |
1368 data_for_recursion.render_target = kRootPropertyTreeNodeId; | 1363 data_for_recursion.render_target = kRootPropertyTreeNodeId; |
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1486 color = SkColorSetA(color, 255); | 1481 color = SkColorSetA(color, 255); |
1487 BuildPropertyTreesTopLevelInternal( | 1482 BuildPropertyTreesTopLevelInternal( |
1488 root_layer, page_scale_layer, inner_viewport_scroll_layer, | 1483 root_layer, page_scale_layer, inner_viewport_scroll_layer, |
1489 outer_viewport_scroll_layer, overscroll_elasticity_layer, | 1484 outer_viewport_scroll_layer, overscroll_elasticity_layer, |
1490 elastic_overscroll, page_scale_factor, device_scale_factor, viewport, | 1485 elastic_overscroll, page_scale_factor, device_scale_factor, viewport, |
1491 device_transform, property_trees, color); | 1486 device_transform, property_trees, color); |
1492 property_trees->ResetCachedData(); | 1487 property_trees->ResetCachedData(); |
1493 } | 1488 } |
1494 | 1489 |
1495 } // namespace cc | 1490 } // namespace cc |
OLD | NEW |