OLD | NEW |
1 // Copyright 2010 The Chromium Authors. All rights reserved. | 1 // Copyright 2010 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/layer.h" | 5 #include "cc/layer.h" |
6 | 6 |
7 #include "cc/animation.h" | 7 #include "cc/animation.h" |
8 #include "cc/animation_events.h" | 8 #include "cc/animation_events.h" |
9 #include "cc/layer_animation_controller.h" | 9 #include "cc/layer_animation_controller.h" |
10 #include "cc/layer_impl.h" | 10 #include "cc/layer_impl.h" |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
54 , m_automaticallyComputeRasterScale(false) | 54 , m_automaticallyComputeRasterScale(false) |
55 , m_boundsContainPageScale(false) | 55 , m_boundsContainPageScale(false) |
56 , m_layerAnimationDelegate(0) | 56 , m_layerAnimationDelegate(0) |
57 , m_layerScrollClient(0) | 57 , m_layerScrollClient(0) |
58 { | 58 { |
59 if (m_layerId < 0) { | 59 if (m_layerId < 0) { |
60 s_nextLayerId = 1; | 60 s_nextLayerId = 1; |
61 m_layerId = s_nextLayerId++; | 61 m_layerId = s_nextLayerId++; |
62 } | 62 } |
63 | 63 |
64 m_layerAnimationController = LayerAnimationController::create(m_layerId); | 64 m_layerAnimationController = LayerAnimationController::Create(m_layerId); |
65 m_layerAnimationController->addObserver(this); | 65 m_layerAnimationController->AddObserver(this); |
66 addLayerAnimationEventObserver(m_layerAnimationController.get()); | 66 addLayerAnimationEventObserver(m_layerAnimationController.get()); |
67 } | 67 } |
68 | 68 |
69 Layer::~Layer() | 69 Layer::~Layer() |
70 { | 70 { |
71 // Our parent should be holding a reference to us so there should be no | 71 // Our parent should be holding a reference to us so there should be no |
72 // way for us to be destroyed while we still have a parent. | 72 // way for us to be destroyed while we still have a parent. |
73 DCHECK(!parent()); | 73 DCHECK(!parent()); |
74 | 74 |
75 m_layerAnimationController->removeObserver(this); | 75 m_layerAnimationController->RemoveObserver(this); |
76 | 76 |
77 // Remove the parent reference from all children and dependents. | 77 // Remove the parent reference from all children and dependents. |
78 removeAllChildren(); | 78 removeAllChildren(); |
79 if (m_maskLayer) { | 79 if (m_maskLayer) { |
80 DCHECK_EQ(this, m_maskLayer->parent()); | 80 DCHECK_EQ(this, m_maskLayer->parent()); |
81 m_maskLayer->removeFromParent(); | 81 m_maskLayer->removeFromParent(); |
82 } | 82 } |
83 if (m_replicaLayer) { | 83 if (m_replicaLayer) { |
84 DCHECK_EQ(this, m_replicaLayer->parent()); | 84 DCHECK_EQ(this, m_replicaLayer->parent()); |
85 m_replicaLayer->removeFromParent(); | 85 m_replicaLayer->removeFromParent(); |
86 } | 86 } |
87 } | 87 } |
88 | 88 |
89 void Layer::setLayerTreeHost(LayerTreeHost* host) | 89 void Layer::setLayerTreeHost(LayerTreeHost* host) |
90 { | 90 { |
91 if (m_layerTreeHost == host) | 91 if (m_layerTreeHost == host) |
92 return; | 92 return; |
93 | 93 |
94 m_layerTreeHost = host; | 94 m_layerTreeHost = host; |
95 | 95 |
96 for (size_t i = 0; i < m_children.size(); ++i) | 96 for (size_t i = 0; i < m_children.size(); ++i) |
97 m_children[i]->setLayerTreeHost(host); | 97 m_children[i]->setLayerTreeHost(host); |
98 | 98 |
99 if (m_maskLayer) | 99 if (m_maskLayer) |
100 m_maskLayer->setLayerTreeHost(host); | 100 m_maskLayer->setLayerTreeHost(host); |
101 if (m_replicaLayer) | 101 if (m_replicaLayer) |
102 m_replicaLayer->setLayerTreeHost(host); | 102 m_replicaLayer->setLayerTreeHost(host); |
103 | 103 |
104 m_layerAnimationController->setAnimationRegistrar(host ? host->animationRegi
strar() : 0); | 104 m_layerAnimationController->SetAnimationRegistrar(host ? host->animationRegi
strar() : 0); |
105 | 105 |
106 if (host && m_layerAnimationController->hasAnyAnimation()) | 106 if (host && m_layerAnimationController->has_any_animation()) |
107 host->setNeedsCommit(); | 107 host->setNeedsCommit(); |
108 if (host && (!m_filters.isEmpty() || !m_backgroundFilters.isEmpty() || m_fil
ter)) | 108 if (host && (!m_filters.isEmpty() || !m_backgroundFilters.isEmpty() || m_fil
ter)) |
109 m_layerTreeHost->setNeedsFilterContext(); | 109 m_layerTreeHost->setNeedsFilterContext(); |
110 | 110 |
111 } | 111 } |
112 | 112 |
113 void Layer::setNeedsCommit() | 113 void Layer::setNeedsCommit() |
114 { | 114 { |
115 if (m_ignoreSetNeedsCommit) | 115 if (m_ignoreSetNeedsCommit) |
116 return; | 116 return; |
(...skipping 311 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
428 setNeedsCommit(); | 428 setNeedsCommit(); |
429 } | 429 } |
430 | 430 |
431 float Layer::opacity() const | 431 float Layer::opacity() const |
432 { | 432 { |
433 return m_opacity; | 433 return m_opacity; |
434 } | 434 } |
435 | 435 |
436 bool Layer::opacityIsAnimating() const | 436 bool Layer::opacityIsAnimating() const |
437 { | 437 { |
438 return m_layerAnimationController->isAnimatingProperty(Animation::Opacity); | 438 return m_layerAnimationController->IsAnimatingProperty(Animation::Opacity); |
439 } | 439 } |
440 | 440 |
441 void Layer::setContentsOpaque(bool opaque) | 441 void Layer::setContentsOpaque(bool opaque) |
442 { | 442 { |
443 if (m_contentsOpaque == opaque) | 443 if (m_contentsOpaque == opaque) |
444 return; | 444 return; |
445 m_contentsOpaque = opaque; | 445 m_contentsOpaque = opaque; |
446 setNeedsCommit(); | 446 setNeedsCommit(); |
447 } | 447 } |
448 | 448 |
(...skipping 21 matching lines...) Expand all Loading... |
470 setNeedsCommit(); | 470 setNeedsCommit(); |
471 } | 471 } |
472 | 472 |
473 const gfx::Transform& Layer::transform() const | 473 const gfx::Transform& Layer::transform() const |
474 { | 474 { |
475 return m_transform; | 475 return m_transform; |
476 } | 476 } |
477 | 477 |
478 bool Layer::transformIsAnimating() const | 478 bool Layer::transformIsAnimating() const |
479 { | 479 { |
480 return m_layerAnimationController->isAnimatingProperty(Animation::Transform)
; | 480 return m_layerAnimationController->IsAnimatingProperty(Animation::Transform)
; |
481 } | 481 } |
482 | 482 |
483 void Layer::setScrollOffset(gfx::Vector2d scrollOffset) | 483 void Layer::setScrollOffset(gfx::Vector2d scrollOffset) |
484 { | 484 { |
485 if (m_scrollOffset == scrollOffset) | 485 if (m_scrollOffset == scrollOffset) |
486 return; | 486 return; |
487 m_scrollOffset = scrollOffset; | 487 m_scrollOffset = scrollOffset; |
488 if (m_layerScrollClient) | 488 if (m_layerScrollClient) |
489 m_layerScrollClient->didScroll(); | 489 m_layerScrollClient->didScroll(); |
490 setNeedsCommit(); | 490 setNeedsCommit(); |
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
674 DCHECK(layer->sentScrollDelta().IsZero()); | 674 DCHECK(layer->sentScrollDelta().IsZero()); |
675 layer->setScrollDelta(active_twin->scrollDelta() - active_twin->sent
ScrollDelta()); | 675 layer->setScrollDelta(active_twin->scrollDelta() - active_twin->sent
ScrollDelta()); |
676 } | 676 } |
677 } else { | 677 } else { |
678 layer->setScrollDelta(layer->scrollDelta() - layer->sentScrollDelta()); | 678 layer->setScrollDelta(layer->scrollDelta() - layer->sentScrollDelta()); |
679 layer->setSentScrollDelta(gfx::Vector2d()); | 679 layer->setSentScrollDelta(gfx::Vector2d()); |
680 } | 680 } |
681 | 681 |
682 layer->setStackingOrderChanged(m_stackingOrderChanged); | 682 layer->setStackingOrderChanged(m_stackingOrderChanged); |
683 | 683 |
684 m_layerAnimationController->pushAnimationUpdatesTo(layer->layerAnimationCont
roller()); | 684 m_layerAnimationController->PushAnimationUpdatesTo(layer->layerAnimationCont
roller()); |
685 | 685 |
686 // Reset any state that should be cleared for the next update. | 686 // Reset any state that should be cleared for the next update. |
687 m_stackingOrderChanged = false; | 687 m_stackingOrderChanged = false; |
688 m_updateRect = gfx::RectF(); | 688 m_updateRect = gfx::RectF(); |
689 } | 689 } |
690 | 690 |
691 scoped_ptr<LayerImpl> Layer::createLayerImpl(LayerTreeImpl* treeImpl) | 691 scoped_ptr<LayerImpl> Layer::createLayerImpl(LayerTreeImpl* treeImpl) |
692 { | 692 { |
693 return LayerImpl::create(treeImpl, m_layerId); | 693 return LayerImpl::create(treeImpl, m_layerId); |
694 } | 694 } |
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
781 // also being run on the impl thread, there is no need to request a commit t
o push | 781 // also being run on the impl thread, there is no need to request a commit t
o push |
782 // this value over, so set this value directly rather than calling setTransf
orm. | 782 // this value over, so set this value directly rather than calling setTransf
orm. |
783 m_transform = transform; | 783 m_transform = transform; |
784 } | 784 } |
785 | 785 |
786 bool Layer::IsActive() const | 786 bool Layer::IsActive() const |
787 { | 787 { |
788 return true; | 788 return true; |
789 } | 789 } |
790 | 790 |
791 bool Layer::addAnimation(scoped_ptr <Animation> animation) | 791 bool Layer::AddAnimation(scoped_ptr <Animation> animation) |
792 { | 792 { |
793 if (!m_layerAnimationController->animationRegistrar()) | 793 if (!m_layerAnimationController->animation_registrar()) |
794 return false; | 794 return false; |
795 | 795 |
796 m_layerAnimationController->addAnimation(animation.Pass()); | 796 m_layerAnimationController->AddAnimation(animation.Pass()); |
797 setNeedsCommit(); | 797 setNeedsCommit(); |
798 return true; | 798 return true; |
799 } | 799 } |
800 | 800 |
801 void Layer::pauseAnimation(int animationId, double timeOffset) | 801 void Layer::PauseAnimation(int animationId, double timeOffset) |
802 { | 802 { |
803 m_layerAnimationController->pauseAnimation(animationId, timeOffset); | 803 m_layerAnimationController->PauseAnimation(animationId, timeOffset); |
804 setNeedsCommit(); | 804 setNeedsCommit(); |
805 } | 805 } |
806 | 806 |
807 void Layer::removeAnimation(int animationId) | 807 void Layer::RemoveAnimation(int animationId) |
808 { | 808 { |
809 m_layerAnimationController->removeAnimation(animationId); | 809 m_layerAnimationController->RemoveAnimation(animationId); |
810 setNeedsCommit(); | 810 setNeedsCommit(); |
811 } | 811 } |
812 | 812 |
813 void Layer::suspendAnimations(double monotonicTime) | 813 void Layer::suspendAnimations(double monotonicTime) |
814 { | 814 { |
815 m_layerAnimationController->suspendAnimations(monotonicTime); | 815 m_layerAnimationController->SuspendAnimations(monotonicTime); |
816 setNeedsCommit(); | 816 setNeedsCommit(); |
817 } | 817 } |
818 | 818 |
819 void Layer::resumeAnimations(double monotonicTime) | 819 void Layer::resumeAnimations(double monotonicTime) |
820 { | 820 { |
821 m_layerAnimationController->resumeAnimations(monotonicTime); | 821 m_layerAnimationController->ResumeAnimations(monotonicTime); |
822 setNeedsCommit(); | 822 setNeedsCommit(); |
823 } | 823 } |
824 | 824 |
825 void Layer::setLayerAnimationController(scoped_refptr<LayerAnimationController>
layerAnimationController) | 825 void Layer::setLayerAnimationController(scoped_refptr<LayerAnimationController>
layerAnimationController) |
826 { | 826 { |
827 removeLayerAnimationEventObserver(m_layerAnimationController.get()); | 827 removeLayerAnimationEventObserver(m_layerAnimationController.get()); |
828 m_layerAnimationController->removeObserver(this); | 828 m_layerAnimationController->RemoveObserver(this); |
829 m_layerAnimationController = layerAnimationController; | 829 m_layerAnimationController = layerAnimationController; |
830 m_layerAnimationController->setForceSync(); | 830 m_layerAnimationController->set_force_sync(); |
831 m_layerAnimationController->addObserver(this); | 831 m_layerAnimationController->AddObserver(this); |
832 addLayerAnimationEventObserver(m_layerAnimationController.get()); | 832 addLayerAnimationEventObserver(m_layerAnimationController.get()); |
833 setNeedsCommit(); | 833 setNeedsCommit(); |
834 } | 834 } |
835 | 835 |
836 scoped_refptr<LayerAnimationController> Layer::releaseLayerAnimationController() | 836 scoped_refptr<LayerAnimationController> Layer::releaseLayerAnimationController() |
837 { | 837 { |
838 m_layerAnimationController->removeObserver(this); | 838 m_layerAnimationController->RemoveObserver(this); |
839 scoped_refptr<LayerAnimationController> toReturn = m_layerAnimationControlle
r; | 839 scoped_refptr<LayerAnimationController> toReturn = m_layerAnimationControlle
r; |
840 m_layerAnimationController = LayerAnimationController::create(id()); | 840 m_layerAnimationController = LayerAnimationController::Create(id()); |
841 m_layerAnimationController->addObserver(this); | 841 m_layerAnimationController->AddObserver(this); |
842 m_layerAnimationController->setAnimationRegistrar(toReturn->animationRegistr
ar()); | 842 m_layerAnimationController->SetAnimationRegistrar(toReturn->animation_regist
rar()); |
843 return toReturn; | 843 return toReturn; |
844 } | 844 } |
845 | 845 |
846 bool Layer::hasActiveAnimation() const | 846 bool Layer::hasActiveAnimation() const |
847 { | 847 { |
848 return m_layerAnimationController->hasActiveAnimation(); | 848 return m_layerAnimationController->HasActiveAnimation(); |
849 } | 849 } |
850 | 850 |
851 void Layer::notifyAnimationStarted(const AnimationEvent& event, double wallClock
Time) | 851 void Layer::notifyAnimationStarted(const AnimationEvent& event, double wallClock
Time) |
852 { | 852 { |
853 FOR_EACH_OBSERVER(LayerAnimationEventObserver, m_layerAnimationObservers, | 853 FOR_EACH_OBSERVER(LayerAnimationEventObserver, m_layerAnimationObservers, |
854 OnAnimationStarted(event)); | 854 OnAnimationStarted(event)); |
855 if (m_layerAnimationDelegate) | 855 if (m_layerAnimationDelegate) |
856 m_layerAnimationDelegate->notifyAnimationStarted(wallClockTime); | 856 m_layerAnimationDelegate->notifyAnimationStarted(wallClockTime); |
857 } | 857 } |
858 | 858 |
859 void Layer::notifyAnimationFinished(double wallClockTime) | 859 void Layer::notifyAnimationFinished(double wallClockTime) |
860 { | 860 { |
861 if (m_layerAnimationDelegate) | 861 if (m_layerAnimationDelegate) |
862 m_layerAnimationDelegate->notifyAnimationFinished(wallClockTime); | 862 m_layerAnimationDelegate->notifyAnimationFinished(wallClockTime); |
863 } | 863 } |
864 | 864 |
865 void Layer::notifyAnimationPropertyUpdate(const AnimationEvent& event) | 865 void Layer::notifyAnimationPropertyUpdate(const AnimationEvent& event) |
866 { | 866 { |
867 if (event.targetProperty == Animation::Opacity) | 867 if (event.target_property == Animation::Opacity) |
868 setOpacity(event.opacity); | 868 setOpacity(event.opacity); |
869 else | 869 else |
870 setTransform(event.transform); | 870 setTransform(event.transform); |
871 } | 871 } |
872 | 872 |
873 void Layer::addLayerAnimationEventObserver(LayerAnimationEventObserver* animatio
nObserver) | 873 void Layer::addLayerAnimationEventObserver(LayerAnimationEventObserver* animatio
nObserver) |
874 { | 874 { |
875 if (!m_layerAnimationObservers.HasObserver(animationObserver)) | 875 if (!m_layerAnimationObservers.HasObserver(animationObserver)) |
876 m_layerAnimationObservers.AddObserver(animationObserver); | 876 m_layerAnimationObservers.AddObserver(animationObserver); |
877 } | 877 } |
(...skipping 14 matching lines...) Expand all Loading... |
892 { | 892 { |
893 return 0; | 893 return 0; |
894 } | 894 } |
895 | 895 |
896 void sortLayers(std::vector<scoped_refptr<Layer> >::iterator, std::vector<scoped
_refptr<Layer> >::iterator, void*) | 896 void sortLayers(std::vector<scoped_refptr<Layer> >::iterator, std::vector<scoped
_refptr<Layer> >::iterator, void*) |
897 { | 897 { |
898 // Currently we don't use z-order to decide what to paint, so there's no nee
d to actually sort Layers. | 898 // Currently we don't use z-order to decide what to paint, so there's no nee
d to actually sort Layers. |
899 } | 899 } |
900 | 900 |
901 } // namespace cc | 901 } // namespace cc |
OLD | NEW |