• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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_TRANSFORM_ANIMATION_CURVE_ADAPTER_H_
6 #define UI_COMPOSITOR_TRANSFORM_ANIMATION_CURVE_ADAPTER_H_
7 
8 #include "base/time/time.h"
9 #include "cc/animation/animation_curve.h"
10 #include "ui/compositor/compositor_export.h"
11 #include "ui/gfx/animation/tween.h"
12 #include "ui/gfx/transform.h"
13 #include "ui/gfx/transform_util.h"
14 
15 namespace ui {
16 
17 class COMPOSITOR_EXPORT TransformAnimationCurveAdapter
18     : public cc::TransformAnimationCurve {
19  public:
20   TransformAnimationCurveAdapter(gfx::Tween::Type tween_type,
21                                  gfx::Transform intial_value,
22                                  gfx::Transform target_value,
23                                  base::TimeDelta duration);
24 
25   virtual ~TransformAnimationCurveAdapter();
26 
27   // TransformAnimationCurve implementation.
28   virtual double Duration() const OVERRIDE;
29   virtual scoped_ptr<AnimationCurve> Clone() const OVERRIDE;
30   virtual gfx::Transform GetValue(double t) const OVERRIDE;
31   virtual bool AnimatedBoundsForBox(const gfx::BoxF& box,
32                                     gfx::BoxF* bounds) const OVERRIDE;
33   virtual bool AffectsScale() const OVERRIDE;
34   virtual bool IsTranslation() const OVERRIDE;
35   virtual bool MaximumTargetScale(bool forward_direction,
36                                   float* max_scale) const OVERRIDE;
37 
38  private:
39   gfx::Tween::Type tween_type_;
40   gfx::Transform initial_value_;
41   gfx::Transform target_value_;
42   gfx::DecomposedTransform decomposed_initial_value_;
43   gfx::DecomposedTransform decomposed_target_value_;
44   base::TimeDelta duration_;
45 
46   DISALLOW_ASSIGN(TransformAnimationCurveAdapter);
47 };
48 
49 class COMPOSITOR_EXPORT InverseTransformCurveAdapter
50     : public cc::TransformAnimationCurve {
51  public:
52   InverseTransformCurveAdapter(TransformAnimationCurveAdapter base_curve,
53                                gfx::Transform initial_value,
54                                base::TimeDelta duration);
55 
56   virtual ~InverseTransformCurveAdapter();
57 
58   virtual double Duration() const OVERRIDE;
59   virtual scoped_ptr<AnimationCurve> Clone() const OVERRIDE;
60   virtual gfx::Transform GetValue(double t) const OVERRIDE;
61   virtual bool AnimatedBoundsForBox(const gfx::BoxF& box,
62                                     gfx::BoxF* bounds) const OVERRIDE;
63   virtual bool AffectsScale() const OVERRIDE;
64   virtual bool IsTranslation() const OVERRIDE;
65   virtual bool MaximumTargetScale(bool forward_direction,
66                                   float* max_scale) const OVERRIDE;
67 
68  private:
69   TransformAnimationCurveAdapter base_curve_;
70   gfx::Transform initial_value_;
71   gfx::Transform effective_initial_value_;
72   base::TimeDelta duration_;
73 
74   DISALLOW_ASSIGN(InverseTransformCurveAdapter);
75 };
76 
77 }  // namespace ui
78 
79 #endif  // UI_COMPOSITOR_TRANSFORM_ANIMATION_CURVE_ADAPTER_H_
80 
81