Home | History | Annotate | Download | only in compositor
      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 
     10 namespace {
     11 
     12 const int kDefaultTransitionDurationMs = 200;
     13 
     14 }  // namespace
     15 
     16 namespace ui {
     17 
     18 ScopedLayerAnimationSettings::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 
     28 ScopedLayerAnimationSettings::~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 
     40 void ScopedLayerAnimationSettings::AddObserver(
     41     ImplicitAnimationObserver* observer) {
     42   observers_.insert(observer);
     43   animator_->AddObserver(observer);
     44 }
     45 
     46 void ScopedLayerAnimationSettings::SetTransitionDuration(
     47     base::TimeDelta duration) {
     48   animator_->transition_duration_ = duration;
     49 }
     50 
     51 base::TimeDelta ScopedLayerAnimationSettings::GetTransitionDuration() const {
     52   return animator_->transition_duration_;
     53 }
     54 
     55 void ScopedLayerAnimationSettings::SetTweenType(Tween::Type tween_type) {
     56   animator_->set_tween_type(tween_type);
     57 }
     58 
     59 Tween::Type ScopedLayerAnimationSettings::GetTweenType() const {
     60   return animator_->tween_type();
     61 }
     62 
     63 void ScopedLayerAnimationSettings::SetPreemptionStrategy(
     64     LayerAnimator::PreemptionStrategy strategy) {
     65   animator_->set_preemption_strategy(strategy);
     66 }
     67 
     68 LayerAnimator::PreemptionStrategy
     69 ScopedLayerAnimationSettings::GetPreemptionStrategy() const {
     70   return animator_->preemption_strategy();
     71 }
     72 
     73 }  // namespace ui
     74