Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(150)

Side by Side Diff: ui/base/animation/multi_animation.h

Issue 23531053: ui/base/animation -> ui/gfx/animation (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Merge 2 trunk Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « ui/base/animation/linear_animation.cc ('k') | ui/base/animation/multi_animation.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright (c) 2011 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_MULTI_ANIMATION_H_
6 #define UI_BASE_ANIMATION_MULTI_ANIMATION_H_
7
8 #include <vector>
9
10 #include "ui/base/animation/animation.h"
11 #include "ui/base/animation/tween.h"
12
13 namespace ui {
14
15 // MultiAnimation is an animation that consists of a number of sub animations.
16 // To create a MultiAnimation pass in the parts, invoke Start() and the delegate
17 // is notified as the animation progresses. By default MultiAnimation runs until
18 // Stop is invoked, see |set_continuous()| for details.
19 class UI_EXPORT MultiAnimation : public Animation {
20 public:
21 // Defines part of the animation. Each part consists of the following:
22 //
23 // time_ms: the time of the part.
24 // start_time_ms: the amount of time to offset this part by when calculating
25 // the percented completed.
26 // end_time_ms: the end time used to calculate the percentange completed.
27 //
28 // In most cases |start_time_ms| = 0 and |end_time_ms| = |time_ms|. But you
29 // can adjust the start/end for different effects. For example, to run a part
30 // for 200ms with a % between .25 and .75 use the following three values: 200,
31 // 100, 400.
32 struct Part {
33 Part() : time_ms(0), start_time_ms(0), end_time_ms(0), type(Tween::ZERO) {}
34 Part(int time_ms, Tween::Type type)
35 : time_ms(time_ms),
36 start_time_ms(0),
37 end_time_ms(time_ms),
38 type(type) {}
39
40 int time_ms;
41 int start_time_ms;
42 int end_time_ms;
43 Tween::Type type;
44 };
45
46 typedef std::vector<Part> Parts;
47
48 MultiAnimation(const Parts& parts, base::TimeDelta timer_interval);
49 virtual ~MultiAnimation();
50
51 // Default interval.
52 static base::TimeDelta GetDefaultTimerInterval();
53
54 // Sets whether the animation continues after it reaches the end. If true, the
55 // animation runs until explicitly stopped. The default is true.
56 void set_continuous(bool continuous) { continuous_ = continuous; }
57
58 // Returns the current value. The current value for a MultiAnimation is
59 // determined from the tween type of the current part.
60 virtual double GetCurrentValue() const OVERRIDE;
61
62 // Returns the index of the current part.
63 size_t current_part_index() const { return current_part_index_; }
64
65 protected:
66 // Animation overrides.
67 virtual void Step(base::TimeTicks time_now) OVERRIDE;
68 virtual void SetStartTime(base::TimeTicks start_time) OVERRIDE;
69
70 private:
71 // Returns the part containing the specified time. |time_ms| is reset to be
72 // relative to the part containing the time and |part_index| the index of the
73 // part.
74 const Part& GetPart(int* time_ms, size_t* part_index);
75
76 // The parts that make up the animation.
77 const Parts parts_;
78
79 // Total time of all the parts.
80 const int cycle_time_ms_;
81
82 // Current value for the animation.
83 double current_value_;
84
85 // Index of the current part.
86 size_t current_part_index_;
87
88 // See description above setter.
89 bool continuous_;
90
91 DISALLOW_COPY_AND_ASSIGN(MultiAnimation);
92 };
93
94 } // namespace ui
95
96 #endif // UI_BASE_ANIMATION_MULTI_ANIMATION_H_
OLDNEW
« no previous file with comments | « ui/base/animation/linear_animation.cc ('k') | ui/base/animation/multi_animation.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698