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 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
51 float page_scale_factor; | 51 float page_scale_factor; |
52 bool in_subtree_of_page_scale_layer; | 52 bool in_subtree_of_page_scale_layer; |
53 bool affected_by_inner_viewport_bounds_delta; | 53 bool affected_by_inner_viewport_bounds_delta; |
54 bool affected_by_outer_viewport_bounds_delta; | 54 bool affected_by_outer_viewport_bounds_delta; |
55 bool should_flatten; | 55 bool should_flatten; |
56 bool target_is_clipped; | 56 bool target_is_clipped; |
57 bool is_hidden; | 57 bool is_hidden; |
58 uint32_t main_thread_scrolling_reasons; | 58 uint32_t main_thread_scrolling_reasons; |
59 bool scroll_tree_parent_created_by_uninheritable_criteria; | 59 bool scroll_tree_parent_created_by_uninheritable_criteria; |
60 const gfx::Transform* device_transform; | 60 const gfx::Transform* device_transform; |
61 gfx::Vector2dF scroll_snap; | |
62 gfx::Transform compound_transform_since_render_target; | 61 gfx::Transform compound_transform_since_render_target; |
63 bool axis_align_since_render_target; | 62 bool axis_align_since_render_target; |
64 SkColor safe_opaque_background_color; | 63 SkColor safe_opaque_background_color; |
65 }; | 64 }; |
66 | 65 |
67 template <typename LayerType> | 66 template <typename LayerType> |
68 struct DataForRecursionFromChild { | 67 struct DataForRecursionFromChild { |
69 int num_copy_requests_in_subtree; | 68 int num_copy_requests_in_subtree; |
70 | 69 |
71 DataForRecursionFromChild() : num_copy_requests_in_subtree(0) {} | 70 DataForRecursionFromChild() : num_copy_requests_in_subtree(0) {} |
(...skipping 461 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
533 LayerType* source = Parent(layer); | 532 LayerType* source = Parent(layer); |
534 source_offset += source->offset_to_transform_parent(); | 533 source_offset += source->offset_to_transform_parent(); |
535 source_index = source->transform_tree_index(); | 534 source_index = source->transform_tree_index(); |
536 } else if (!is_fixed) { | 535 } else if (!is_fixed) { |
537 source_offset = transform_parent->offset_to_transform_parent(); | 536 source_offset = transform_parent->offset_to_transform_parent(); |
538 } else { | 537 } else { |
539 source_offset = data_from_ancestor.transform_tree_parent | 538 source_offset = data_from_ancestor.transform_tree_parent |
540 ->offset_to_transform_parent(); | 539 ->offset_to_transform_parent(); |
541 source_index = | 540 source_index = |
542 data_from_ancestor.transform_tree_parent->transform_tree_index(); | 541 data_from_ancestor.transform_tree_parent->transform_tree_index(); |
543 source_offset -= data_from_ancestor.scroll_snap; | |
544 } | 542 } |
545 } | 543 } |
546 | 544 |
547 if (IsContainerForFixedPositionLayers(layer) || is_root) { | 545 if (IsContainerForFixedPositionLayers(layer) || is_root) { |
548 data_for_children->affected_by_inner_viewport_bounds_delta = | 546 data_for_children->affected_by_inner_viewport_bounds_delta = |
549 layer == data_from_ancestor.inner_viewport_scroll_layer; | 547 layer == data_from_ancestor.inner_viewport_scroll_layer; |
550 data_for_children->affected_by_outer_viewport_bounds_delta = | 548 data_for_children->affected_by_outer_viewport_bounds_delta = |
551 layer == data_from_ancestor.outer_viewport_scroll_layer; | 549 layer == data_from_ancestor.outer_viewport_scroll_layer; |
552 if (is_scrollable) { | 550 if (is_scrollable) { |
553 DCHECK(!is_root); | 551 DCHECK(!is_root); |
554 DCHECK(layer->transform().IsIdentity()); | 552 DCHECK(layer->transform().IsIdentity()); |
555 data_for_children->transform_fixed_parent = Parent(layer); | 553 data_for_children->transform_fixed_parent = Parent(layer); |
556 } else { | 554 } else { |
557 data_for_children->transform_fixed_parent = layer; | 555 data_for_children->transform_fixed_parent = layer; |
558 } | 556 } |
559 } | 557 } |
560 data_for_children->transform_tree_parent = layer; | 558 data_for_children->transform_tree_parent = layer; |
561 | 559 |
562 if (IsContainerForFixedPositionLayers(layer) || is_fixed) | |
563 data_for_children->scroll_snap = gfx::Vector2dF(); | |
564 | |
565 if (!requires_node) { | 560 if (!requires_node) { |
566 data_for_children->should_flatten |= ShouldFlattenTransform(layer); | 561 data_for_children->should_flatten |= ShouldFlattenTransform(layer); |
567 gfx::Vector2dF local_offset = layer->position().OffsetFromOrigin() + | 562 gfx::Vector2dF local_offset = layer->position().OffsetFromOrigin() + |
568 layer->transform().To2dTranslation(); | 563 layer->transform().To2dTranslation(); |
569 gfx::Vector2dF source_to_parent; | 564 gfx::Vector2dF source_to_parent; |
570 if (source_index != parent_index) { | 565 if (source_index != parent_index) { |
571 gfx::Transform to_parent; | 566 gfx::Transform to_parent; |
572 data_from_ancestor.property_trees->transform_tree.ComputeTranslation( | 567 data_from_ancestor.property_trees->transform_tree.ComputeTranslation( |
573 source_index, parent_index, &to_parent); | 568 source_index, parent_index, &to_parent); |
574 source_to_parent = to_parent.To2dTranslation(); | 569 source_to_parent = to_parent.To2dTranslation(); |
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
687 node->update_pre_local_transform(TransformOrigin(layer)); | 682 node->update_pre_local_transform(TransformOrigin(layer)); |
688 | 683 |
689 node->needs_local_transform_update = true; | 684 node->needs_local_transform_update = true; |
690 data_from_ancestor.property_trees->transform_tree.UpdateTransforms(node->id); | 685 data_from_ancestor.property_trees->transform_tree.UpdateTransforms(node->id); |
691 | 686 |
692 layer->set_offset_to_transform_parent(gfx::Vector2dF()); | 687 layer->set_offset_to_transform_parent(gfx::Vector2dF()); |
693 | 688 |
694 // Flattening (if needed) will be handled by |node|. | 689 // Flattening (if needed) will be handled by |node|. |
695 layer->set_should_flatten_transform_from_property_tree(false); | 690 layer->set_should_flatten_transform_from_property_tree(false); |
696 | 691 |
697 data_for_children->scroll_snap += node->scroll_snap; | |
698 | |
699 node->owner_id = layer->id(); | 692 node->owner_id = layer->id(); |
700 | 693 |
701 return true; | 694 return true; |
702 } | 695 } |
703 | 696 |
704 static inline bool HasPotentialOpacityAnimation(Layer* layer) { | 697 static inline bool HasPotentialOpacityAnimation(Layer* layer) { |
705 return HasPotentiallyRunningOpacityAnimation(layer) || | 698 return HasPotentiallyRunningOpacityAnimation(layer) || |
706 layer->OpacityCanAnimateOnImplThread(); | 699 layer->OpacityCanAnimateOnImplThread(); |
707 } | 700 } |
708 | 701 |
(...skipping 764 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1473 color = SkColorSetA(color, 255); | 1466 color = SkColorSetA(color, 255); |
1474 BuildPropertyTreesTopLevelInternal( | 1467 BuildPropertyTreesTopLevelInternal( |
1475 root_layer, page_scale_layer, inner_viewport_scroll_layer, | 1468 root_layer, page_scale_layer, inner_viewport_scroll_layer, |
1476 outer_viewport_scroll_layer, overscroll_elasticity_layer, | 1469 outer_viewport_scroll_layer, overscroll_elasticity_layer, |
1477 elastic_overscroll, page_scale_factor, device_scale_factor, viewport, | 1470 elastic_overscroll, page_scale_factor, device_scale_factor, viewport, |
1478 device_transform, property_trees, color); | 1471 device_transform, property_trees, color); |
1479 property_trees->ResetCachedData(); | 1472 property_trees->ResetCachedData(); |
1480 } | 1473 } |
1481 | 1474 |
1482 } // namespace cc | 1475 } // namespace cc |
OLD | NEW |