| 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 |