scoped_layer_animation_settings.h revision eb525c5499e34cc9c4b825d6d9e75bb07cc06ace
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#ifndef UI_COMPOSITOR_SCOPED_LAYER_ANIMATION_SETTINGS_H_ 6#define UI_COMPOSITOR_SCOPED_LAYER_ANIMATION_SETTINGS_H_ 7 8#include <set> 9 10#include "base/time/time.h" 11 12#include "ui/base/animation/tween.h" 13#include "ui/compositor/compositor_export.h" 14#include "ui/compositor/layer_animator.h" 15 16namespace ui { 17 18class ImplicitAnimationObserver; 19class LayerAnimationObserver; 20 21// Scoped settings allow you to temporarily change the animator's settings and 22// these changes are reverted when the object is destroyed. NOTE: when the 23// settings object is created, it applies the default transition duration 24// (200ms). 25class COMPOSITOR_EXPORT ScopedLayerAnimationSettings { 26 public: 27 explicit ScopedLayerAnimationSettings(LayerAnimator* animator); 28 virtual ~ScopedLayerAnimationSettings(); 29 30 void AddObserver(ImplicitAnimationObserver* observer); 31 32 void SetTransitionDuration(base::TimeDelta duration); 33 base::TimeDelta GetTransitionDuration() const; 34 35 void SetTweenType(Tween::Type tween_type); 36 Tween::Type GetTweenType() const; 37 38 void SetPreemptionStrategy(LayerAnimator::PreemptionStrategy strategy); 39 LayerAnimator::PreemptionStrategy GetPreemptionStrategy() const; 40 41 private: 42 LayerAnimator* animator_; 43 base::TimeDelta old_transition_duration_; 44 Tween::Type old_tween_type_; 45 LayerAnimator::PreemptionStrategy old_preemption_strategy_; 46 std::set<ImplicitAnimationObserver*> observers_; 47 48 DISALLOW_COPY_AND_ASSIGN(ScopedLayerAnimationSettings); 49}; 50 51} // namespace ui 52 53#endif // UI_COMPOSITOR_SCOPED_LAYER_ANIMATION_SETTINGS_H_ 54