transform_animation_curve_adapter.h revision c5cede9ae108bb15f6b7a8aea21c7e1fefa2834c
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 15namespace ui { 16 17class 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 MaximumScale(float* max_scale) const OVERRIDE; 36 37 private: 38 gfx::Tween::Type tween_type_; 39 gfx::Transform initial_value_; 40 gfx::Transform target_value_; 41 gfx::DecomposedTransform decomposed_initial_value_; 42 gfx::DecomposedTransform decomposed_target_value_; 43 base::TimeDelta duration_; 44 45 DISALLOW_ASSIGN(TransformAnimationCurveAdapter); 46}; 47 48class COMPOSITOR_EXPORT InverseTransformCurveAdapter 49 : public cc::TransformAnimationCurve { 50 public: 51 InverseTransformCurveAdapter(TransformAnimationCurveAdapter base_curve, 52 gfx::Transform initial_value, 53 base::TimeDelta duration); 54 55 virtual ~InverseTransformCurveAdapter(); 56 57 virtual double Duration() const OVERRIDE; 58 virtual scoped_ptr<AnimationCurve> Clone() const OVERRIDE; 59 virtual gfx::Transform GetValue(double t) const OVERRIDE; 60 virtual bool AnimatedBoundsForBox(const gfx::BoxF& box, 61 gfx::BoxF* bounds) const OVERRIDE; 62 virtual bool AffectsScale() const OVERRIDE; 63 virtual bool IsTranslation() const OVERRIDE; 64 virtual bool MaximumScale(float* max_scale) const OVERRIDE; 65 66 private: 67 TransformAnimationCurveAdapter base_curve_; 68 gfx::Transform initial_value_; 69 gfx::Transform effective_initial_value_; 70 base::TimeDelta duration_; 71 72 DISALLOW_ASSIGN(InverseTransformCurveAdapter); 73}; 74 75} // namespace ui 76 77#endif // UI_COMPOSITOR_TRANSFORM_ANIMATION_CURVE_ADAPTER_H_ 78 79