| OLD | NEW |
| 1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 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/layers/layer_impl.h" | 5 #include "cc/layers/layer_impl.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 #include <stdint.h> | 8 #include <stdint.h> |
| 9 | 9 |
| 10 #include <algorithm> | 10 #include <algorithm> |
| (...skipping 467 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 478 } | 478 } |
| 479 | 479 |
| 480 int LayerImpl::num_copy_requests_in_target_subtree() { | 480 int LayerImpl::num_copy_requests_in_target_subtree() { |
| 481 return GetEffectTree() | 481 return GetEffectTree() |
| 482 .Node(effect_tree_index()) | 482 .Node(effect_tree_index()) |
| 483 ->num_copy_requests_in_subtree; | 483 ->num_copy_requests_in_subtree; |
| 484 } | 484 } |
| 485 | 485 |
| 486 void LayerImpl::UpdatePropertyTreeTransformIsAnimated(bool is_animated) { | 486 void LayerImpl::UpdatePropertyTreeTransformIsAnimated(bool is_animated) { |
| 487 if (TransformNode* node = | 487 if (TransformNode* node = |
| 488 GetTransformTree().FindNodeFromOwningLayerId(id())) { | 488 GetTransformTree().UpdateNodeFromOwningLayerId(id())) { |
| 489 // A LayerImpl's own current state is insufficient for determining whether | 489 // A LayerImpl's own current state is insufficient for determining whether |
| 490 // it owns a TransformNode, since this depends on the state of the | 490 // it owns a TransformNode, since this depends on the state of the |
| 491 // corresponding Layer at the time of the last commit. For example, if | 491 // corresponding Layer at the time of the last commit. For example, if |
| 492 // |is_animated| is false, this might mean a transform animation just ticked | 492 // |is_animated| is false, this might mean a transform animation just ticked |
| 493 // past its finish point (so the LayerImpl still owns a TransformNode) or it | 493 // past its finish point (so the LayerImpl still owns a TransformNode) or it |
| 494 // might mean that a transform animation was removed during commit or | 494 // might mean that a transform animation was removed during commit or |
| 495 // activation (and, in that case, the LayerImpl will no longer own a | 495 // activation (and, in that case, the LayerImpl will no longer own a |
| 496 // TransformNode, unless it has non-animation-related reasons for owning a | 496 // TransformNode, unless it has non-animation-related reasons for owning a |
| 497 // node). | 497 // node). |
| 498 if (node->has_potential_animation != is_animated) { | 498 if (node->has_potential_animation != is_animated) { |
| (...skipping 21 matching lines...) Expand all Loading... |
| 520 } | 520 } |
| 521 | 521 |
| 522 gfx::ScrollOffset LayerImpl::ScrollOffsetForAnimation() const { | 522 gfx::ScrollOffset LayerImpl::ScrollOffsetForAnimation() const { |
| 523 return CurrentScrollOffset(); | 523 return CurrentScrollOffset(); |
| 524 } | 524 } |
| 525 | 525 |
| 526 void LayerImpl::OnIsAnimatingChanged(const PropertyAnimationState& mask, | 526 void LayerImpl::OnIsAnimatingChanged(const PropertyAnimationState& mask, |
| 527 const PropertyAnimationState& state) { | 527 const PropertyAnimationState& state) { |
| 528 DCHECK(layer_tree_impl_); | 528 DCHECK(layer_tree_impl_); |
| 529 | 529 |
| 530 TransformNode* transform_node = | |
| 531 GetTransformTree().FindNodeFromOwningLayerId(id()); | |
| 532 EffectNode* effect_node = GetEffectTree().FindNodeFromOwningLayerId(id()); | |
| 533 for (int property = TargetProperty::FIRST_TARGET_PROPERTY; | 530 for (int property = TargetProperty::FIRST_TARGET_PROPERTY; |
| 534 property <= TargetProperty::LAST_TARGET_PROPERTY; ++property) { | 531 property <= TargetProperty::LAST_TARGET_PROPERTY; ++property) { |
| 532 if (!mask.currently_running[property] && |
| 533 !mask.potentially_animating[property]) |
| 534 continue; |
| 535 |
| 535 switch (property) { | 536 switch (property) { |
| 536 case TargetProperty::TRANSFORM: | 537 case TargetProperty::TRANSFORM: |
| 537 if (transform_node) { | 538 if (TransformNode* transform_node = |
| 539 GetTransformTree().UpdateNodeFromOwningLayerId(id())) { |
| 538 if (mask.currently_running[property]) | 540 if (mask.currently_running[property]) |
| 539 transform_node->is_currently_animating = | 541 transform_node->is_currently_animating = |
| 540 state.currently_running[property]; | 542 state.currently_running[property]; |
| 541 if (mask.potentially_animating[property]) { | 543 if (mask.potentially_animating[property]) { |
| 542 UpdatePropertyTreeTransformIsAnimated( | 544 UpdatePropertyTreeTransformIsAnimated( |
| 543 state.potentially_animating[property]); | 545 state.potentially_animating[property]); |
| 544 was_ever_ready_since_last_transform_animation_ = false; | 546 was_ever_ready_since_last_transform_animation_ = false; |
| 545 } | 547 } |
| 546 } | 548 } |
| 547 break; | 549 break; |
| 548 case TargetProperty::OPACITY: | 550 case TargetProperty::OPACITY: |
| 549 if (effect_node) { | 551 if (EffectNode* effect_node = |
| 552 GetEffectTree().UpdateNodeFromOwningLayerId(id())) { |
| 550 if (mask.currently_running[property]) | 553 if (mask.currently_running[property]) |
| 551 effect_node->is_currently_animating_opacity = | 554 effect_node->is_currently_animating_opacity = |
| 552 state.currently_running[property]; | 555 state.currently_running[property]; |
| 553 if (mask.potentially_animating[property]) { | 556 if (mask.potentially_animating[property]) { |
| 554 effect_node->has_potential_opacity_animation = | 557 effect_node->has_potential_opacity_animation = |
| 555 state.potentially_animating[property]; | 558 state.potentially_animating[property]; |
| 556 GetEffectTree().set_needs_update(true); | 559 GetEffectTree().set_needs_update(true); |
| 557 } | 560 } |
| 558 } | 561 } |
| 559 break; | 562 break; |
| 560 case TargetProperty::FILTER: | 563 case TargetProperty::FILTER: |
| 561 if (effect_node) { | 564 if (EffectNode* effect_node = |
| 565 GetEffectTree().UpdateNodeFromOwningLayerId(id())) { |
| 562 if (mask.currently_running[property]) | 566 if (mask.currently_running[property]) |
| 563 effect_node->is_currently_animating_filter = | 567 effect_node->is_currently_animating_filter = |
| 564 state.currently_running[property]; | 568 state.currently_running[property]; |
| 565 if (mask.potentially_animating[property]) | 569 if (mask.potentially_animating[property]) |
| 566 effect_node->has_potential_filter_animation = | 570 effect_node->has_potential_filter_animation = |
| 567 state.potentially_animating[property]; | 571 state.potentially_animating[property]; |
| 568 } | 572 } |
| 569 break; | 573 break; |
| 570 default: | 574 default: |
| 571 break; | 575 break; |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 611 property_trees->SetInnerViewportContainerBoundsDelta(bounds_delta); | 615 property_trees->SetInnerViewportContainerBoundsDelta(bounds_delta); |
| 612 else if (this == layer_tree_impl()->OuterViewportContainerLayer()) | 616 else if (this == layer_tree_impl()->OuterViewportContainerLayer()) |
| 613 property_trees->SetOuterViewportContainerBoundsDelta(bounds_delta); | 617 property_trees->SetOuterViewportContainerBoundsDelta(bounds_delta); |
| 614 else if (this == layer_tree_impl()->InnerViewportScrollLayer()) | 618 else if (this == layer_tree_impl()->InnerViewportScrollLayer()) |
| 615 property_trees->SetInnerViewportScrollBoundsDelta(bounds_delta); | 619 property_trees->SetInnerViewportScrollBoundsDelta(bounds_delta); |
| 616 | 620 |
| 617 layer_tree_impl()->DidUpdateScrollState(id()); | 621 layer_tree_impl()->DidUpdateScrollState(id()); |
| 618 | 622 |
| 619 if (masks_to_bounds()) { | 623 if (masks_to_bounds()) { |
| 620 // If layer is clipping, then update the clip node using the new bounds. | 624 // If layer is clipping, then update the clip node using the new bounds. |
| 621 ClipNode* clip_node = property_trees->clip_tree.Node(clip_tree_index()); | 625 if (ClipNode* clip_node = |
| 622 if (clip_node) { | 626 property_trees->clip_tree.UpdateNodeFromOwningLayerId(id())) { |
| 623 DCHECK_EQ(clip_node, GetClipTree().FindNodeFromOwningLayerId(id())); | 627 DCHECK_EQ(clip_node->id, clip_tree_index()); |
| 624 clip_node->clip = gfx::RectF(gfx::PointF() + offset_to_transform_parent(), | 628 clip_node->clip = gfx::RectF(gfx::PointF() + offset_to_transform_parent(), |
| 625 gfx::SizeF(bounds())); | 629 gfx::SizeF(bounds())); |
| 626 property_trees->clip_tree.set_needs_update(true); | 630 property_trees->clip_tree.set_needs_update(true); |
| 627 } | 631 } |
| 628 property_trees->full_tree_damaged = true; | 632 property_trees->full_tree_damaged = true; |
| 629 layer_tree_impl()->set_needs_update_draw_properties(); | 633 layer_tree_impl()->set_needs_update_draw_properties(); |
| 630 } else { | 634 } else { |
| 631 NoteLayerPropertyChanged(); | 635 NoteLayerPropertyChanged(); |
| 632 } | 636 } |
| 633 } | 637 } |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 677 | 681 |
| 678 void LayerImpl::SetMasksToBounds(bool masks_to_bounds) { | 682 void LayerImpl::SetMasksToBounds(bool masks_to_bounds) { |
| 679 masks_to_bounds_ = masks_to_bounds; | 683 masks_to_bounds_ = masks_to_bounds; |
| 680 } | 684 } |
| 681 | 685 |
| 682 void LayerImpl::SetContentsOpaque(bool opaque) { | 686 void LayerImpl::SetContentsOpaque(bool opaque) { |
| 683 contents_opaque_ = opaque; | 687 contents_opaque_ = opaque; |
| 684 } | 688 } |
| 685 | 689 |
| 686 float LayerImpl::Opacity() const { | 690 float LayerImpl::Opacity() const { |
| 687 if (EffectNode* node = GetEffectTree().FindNodeFromOwningLayerId(id())) | 691 if (const EffectNode* node = GetEffectTree().FindNodeFromOwningLayerId(id())) |
| 688 return node->opacity; | 692 return node->opacity; |
| 689 else | 693 else |
| 690 return 1.f; | 694 return 1.f; |
| 691 } | 695 } |
| 692 | 696 |
| 693 const gfx::Transform& LayerImpl::Transform() const { | 697 const gfx::Transform& LayerImpl::Transform() const { |
| 694 DCHECK_NE(GetTransformTree().FindNodeFromOwningLayerId(id()), nullptr); | 698 DCHECK_NE(GetTransformTree().FindNodeFromOwningLayerId(id()), nullptr); |
| 695 return GetTransformTree().FindNodeFromOwningLayerId(id())->local; | 699 return GetTransformTree().FindNodeFromOwningLayerId(id())->local; |
| 696 } | 700 } |
| 697 | 701 |
| (...skipping 356 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1054 | 1058 |
| 1055 ScrollTree& LayerImpl::GetScrollTree() const { | 1059 ScrollTree& LayerImpl::GetScrollTree() const { |
| 1056 return GetPropertyTrees()->scroll_tree; | 1060 return GetPropertyTrees()->scroll_tree; |
| 1057 } | 1061 } |
| 1058 | 1062 |
| 1059 TransformTree& LayerImpl::GetTransformTree() const { | 1063 TransformTree& LayerImpl::GetTransformTree() const { |
| 1060 return GetPropertyTrees()->transform_tree; | 1064 return GetPropertyTrees()->transform_tree; |
| 1061 } | 1065 } |
| 1062 | 1066 |
| 1063 } // namespace cc | 1067 } // namespace cc |
| OLD | NEW |