Home | History | Annotate | Download | only in animation
      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_BASE_ANIMATION_TWEEN_H_
      6 #define UI_BASE_ANIMATION_TWEEN_H_
      7 
      8 #include "base/basictypes.h"
      9 #include "ui/base/ui_export.h"
     10 #include "ui/gfx/rect.h"
     11 #include "ui/gfx/transform.h"
     12 
     13 namespace ui {
     14 
     15 class UI_EXPORT Tween {
     16  public:
     17   enum Type {
     18     LINEAR,        // Linear.
     19     EASE_OUT,      // Fast in, slow out (default).
     20     EASE_IN,       // Slow in, fast out.
     21     EASE_IN_2,     // Variant of EASE_IN that starts out slower.
     22     EASE_IN_OUT,   // Slow in and out, fast in the middle.
     23     FAST_IN_OUT,   // Fast in and out, slow in the middle.
     24     EASE_OUT_SNAP, // Fast in, slow out, snap to final value.
     25     SMOOTH_IN_OUT, // Smooth, consistent speeds in and out (sine wave).
     26     ZERO,          // Returns a value of 0 always.
     27   };
     28 
     29   // Returns the value based on the tween type. |state| is from 0-1.
     30   static double CalculateValue(Type type, double state);
     31 
     32   // Conveniences for getting a value between a start and end point.
     33   static double ValueBetween(double value, double start, double target);
     34   static int ValueBetween(double value, int start, int target);
     35   static gfx::Rect ValueBetween(double value,
     36                                 const gfx::Rect& start_bounds,
     37                                 const gfx::Rect& target_bounds);
     38   static gfx::Transform ValueBetween(double value,
     39                                 const gfx::Transform& start_transform,
     40                                 const gfx::Transform& target_transform);
     41 
     42  private:
     43   Tween();
     44   ~Tween();
     45 
     46   DISALLOW_COPY_AND_ASSIGN(Tween);
     47 };
     48 
     49 }  // namespace ui
     50 
     51 #endif  // UI_BASE_ANIMATION_TWEEN_H_
     52