Home | History | Annotate | Download | only in animation
      1 // Copyright 2013 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 CC_ANIMATION_SCROLL_OFFSET_ANIMATION_CURVE_H_
      6 #define CC_ANIMATION_SCROLL_OFFSET_ANIMATION_CURVE_H_
      7 
      8 #include "base/memory/scoped_ptr.h"
      9 #include "base/time/time.h"
     10 #include "cc/animation/animation_curve.h"
     11 #include "cc/base/cc_export.h"
     12 
     13 namespace cc {
     14 
     15 class TimingFunction;
     16 
     17 class CC_EXPORT ScrollOffsetAnimationCurve : public AnimationCurve {
     18  public:
     19   static scoped_ptr<ScrollOffsetAnimationCurve> Create(
     20       const gfx::Vector2dF& target_value,
     21       scoped_ptr<TimingFunction> timing_function);
     22 
     23   virtual ~ScrollOffsetAnimationCurve();
     24 
     25   void SetInitialValue(const gfx::Vector2dF& initial_value);
     26   gfx::Vector2dF GetValue(double t) const;
     27   gfx::Vector2dF target_value() const { return target_value_; }
     28   void UpdateTarget(double t, const gfx::Vector2dF& new_target);
     29 
     30   // AnimationCurve implementation
     31   virtual double Duration() const OVERRIDE;
     32   virtual CurveType Type() const OVERRIDE;
     33   virtual scoped_ptr<AnimationCurve> Clone() const OVERRIDE;
     34 
     35  private:
     36   ScrollOffsetAnimationCurve(const gfx::Vector2dF& target_value,
     37                              scoped_ptr <TimingFunction> timing_function);
     38 
     39   gfx::Vector2dF initial_value_;
     40   gfx::Vector2dF target_value_;
     41   base::TimeDelta total_animation_duration_;
     42 
     43   // Time from animation start to most recent UpdateTarget.
     44   base::TimeDelta last_retarget_;
     45 
     46   scoped_ptr<TimingFunction> timing_function_;
     47 
     48   DISALLOW_COPY_AND_ASSIGN(ScrollOffsetAnimationCurve);
     49 };
     50 
     51 }  // namespace cc
     52 
     53 #endif  // CC_ANIMATION_SCROLL_OFFSET_ANIMATION_CURVE_H_
     54