summaryrefslogtreecommitdiffstats
path: root/ui/compositor/scoped_layer_animation_settings.h
diff options
context:
space:
mode:
Diffstat (limited to 'ui/compositor/scoped_layer_animation_settings.h')
-rw-r--r--ui/compositor/scoped_layer_animation_settings.h54
1 files changed, 54 insertions, 0 deletions
diff --git a/ui/compositor/scoped_layer_animation_settings.h b/ui/compositor/scoped_layer_animation_settings.h
new file mode 100644
index 0000000..5ca4422
--- /dev/null
+++ b/ui/compositor/scoped_layer_animation_settings.h
@@ -0,0 +1,54 @@
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef UI_COMPOSITOR_SCOPED_LAYER_ANIMATION_SETTINGS_H_
+#define UI_COMPOSITOR_SCOPED_LAYER_ANIMATION_SETTINGS_H_
+#pragma once
+
+#include <set>
+
+#include "base/time.h"
+
+#include "ui/base/animation/tween.h"
+#include "ui/compositor/compositor_export.h"
+#include "ui/compositor/layer_animator.h"
+
+namespace ui {
+
+class ImplicitAnimationObserver;
+class LayerAnimationObserver;
+
+// Scoped settings allow you to temporarily change the animator's settings and
+// these changes are reverted when the object is destroyed. NOTE: when the
+// settings object is created, it applies the default transition duration
+// (200ms).
+class COMPOSITOR_EXPORT ScopedLayerAnimationSettings {
+ public:
+ explicit ScopedLayerAnimationSettings(LayerAnimator* animator);
+ virtual ~ScopedLayerAnimationSettings();
+
+ void AddObserver(ImplicitAnimationObserver* observer);
+
+ void SetTransitionDuration(base::TimeDelta duration);
+ base::TimeDelta GetTransitionDuration() const;
+
+ void SetTweenType(Tween::Type tween_type);
+ Tween::Type GetTweenType() const;
+
+ void SetPreemptionStrategy(LayerAnimator::PreemptionStrategy strategy);
+ LayerAnimator::PreemptionStrategy GetPreemptionStrategy() const;
+
+ private:
+ LayerAnimator* animator_;
+ base::TimeDelta old_transition_duration_;
+ Tween::Type old_tween_type_;
+ LayerAnimator::PreemptionStrategy old_preemption_strategy_;
+ std::set<ImplicitAnimationObserver*> observers_;
+
+ DISALLOW_COPY_AND_ASSIGN(ScopedLayerAnimationSettings);
+};
+
+} // namespace ui
+
+#endif // UI_COMPOSITOR_SCOPED_LAYER_ANIMATION_SETTINGS_H_