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