OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef UI_COMPOSITOR_LAYER_ANIMATION_ELEMENT_H_ | 5 #ifndef UI_COMPOSITOR_LAYER_ANIMATION_ELEMENT_H_ |
6 #define UI_COMPOSITOR_LAYER_ANIMATION_ELEMENT_H_ | 6 #define UI_COMPOSITOR_LAYER_ANIMATION_ELEMENT_H_ |
7 | 7 |
8 #include <set> | 8 #include <set> |
9 | 9 |
10 #include "base/memory/weak_ptr.h" | 10 #include "base/memory/weak_ptr.h" |
11 #include "base/time/time.h" | 11 #include "base/time/time.h" |
12 #include "cc/animation/animation.h" | 12 #include "cc/animation/animation.h" |
13 #include "cc/animation/animation_events.h" | 13 #include "cc/animation/animation_events.h" |
14 #include "third_party/skia/include/core/SkColor.h" | 14 #include "third_party/skia/include/core/SkColor.h" |
15 #include "ui/compositor/compositor_export.h" | 15 #include "ui/compositor/compositor_export.h" |
16 #include "ui/gfx/animation/tween.h" | 16 #include "ui/gfx/animation/tween.h" |
| 17 #include "ui/gfx/frame_time.h" |
17 #include "ui/gfx/rect.h" | 18 #include "ui/gfx/rect.h" |
18 #include "ui/gfx/transform.h" | 19 #include "ui/gfx/transform.h" |
19 | 20 |
20 namespace ui { | 21 namespace ui { |
21 | 22 |
22 class InterpolatedTransform; | 23 class InterpolatedTransform; |
23 class LayerAnimationDelegate; | 24 class LayerAnimationDelegate; |
24 | 25 |
25 // LayerAnimationElements represent one segment of an animation between two | 26 // LayerAnimationElements represent one segment of an animation between two |
26 // keyframes. They know how to update a LayerAnimationDelegate given a value | 27 // keyframes. They know how to update a LayerAnimationDelegate given a value |
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
129 | 130 |
130 // Creates an element that transitions to the given color. The caller owns the | 131 // Creates an element that transitions to the given color. The caller owns the |
131 // return value. | 132 // return value. |
132 static LayerAnimationElement* CreateColorElement( | 133 static LayerAnimationElement* CreateColorElement( |
133 SkColor color, | 134 SkColor color, |
134 base::TimeDelta duration); | 135 base::TimeDelta duration); |
135 | 136 |
136 // Sets the start time for the animation. This must be called before the first | 137 // Sets the start time for the animation. This must be called before the first |
137 // call to {Start, IsFinished}. Once the animation is finished, this must | 138 // call to {Start, IsFinished}. Once the animation is finished, this must |
138 // be called again in order to restart the animation. | 139 // be called again in order to restart the animation. |
139 void set_requested_start_time(base::TimeTicks start_time) { | 140 void set_requested_start_time(gfx::FrameTime start_time) { |
140 requested_start_time_ = start_time; | 141 requested_start_time_ = start_time; |
141 } | 142 } |
142 base::TimeTicks requested_start_time() const { return requested_start_time_; } | 143 gfx::FrameTime requested_start_time() const { return requested_start_time_; } |
143 | 144 |
144 // Sets the actual start time for the animation, taking into account any | 145 // Sets the actual start time for the animation, taking into account any |
145 // queueing delays. | 146 // queueing delays. |
146 void set_effective_start_time(base::TimeTicks start_time) { | 147 void set_effective_start_time(gfx::FrameTime start_time) { |
147 effective_start_time_ = start_time; | 148 effective_start_time_ = start_time; |
148 } | 149 } |
149 base::TimeTicks effective_start_time() const { return effective_start_time_; } | 150 gfx::FrameTime effective_start_time() const { return effective_start_time_; } |
150 | 151 |
151 // This must be called before the first call to Progress. If starting the | 152 // This must be called before the first call to Progress. If starting the |
152 // animation involves dispatching to another thread, then this will proceed | 153 // animation involves dispatching to another thread, then this will proceed |
153 // with that dispatch, ultimately resulting in the animation getting an | 154 // with that dispatch, ultimately resulting in the animation getting an |
154 // effective start time (the time the animation starts on the other thread). | 155 // effective start time (the time the animation starts on the other thread). |
155 void Start(LayerAnimationDelegate* delegate, int animation_group_id); | 156 void Start(LayerAnimationDelegate* delegate, int animation_group_id); |
156 | 157 |
157 // Returns true if the animation has started but hasn't finished. | 158 // Returns true if the animation has started but hasn't finished. |
158 bool Started() { return !first_frame_; } | 159 bool Started() { return !first_frame_; } |
159 | 160 |
160 // Updates the delegate to the appropriate value for |now|. Returns true | 161 // Updates the delegate to the appropriate value for |now|. Returns true |
161 // if a redraw is required. | 162 // if a redraw is required. |
162 bool Progress(base::TimeTicks now, LayerAnimationDelegate* delegate); | 163 bool Progress(gfx::FrameTime now, LayerAnimationDelegate* delegate); |
163 | 164 |
164 // If calling Progress now, with the given time, will finish the animation, | 165 // If calling Progress now, with the given time, will finish the animation, |
165 // returns true and sets |end_duration| to the actual duration for this | 166 // returns true and sets |end_duration| to the actual duration for this |
166 // animation, incuding any queueing delays. | 167 // animation, incuding any queueing delays. |
167 bool IsFinished(base::TimeTicks time, base::TimeDelta* total_duration); | 168 bool IsFinished(gfx::FrameTime time, base::TimeDelta* total_duration); |
168 | 169 |
169 // Updates the delegate to the end of the animation. Returns true if a | 170 // Updates the delegate to the end of the animation. Returns true if a |
170 // redraw is required. | 171 // redraw is required. |
171 bool ProgressToEnd(LayerAnimationDelegate* delegate); | 172 bool ProgressToEnd(LayerAnimationDelegate* delegate); |
172 | 173 |
173 // Called if the animation is not allowed to complete. This may be called | 174 // Called if the animation is not allowed to complete. This may be called |
174 // before OnStarted or Progress. | 175 // before OnStarted or Progress. |
175 void Abort(LayerAnimationDelegate* delegate); | 176 void Abort(LayerAnimationDelegate* delegate); |
176 | 177 |
177 // Assigns the target value to |target|. | 178 // Assigns the target value to |target|. |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
213 LayerAnimationElement(const LayerAnimationElement& element); | 214 LayerAnimationElement(const LayerAnimationElement& element); |
214 | 215 |
215 private: | 216 private: |
216 // For debugging purposes, we sometimes alter the duration we actually use. | 217 // For debugging purposes, we sometimes alter the duration we actually use. |
217 // For example, during tests we often set duration = 0, and it is sometimes | 218 // For example, during tests we often set duration = 0, and it is sometimes |
218 // useful to slow animations down to see them more clearly. | 219 // useful to slow animations down to see them more clearly. |
219 base::TimeDelta GetEffectiveDuration(const base::TimeDelta& delta); | 220 base::TimeDelta GetEffectiveDuration(const base::TimeDelta& delta); |
220 | 221 |
221 bool first_frame_; | 222 bool first_frame_; |
222 const AnimatableProperties properties_; | 223 const AnimatableProperties properties_; |
223 base::TimeTicks requested_start_time_; | 224 gfx::FrameTime requested_start_time_; |
224 | 225 |
225 // When the animation actually started, taking into account queueing delays. | 226 // When the animation actually started, taking into account queueing delays. |
226 base::TimeTicks effective_start_time_; | 227 gfx::FrameTime effective_start_time_; |
227 const base::TimeDelta duration_; | 228 const base::TimeDelta duration_; |
228 gfx::Tween::Type tween_type_; | 229 gfx::Tween::Type tween_type_; |
229 | 230 |
230 const int animation_id_; | 231 const int animation_id_; |
231 int animation_group_id_; | 232 int animation_group_id_; |
232 | 233 |
233 double last_progressed_fraction_; | 234 double last_progressed_fraction_; |
234 | 235 |
235 base::WeakPtrFactory<LayerAnimationElement> weak_ptr_factory_; | 236 base::WeakPtrFactory<LayerAnimationElement> weak_ptr_factory_; |
236 | 237 |
237 DISALLOW_ASSIGN(LayerAnimationElement); | 238 DISALLOW_ASSIGN(LayerAnimationElement); |
238 }; | 239 }; |
239 | 240 |
240 } // namespace ui | 241 } // namespace ui |
241 | 242 |
242 #endif // UI_COMPOSITOR_LAYER_ANIMATION_ELEMENT_H_ | 243 #endif // UI_COMPOSITOR_LAYER_ANIMATION_ELEMENT_H_ |
OLD | NEW |