| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 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 "ui/compositor/scoped_layer_animation_settings.h" | 5 #include "ui/compositor/scoped_layer_animation_settings.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include "ui/compositor/layer.h" | 9 #include "ui/compositor/layer.h" |
| 10 #include "ui/compositor/layer_animation_observer.h" | 10 #include "ui/compositor/layer_animation_observer.h" |
| (...skipping 25 matching lines...) Expand all Loading... |
| 36 inverse_layers_.push_back(inverse_layer); | 36 inverse_layers_.push_back(inverse_layer); |
| 37 } | 37 } |
| 38 | 38 |
| 39 void OnImplicitAnimationsCompleted() override {} | 39 void OnImplicitAnimationsCompleted() override {} |
| 40 | 40 |
| 41 void OnLayerAnimationScheduled(LayerAnimationSequence* sequence) override { | 41 void OnLayerAnimationScheduled(LayerAnimationSequence* sequence) override { |
| 42 DCHECK(base_layer_ != NULL) | 42 DCHECK(base_layer_ != NULL) |
| 43 << "Must set base layer with ScopedLayerAnimationSettings::" | 43 << "Must set base layer with ScopedLayerAnimationSettings::" |
| 44 << "SetInverslyAnimatedBaseLayer"; | 44 << "SetInverslyAnimatedBaseLayer"; |
| 45 gfx::Transform base_transform = base_layer_->transform(); | 45 gfx::Transform base_transform = base_layer_->transform(); |
| 46 scoped_ptr<LayerAnimationElement> inverse = GetInverseElement(sequence, | 46 std::unique_ptr<LayerAnimationElement> inverse = |
| 47 base_transform); | 47 GetInverseElement(sequence, base_transform); |
| 48 | 48 |
| 49 for (std::vector<Layer*>::const_iterator i = | 49 for (std::vector<Layer*>::const_iterator i = |
| 50 inverse_layers_.begin(); i != inverse_layers_.end(); ++i) { | 50 inverse_layers_.begin(); i != inverse_layers_.end(); ++i) { |
| 51 (*i)->GetAnimator()->StartAnimation(new LayerAnimationSequence( | 51 (*i)->GetAnimator()->StartAnimation(new LayerAnimationSequence( |
| 52 LayerAnimationElement::CloneInverseTransformElement( | 52 LayerAnimationElement::CloneInverseTransformElement( |
| 53 inverse.get()))); | 53 inverse.get()))); |
| 54 } | 54 } |
| 55 } | 55 } |
| 56 private: | 56 private: |
| 57 scoped_ptr<LayerAnimationElement> GetInverseElement( | 57 std::unique_ptr<LayerAnimationElement> GetInverseElement( |
| 58 LayerAnimationSequence* sequence, | 58 LayerAnimationSequence* sequence, |
| 59 gfx::Transform base) const { | 59 gfx::Transform base) const { |
| 60 const size_t expected_size = 1; | 60 const size_t expected_size = 1; |
| 61 DCHECK_EQ(expected_size, sequence->size()) << | 61 DCHECK_EQ(expected_size, sequence->size()) |
| 62 "Inverse supported only for single element sequences."; | 62 << "Inverse supported only for single element sequences."; |
| 63 | 63 |
| 64 LayerAnimationElement* element = sequence->FirstElement(); | 64 LayerAnimationElement* element = sequence->FirstElement(); |
| 65 DCHECK_EQ(static_cast<LayerAnimationElement::AnimatableProperties>( | 65 DCHECK_EQ(static_cast<LayerAnimationElement::AnimatableProperties>( |
| 66 LayerAnimationElement::TRANSFORM), | 66 LayerAnimationElement::TRANSFORM), |
| 67 element->properties()) | 67 element->properties()) |
| 68 << "Only transform animations are currently invertible."; | 68 << "Only transform animations are currently invertible."; |
| 69 | 69 |
| 70 scoped_ptr<LayerAnimationElement> to_return( | 70 std::unique_ptr<LayerAnimationElement> to_return( |
| 71 LayerAnimationElement::CreateInverseTransformElement(base, element)); | 71 LayerAnimationElement::CreateInverseTransformElement(base, element)); |
| 72 return to_return; | 72 return to_return; |
| 73 } | 73 } |
| 74 | 74 |
| 75 Layer* base_layer_; | 75 Layer* base_layer_; |
| 76 // child layers | 76 // child layers |
| 77 std::vector<Layer*> inverse_layers_; | 77 std::vector<Layer*> inverse_layers_; |
| 78 }; | 78 }; |
| 79 | 79 |
| 80 | 80 |
| 81 // ScopedLayerAnimationSettings ------------------------------------------------ | 81 // ScopedLayerAnimationSettings ------------------------------------------------ |
| 82 ScopedLayerAnimationSettings::ScopedLayerAnimationSettings( | 82 ScopedLayerAnimationSettings::ScopedLayerAnimationSettings( |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 155 } | 155 } |
| 156 inverse_observer_->SetLayer(base); | 156 inverse_observer_->SetLayer(base); |
| 157 } | 157 } |
| 158 | 158 |
| 159 void ScopedLayerAnimationSettings::AddInverselyAnimatedLayer( | 159 void ScopedLayerAnimationSettings::AddInverselyAnimatedLayer( |
| 160 Layer* inverse_layer) { | 160 Layer* inverse_layer) { |
| 161 inverse_observer_->AddInverselyAnimatedLayer(inverse_layer); | 161 inverse_observer_->AddInverselyAnimatedLayer(inverse_layer); |
| 162 } | 162 } |
| 163 | 163 |
| 164 } // namespace ui | 164 } // namespace ui |
| OLD | NEW |