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 3// found in the LICENSE file. 4 5#include "ui/compositor/scoped_layer_animation_settings.h" 6 7#include "ui/compositor/layer_animation_observer.h" 8#include "ui/compositor/layer_animator.h" 9 10namespace { 11 12const int kDefaultTransitionDurationMs = 200; 13 14} // namespace 15 16namespace ui { 17 18ScopedLayerAnimationSettings::ScopedLayerAnimationSettings( 19 LayerAnimator* animator) 20 : animator_(animator), 21 old_transition_duration_(animator->transition_duration_), 22 old_tween_type_(animator->tween_type()), 23 old_preemption_strategy_(animator->preemption_strategy()) { 24 SetTransitionDuration( 25 base::TimeDelta::FromMilliseconds(kDefaultTransitionDurationMs)); 26} 27 28ScopedLayerAnimationSettings::~ScopedLayerAnimationSettings() { 29 animator_->transition_duration_ = old_transition_duration_; 30 animator_->set_tween_type(old_tween_type_); 31 animator_->set_preemption_strategy(old_preemption_strategy_); 32 33 for (std::set<ImplicitAnimationObserver*>::const_iterator i = 34 observers_.begin(); i != observers_.end(); ++i) { 35 animator_->observers_.RemoveObserver(*i); 36 (*i)->SetActive(true); 37 } 38} 39 40void ScopedLayerAnimationSettings::AddObserver( 41 ImplicitAnimationObserver* observer) { 42 observers_.insert(observer); 43 animator_->AddObserver(observer); 44} 45 46void ScopedLayerAnimationSettings::SetTransitionDuration( 47 base::TimeDelta duration) { 48 animator_->transition_duration_ = duration; 49} 50 51base::TimeDelta ScopedLayerAnimationSettings::GetTransitionDuration() const { 52 return animator_->transition_duration_; 53} 54 55void ScopedLayerAnimationSettings::SetTweenType(Tween::Type tween_type) { 56 animator_->set_tween_type(tween_type); 57} 58 59Tween::Type ScopedLayerAnimationSettings::GetTweenType() const { 60 return animator_->tween_type(); 61} 62 63void ScopedLayerAnimationSettings::SetPreemptionStrategy( 64 LayerAnimator::PreemptionStrategy strategy) { 65 animator_->set_preemption_strategy(strategy); 66} 67 68LayerAnimator::PreemptionStrategy 69ScopedLayerAnimationSettings::GetPreemptionStrategy() const { 70 return animator_->preemption_strategy(); 71} 72 73} // namespace ui 74