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

Side by Side Diff: ash/wm/window_animations.cc

Issue 2550933002: Make all LayerAnimationElement::Create*Element return unique_ptr (Closed)
Patch Set: Complete inclusion Created 4 years 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
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 "ash/wm/window_animations.h" 5 #include "ash/wm/window_animations.h"
6 6
7 #include <math.h> 7 #include <math.h>
8 #include <algorithm> 8 #include <algorithm>
9 #include <utility> 9 #include <utility>
10 #include <vector> 10 #include <vector>
11 11
12 #include "ash/aura/wm_window_aura.h" 12 #include "ash/aura/wm_window_aura.h"
13 #include "ash/common/shelf/wm_shelf.h" 13 #include "ash/common/shelf/wm_shelf.h"
14 #include "ash/common/wm/window_animation_types.h" 14 #include "ash/common/wm/window_animation_types.h"
15 #include "ash/common/wm/workspace_controller.h" 15 #include "ash/common/wm/workspace_controller.h"
16 #include "ash/screen_util.h" 16 #include "ash/screen_util.h"
17 #include "ash/wm/window_util.h" 17 #include "ash/wm/window_util.h"
18 #include "base/i18n/rtl.h" 18 #include "base/i18n/rtl.h"
19 #include "base/logging.h" 19 #include "base/logging.h"
20 #include "base/memory/ptr_util.h"
20 #include "base/stl_util.h" 21 #include "base/stl_util.h"
21 #include "base/time/time.h" 22 #include "base/time/time.h"
22 #include "ui/aura/client/aura_constants.h" 23 #include "ui/aura/client/aura_constants.h"
23 #include "ui/aura/window.h" 24 #include "ui/aura/window.h"
24 #include "ui/aura/window_observer.h" 25 #include "ui/aura/window_observer.h"
25 #include "ui/aura/window_property.h" 26 #include "ui/aura/window_property.h"
26 #include "ui/compositor/compositor_observer.h" 27 #include "ui/compositor/compositor_observer.h"
27 #include "ui/compositor/layer.h" 28 #include "ui/compositor/layer.h"
28 #include "ui/compositor/layer_animation_observer.h" 29 #include "ui/compositor/layer_animation_observer.h"
29 #include "ui/compositor/layer_animation_sequence.h" 30 #include "ui/compositor/layer_animation_sequence.h"
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
91 // Recalculate the transform at restore time since the launcher item may have 92 // Recalculate the transform at restore time since the launcher item may have
92 // moved while the window was minimized. 93 // moved while the window was minimized.
93 gfx::Rect bounds = window->bounds(); 94 gfx::Rect bounds = window->bounds();
94 gfx::Rect target_bounds = GetMinimizeAnimationTargetBoundsInScreen(window); 95 gfx::Rect target_bounds = GetMinimizeAnimationTargetBoundsInScreen(window);
95 target_bounds = 96 target_bounds =
96 ScreenUtil::ConvertRectFromScreen(window->parent(), target_bounds); 97 ScreenUtil::ConvertRectFromScreen(window->parent(), target_bounds);
97 98
98 float scale_x = static_cast<float>(target_bounds.width()) / bounds.width(); 99 float scale_x = static_cast<float>(target_bounds.width()) / bounds.width();
99 float scale_y = static_cast<float>(target_bounds.height()) / bounds.height(); 100 float scale_y = static_cast<float>(target_bounds.height()) / bounds.height();
100 101
101 std::unique_ptr<ui::InterpolatedTransform> scale(new ui::InterpolatedScale( 102 std::unique_ptr<ui::InterpolatedTransform> scale =
102 gfx::Point3F(1, 1, 1), gfx::Point3F(scale_x, scale_y, 1))); 103 base::MakeUnique<ui::InterpolatedScale>(
104 gfx::Point3F(1, 1, 1), gfx::Point3F(scale_x, scale_y, 1));
103 105
104 std::unique_ptr<ui::InterpolatedTransform> translation( 106 std::unique_ptr<ui::InterpolatedTransform> translation =
105 new ui::InterpolatedTranslation( 107 base::MakeUnique<ui::InterpolatedTranslation>(
106 gfx::PointF(), gfx::PointF(target_bounds.x() - bounds.x(), 108 gfx::PointF(), gfx::PointF(target_bounds.x() - bounds.x(),
107 target_bounds.y() - bounds.y()))); 109 target_bounds.y() - bounds.y()));
108 110
109 scale->SetChild(translation.release()); 111 scale->SetChild(std::move(translation));
110 scale->SetReversed(show); 112 scale->SetReversed(show);
111 113
112 base::TimeDelta duration = 114 base::TimeDelta duration =
113 window->layer()->GetAnimator()->GetTransitionDuration(); 115 window->layer()->GetAnimator()->GetTransitionDuration();
114 116
115 std::unique_ptr<ui::LayerAnimationElement> transition( 117 std::unique_ptr<ui::LayerAnimationElement> transition =
116 ui::LayerAnimationElement::CreateInterpolatedTransformElement( 118 ui::LayerAnimationElement::CreateInterpolatedTransformElement(
117 scale.release(), duration)); 119 std::move(scale), duration);
118 120
119 transition->set_tween_type(show ? gfx::Tween::EASE_IN 121 transition->set_tween_type(show ? gfx::Tween::EASE_IN
120 : gfx::Tween::EASE_IN_OUT); 122 : gfx::Tween::EASE_IN_OUT);
121 123
122 window->layer()->GetAnimator()->ScheduleAnimation( 124 window->layer()->GetAnimator()->ScheduleAnimation(
123 new ui::LayerAnimationSequence(transition.release())); 125 new ui::LayerAnimationSequence(std::move(transition)));
124 126
125 // When hiding a window, turn off blending until the animation is 3 / 4 done 127 // When hiding a window, turn off blending until the animation is 3 / 4 done
126 // to save bandwidth and reduce jank. 128 // to save bandwidth and reduce jank.
127 if (!show) { 129 if (!show) {
128 window->layer()->GetAnimator()->SchedulePauseForProperties( 130 window->layer()->GetAnimator()->SchedulePauseForProperties(
129 (duration * 3) / 4, ui::LayerAnimationElement::OPACITY); 131 (duration * 3) / 4, ui::LayerAnimationElement::OPACITY);
130 } 132 }
131 133
132 // Fade in and out quickly when the window is small to reduce jank. 134 // Fade in and out quickly when the window is small to reduce jank.
133 float opacity = show ? 1.0f : 0.0f; 135 float opacity = show ? 1.0f : 0.0f;
(...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after
380 return AnimateShowWindow(window); 382 return AnimateShowWindow(window);
381 // Don't start hiding the window again if it's already being hidden. 383 // Don't start hiding the window again if it's already being hidden.
382 return window->layer()->GetTargetOpacity() != 0.0f && 384 return window->layer()->GetTargetOpacity() != 0.0f &&
383 AnimateHideWindow(window); 385 AnimateHideWindow(window);
384 } 386 }
385 387
386 std::vector<ui::LayerAnimationSequence*> 388 std::vector<ui::LayerAnimationSequence*>
387 CreateBrightnessGrayscaleAnimationSequence(float target_value, 389 CreateBrightnessGrayscaleAnimationSequence(float target_value,
388 base::TimeDelta duration) { 390 base::TimeDelta duration) {
389 gfx::Tween::Type animation_type = gfx::Tween::EASE_OUT; 391 gfx::Tween::Type animation_type = gfx::Tween::EASE_OUT;
390 std::unique_ptr<ui::LayerAnimationSequence> brightness_sequence( 392 std::unique_ptr<ui::LayerAnimationSequence> brightness_sequence =
391 new ui::LayerAnimationSequence()); 393 base::MakeUnique<ui::LayerAnimationSequence>();
392 std::unique_ptr<ui::LayerAnimationSequence> grayscale_sequence( 394 std::unique_ptr<ui::LayerAnimationSequence> grayscale_sequence =
393 new ui::LayerAnimationSequence()); 395 base::MakeUnique<ui::LayerAnimationSequence>();
394 396
395 std::unique_ptr<ui::LayerAnimationElement> brightness_element( 397 std::unique_ptr<ui::LayerAnimationElement> brightness_element =
396 ui::LayerAnimationElement::CreateBrightnessElement(target_value, 398 ui::LayerAnimationElement::CreateBrightnessElement(target_value,
397 duration)); 399 duration);
398 brightness_element->set_tween_type(animation_type); 400 brightness_element->set_tween_type(animation_type);
399 brightness_sequence->AddElement(brightness_element.release()); 401 brightness_sequence->AddElement(std::move(brightness_element));
400 402
401 std::unique_ptr<ui::LayerAnimationElement> grayscale_element( 403 std::unique_ptr<ui::LayerAnimationElement> grayscale_element =
402 ui::LayerAnimationElement::CreateGrayscaleElement(target_value, 404 ui::LayerAnimationElement::CreateGrayscaleElement(target_value, duration);
403 duration));
404 grayscale_element->set_tween_type(animation_type); 405 grayscale_element->set_tween_type(animation_type);
405 grayscale_sequence->AddElement(grayscale_element.release()); 406 grayscale_sequence->AddElement(std::move(grayscale_element));
406 407
407 std::vector<ui::LayerAnimationSequence*> animations; 408 std::vector<ui::LayerAnimationSequence*> animations;
408 animations.push_back(brightness_sequence.release()); 409 animations.push_back(brightness_sequence.release());
409 animations.push_back(grayscale_sequence.release()); 410 animations.push_back(grayscale_sequence.release());
410 411
411 return animations; 412 return animations;
412 } 413 }
413 414
414 gfx::Rect GetMinimizeAnimationTargetBoundsInScreen(aura::Window* window) { 415 gfx::Rect GetMinimizeAnimationTargetBoundsInScreen(aura::Window* window) {
415 WmWindow* wm_window = WmWindowAura::Get(window); 416 WmWindow* wm_window = WmWindowAura::Get(window);
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
451 case SHELF_ALIGNMENT_LEFT: 452 case SHELF_ALIGNMENT_LEFT:
452 return gfx::Rect(work_area.x(), work_area.y(), 0, 0); 453 return gfx::Rect(work_area.x(), work_area.y(), 0, 0);
453 case SHELF_ALIGNMENT_RIGHT: 454 case SHELF_ALIGNMENT_RIGHT:
454 return gfx::Rect(work_area.right(), work_area.y(), 0, 0); 455 return gfx::Rect(work_area.right(), work_area.y(), 0, 0);
455 } 456 }
456 NOTREACHED(); 457 NOTREACHED();
457 return gfx::Rect(); 458 return gfx::Rect();
458 } 459 }
459 460
460 } // namespace ash 461 } // namespace ash
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698