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

Side by Side Diff: ui/views/corewm/window_animations.cc

Issue 130983007: Creating multi profile animations for switching users and teleporting of windows. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Addressed Created 6 years, 10 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/views/corewm/window_animations.h" 5 #include "ui/views/corewm/window_animations.h"
6 6
7 #include <math.h> 7 #include <math.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <vector> 10 #include <vector>
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
77 const int kWindowAnimation_Rotate_OpacityDurationPercent = 90; 77 const int kWindowAnimation_Rotate_OpacityDurationPercent = 90;
78 const float kWindowAnimation_Rotate_TranslateY = -20.f; 78 const float kWindowAnimation_Rotate_TranslateY = -20.f;
79 const float kWindowAnimation_Rotate_PerspectiveDepth = 500.f; 79 const float kWindowAnimation_Rotate_PerspectiveDepth = 500.f;
80 const float kWindowAnimation_Rotate_DegreesX = 5.f; 80 const float kWindowAnimation_Rotate_DegreesX = 5.f;
81 const float kWindowAnimation_Rotate_ScaleFactor = .99f; 81 const float kWindowAnimation_Rotate_ScaleFactor = .99f;
82 82
83 const float kWindowAnimation_Bounce_Scale = 1.02f; 83 const float kWindowAnimation_Bounce_Scale = 1.02f;
84 const int kWindowAnimation_Bounce_DurationMS = 180; 84 const int kWindowAnimation_Bounce_DurationMS = 180;
85 const int kWindowAnimation_Bounce_GrowShrinkDurationPercent = 40; 85 const int kWindowAnimation_Bounce_GrowShrinkDurationPercent = 40;
86 86
87 base::TimeDelta GetWindowVisibilityAnimationDuration(aura::Window* window) { 87 base::TimeDelta GetWindowVisibilityAnimationDuration(
88 const aura::Window& window) {
88 int duration = 89 int duration =
89 window->GetProperty(kWindowVisibilityAnimationDurationKey); 90 window.GetProperty(kWindowVisibilityAnimationDurationKey);
90 if (duration == 0 && window->type() == ui::wm::WINDOW_TYPE_MENU) { 91 if (duration == 0 && window.type() == ui::wm::WINDOW_TYPE_MENU) {
91 return base::TimeDelta::FromMilliseconds( 92 return base::TimeDelta::FromMilliseconds(
92 kDefaultAnimationDurationForMenuMS); 93 kDefaultAnimationDurationForMenuMS);
93 } 94 }
94 return TimeDelta::FromInternalValue(duration); 95 return TimeDelta::FromInternalValue(duration);
95 } 96 }
96 97
97 // Gets/sets the WindowVisibilityAnimationType associated with a window. 98 // Gets/sets the WindowVisibilityAnimationType associated with a window.
98 // TODO(beng): redundant/fold into method on public api? 99 // TODO(beng): redundant/fold into method on public api?
99 int GetWindowVisibilityAnimationType(aura::Window* window) { 100 int GetWindowVisibilityAnimationType(aura::Window* window) {
100 int type = window->GetProperty(kWindowVisibilityAnimationTypeKey); 101 int type = window->GetProperty(kWindowVisibilityAnimationTypeKey);
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after
248 249
249 AugmentWindowSize(window, end_transform); 250 AugmentWindowSize(window, end_transform);
250 251
251 window->layer()->SetOpacity(kWindowAnimation_HideOpacity); 252 window->layer()->SetOpacity(kWindowAnimation_HideOpacity);
252 window->layer()->SetTransform(start_transform); 253 window->layer()->SetTransform(start_transform);
253 window->layer()->SetVisible(true); 254 window->layer()->SetVisible(true);
254 255
255 { 256 {
256 // Property sets within this scope will be implicitly animated. 257 // Property sets within this scope will be implicitly animated.
257 ui::ScopedLayerAnimationSettings settings(window->layer()->GetAnimator()); 258 ui::ScopedLayerAnimationSettings settings(window->layer()->GetAnimator());
258 base::TimeDelta duration = GetWindowVisibilityAnimationDuration(window); 259 base::TimeDelta duration = GetWindowVisibilityAnimationDuration(*window);
259 if (duration.ToInternalValue() > 0) 260 if (duration.ToInternalValue() > 0)
260 settings.SetTransitionDuration(duration); 261 settings.SetTransitionDuration(duration);
261 262
262 window->layer()->SetTransform(end_transform); 263 window->layer()->SetTransform(end_transform);
263 window->layer()->SetOpacity(kWindowAnimation_ShowOpacity); 264 window->layer()->SetOpacity(kWindowAnimation_ShowOpacity);
264 } 265 }
265 } 266 }
266 267
267 // Hides a window using an animation, animating its opacity from 1.f to 0.f, 268 // Hides a window using an animation, animating its opacity from 1.f to 0.f,
268 // its visibility to false, and its transform to |end_transform|. 269 // its visibility to false, and its transform to |end_transform|.
269 void AnimateHideWindowCommon(aura::Window* window, 270 void AnimateHideWindowCommon(aura::Window* window,
270 const gfx::Transform& end_transform) { 271 const gfx::Transform& end_transform) {
271 AugmentWindowSize(window, end_transform); 272 AugmentWindowSize(window, end_transform);
272 window->layer()->set_delegate(NULL); 273 window->layer()->set_delegate(NULL);
273 274
274 // Property sets within this scope will be implicitly animated. 275 // Property sets within this scope will be implicitly animated.
275 ui::ScopedLayerAnimationSettings settings(window->layer()->GetAnimator()); 276 ui::ScopedLayerAnimationSettings settings(window->layer()->GetAnimator());
276 settings.AddObserver(new HidingWindowAnimationObserver(window)); 277 settings.AddObserver(new HidingWindowAnimationObserver(window));
277 278
278 base::TimeDelta duration = GetWindowVisibilityAnimationDuration(window); 279 base::TimeDelta duration = GetWindowVisibilityAnimationDuration(*window);
279 if (duration.ToInternalValue() > 0) 280 if (duration.ToInternalValue() > 0)
280 settings.SetTransitionDuration(duration); 281 settings.SetTransitionDuration(duration);
281 282
282 window->layer()->SetOpacity(kWindowAnimation_HideOpacity); 283 window->layer()->SetOpacity(kWindowAnimation_HideOpacity);
283 window->layer()->SetTransform(end_transform); 284 window->layer()->SetTransform(end_transform);
284 window->layer()->SetVisible(false); 285 window->layer()->SetVisible(false);
285 } 286 }
286 287
287 static gfx::Transform GetScaleForWindow(aura::Window* window) { 288 static gfx::Transform GetScaleForWindow(aura::Window* window) {
288 gfx::Rect bounds = window->bounds(); 289 gfx::Rect bounds = window->bounds();
(...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after
521 kWindowVisibilityAnimationTransitionKey); 522 kWindowVisibilityAnimationTransitionKey);
522 return (prop & transition) != 0; 523 return (prop & transition) != 0;
523 } 524 }
524 525
525 void SetWindowVisibilityAnimationDuration(aura::Window* window, 526 void SetWindowVisibilityAnimationDuration(aura::Window* window,
526 const TimeDelta& duration) { 527 const TimeDelta& duration) {
527 window->SetProperty(kWindowVisibilityAnimationDurationKey, 528 window->SetProperty(kWindowVisibilityAnimationDurationKey,
528 static_cast<int>(duration.ToInternalValue())); 529 static_cast<int>(duration.ToInternalValue()));
529 } 530 }
530 531
532 base::TimeDelta GetWindowVisibilityAnimationDuration(
533 const aura::Window& window) {
534 return base::TimeDelta::FromInternalValue(
535 window.GetProperty(kWindowVisibilityAnimationDurationKey));
536 }
537
531 void SetWindowVisibilityAnimationVerticalPosition(aura::Window* window, 538 void SetWindowVisibilityAnimationVerticalPosition(aura::Window* window,
532 float position) { 539 float position) {
533 window->SetProperty(kWindowVisibilityAnimationVerticalPositionKey, position); 540 window->SetProperty(kWindowVisibilityAnimationVerticalPositionKey, position);
534 } 541 }
535 542
536 ui::ImplicitAnimationObserver* CreateHidingWindowAnimationObserver( 543 ui::ImplicitAnimationObserver* CreateHidingWindowAnimationObserver(
537 aura::Window* window) { 544 aura::Window* window) {
538 return new HidingWindowAnimationObserver(window); 545 return new HidingWindowAnimationObserver(window);
539 } 546 }
540 547
(...skipping 20 matching lines...) Expand all
561 568
562 bool WindowAnimationsDisabled(aura::Window* window) { 569 bool WindowAnimationsDisabled(aura::Window* window) {
563 return (window && 570 return (window &&
564 window->GetProperty(aura::client::kAnimationsDisabledKey)) || 571 window->GetProperty(aura::client::kAnimationsDisabledKey)) ||
565 CommandLine::ForCurrentProcess()->HasSwitch( 572 CommandLine::ForCurrentProcess()->HasSwitch(
566 switches::kWindowAnimationsDisabled); 573 switches::kWindowAnimationsDisabled);
567 } 574 }
568 575
569 } // namespace corewm 576 } // namespace corewm
570 } // namespace views 577 } // namespace views
OLDNEW
« chrome/browser/chromeos/login/wallpaper_manager.cc ('K') | « ui/views/corewm/window_animations.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698