transform_animation_curve_adapter.h revision 1675a649fd7a8b3cb80ffddae2dc181f122353c5
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 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 49class 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