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

Side by Side Diff: ui/compositor/layer_animation_element.cc

Issue 10800020: Add brightness/grayscale animations and use them for OOBE boot transition (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix hide animation Created 8 years, 5 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
OLDNEW
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 #include "ui/compositor/layer_animation_element.h" 5 #include "ui/compositor/layer_animation_element.h"
6 6
7 #include "base/compiler_specific.h" 7 #include "base/compiler_specific.h"
8 #include "ui/base/animation/tween.h" 8 #include "ui/base/animation/tween.h"
9 #include "ui/compositor/layer_animation_delegate.h" 9 #include "ui/compositor/layer_animation_delegate.h"
10 #include "ui/compositor/layer_animator.h" 10 #include "ui/compositor/layer_animator.h"
(...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after
225 properties.insert(LayerAnimationElement::VISIBILITY); 225 properties.insert(LayerAnimationElement::VISIBILITY);
226 return properties; 226 return properties;
227 } 227 }
228 228
229 bool start_; 229 bool start_;
230 const bool target_; 230 const bool target_;
231 231
232 DISALLOW_COPY_AND_ASSIGN(VisibilityTransition); 232 DISALLOW_COPY_AND_ASSIGN(VisibilityTransition);
233 }; 233 };
234 234
235 // BrightnessTransition --------------------------------------------------------
236
237 class BrightnessTransition : public LayerAnimationElement {
238 public:
239 BrightnessTransition(float target, base::TimeDelta duration)
240 : LayerAnimationElement(GetProperties(), duration),
241 start_(0.0f),
242 target_(target) {
243 }
244 virtual ~BrightnessTransition() {}
245
246 protected:
247 virtual void OnStart(LayerAnimationDelegate* delegate) OVERRIDE {
248 start_ = delegate->GetBrightnessForAnimation();
249 }
250
251 virtual bool OnProgress(double t, LayerAnimationDelegate* delegate) OVERRIDE {
252 delegate->SetBrightnessFromAnimation(
253 Tween::ValueBetween(t, start_, target_));
254 return true;
255 }
256
257 virtual void OnGetTarget(TargetValue* target) const OVERRIDE {
258 target->brightness = target_;
259 }
260
261 virtual void OnAbort() OVERRIDE {}
262
263 private:
264 static AnimatableProperties GetProperties() {
265 AnimatableProperties properties;
266 properties.insert(LayerAnimationElement::BRIGHTNESS);
267 return properties;
268 }
269
270 float start_;
271 const float target_;
272
273 DISALLOW_COPY_AND_ASSIGN(BrightnessTransition);
274 };
275
276 // GrayscaleTransition ---------------------------------------------------------
277
278 class GrayscaleTransition : public LayerAnimationElement {
279 public:
280 GrayscaleTransition(float target, base::TimeDelta duration)
281 : LayerAnimationElement(GetProperties(), duration),
282 start_(0.0f),
283 target_(target) {
284 }
285 virtual ~GrayscaleTransition() {}
286
287 protected:
288 virtual void OnStart(LayerAnimationDelegate* delegate) OVERRIDE {
289 start_ = delegate->GetGrayscaleForAnimation();
290 }
291
292 virtual bool OnProgress(double t, LayerAnimationDelegate* delegate) OVERRIDE {
293 delegate->SetGrayscaleFromAnimation(
294 Tween::ValueBetween(t, start_, target_));
295 return true;
296 }
297
298 virtual void OnGetTarget(TargetValue* target) const OVERRIDE {
299 target->grayscale = target_;
300 }
301
302 virtual void OnAbort() OVERRIDE {}
303
304 private:
305 static AnimatableProperties GetProperties() {
306 AnimatableProperties properties;
307 properties.insert(LayerAnimationElement::GRAYSCALE);
308 return properties;
309 }
310
311 float start_;
312 const float target_;
313
314 DISALLOW_COPY_AND_ASSIGN(GrayscaleTransition);
315 };
316
235 } // namespace 317 } // namespace
236 318
237 // LayerAnimationElement::TargetValue ------------------------------------------ 319 // LayerAnimationElement::TargetValue ------------------------------------------
238 320
239 LayerAnimationElement::TargetValue::TargetValue() 321 LayerAnimationElement::TargetValue::TargetValue()
240 : opacity(0.0f), 322 : opacity(0.0f),
241 visibility(false) { 323 visibility(false),
324 brightness(0.0f),
325 grayscale(0.0f) {
242 } 326 }
243 327
244 LayerAnimationElement::TargetValue::TargetValue( 328 LayerAnimationElement::TargetValue::TargetValue(
245 const LayerAnimationDelegate* delegate) 329 const LayerAnimationDelegate* delegate)
246 : bounds(delegate ? delegate->GetBoundsForAnimation() : gfx::Rect()), 330 : bounds(delegate ? delegate->GetBoundsForAnimation() : gfx::Rect()),
247 transform(delegate ? delegate->GetTransformForAnimation() : Transform()), 331 transform(delegate ? delegate->GetTransformForAnimation() : Transform()),
248 opacity(delegate ? delegate->GetOpacityForAnimation() : 0.0f), 332 opacity(delegate ? delegate->GetOpacityForAnimation() : 0.0f),
249 visibility(delegate ? delegate->GetVisibilityForAnimation() : false) { 333 visibility(delegate ? delegate->GetVisibilityForAnimation() : false),
334 brightness(delegate ? delegate->GetBrightnessForAnimation() : 0.0f),
335 grayscale(delegate ? delegate->GetGrayscaleForAnimation() : 0.0f) {
250 } 336 }
251 337
252 // LayerAnimationElement ------------------------------------------------------- 338 // LayerAnimationElement -------------------------------------------------------
253 339
254 LayerAnimationElement::LayerAnimationElement( 340 LayerAnimationElement::LayerAnimationElement(
255 const AnimatableProperties& properties, 341 const AnimatableProperties& properties,
256 base::TimeDelta duration) 342 base::TimeDelta duration)
257 : first_frame_(true), 343 : first_frame_(true),
258 properties_(properties), 344 properties_(properties),
259 duration_(GetEffectiveDuration(duration)), 345 duration_(GetEffectiveDuration(duration)),
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
318 return new OpacityTransition(opacity, duration); 404 return new OpacityTransition(opacity, duration);
319 } 405 }
320 406
321 // static 407 // static
322 LayerAnimationElement* LayerAnimationElement::CreateVisibilityElement( 408 LayerAnimationElement* LayerAnimationElement::CreateVisibilityElement(
323 bool visibility, base::TimeDelta duration) { 409 bool visibility, base::TimeDelta duration) {
324 return new VisibilityTransition(visibility, duration); 410 return new VisibilityTransition(visibility, duration);
325 } 411 }
326 412
327 // static 413 // static
414 LayerAnimationElement* LayerAnimationElement::CreateBrightnessElement(
415 float brightness, base::TimeDelta duration) {
416 return new BrightnessTransition(brightness, duration);
417 }
418
419 // static
420 LayerAnimationElement* LayerAnimationElement::CreateGrayscaleElement(
421 float grayscale, base::TimeDelta duration) {
422 return new GrayscaleTransition(grayscale, duration);
423 }
424
425 // static
328 LayerAnimationElement* LayerAnimationElement::CreatePauseElement( 426 LayerAnimationElement* LayerAnimationElement::CreatePauseElement(
329 const AnimatableProperties& properties, base::TimeDelta duration) { 427 const AnimatableProperties& properties, base::TimeDelta duration) {
330 return new Pause(properties, duration); 428 return new Pause(properties, duration);
331 } 429 }
332 430
333 } // namespace ui 431 } // namespace ui
OLDNEW
« no previous file with comments | « ui/compositor/layer_animation_element.h ('k') | ui/compositor/layer_animation_element_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698