OLD | NEW |
| (Empty) |
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_ | |
OLD | NEW |