| 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 #include "ash/wm/window_animations.h" | 5 #include "ash/wm/window_animations.h" |
| 6 | 6 |
| 7 #include <math.h> | 7 #include <math.h> |
| 8 | |
| 9 #include <algorithm> | 8 #include <algorithm> |
| 9 #include <utility> |
| 10 #include <vector> | 10 #include <vector> |
| 11 | 11 |
| 12 #include "ash/screen_util.h" | 12 #include "ash/screen_util.h" |
| 13 #include "ash/shelf/shelf.h" | 13 #include "ash/shelf/shelf.h" |
| 14 #include "ash/shelf/shelf_layout_manager.h" | 14 #include "ash/shelf/shelf_layout_manager.h" |
| 15 #include "ash/shelf/shelf_widget.h" | 15 #include "ash/shelf/shelf_widget.h" |
| 16 #include "ash/shell.h" | 16 #include "ash/shell.h" |
| 17 #include "ash/wm/window_util.h" | 17 #include "ash/wm/window_util.h" |
| 18 #include "ash/wm/workspace_controller.h" | 18 #include "ash/wm/workspace_controller.h" |
| 19 #include "base/command_line.h" | 19 #include "base/command_line.h" |
| (...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 264 // the layer's animation completes or compositing is aborted due to GPU crash, | 264 // the layer's animation completes or compositing is aborted due to GPU crash, |
| 265 // it deletes the layer and removes itself as an observer. | 265 // it deletes the layer and removes itself as an observer. |
| 266 class CrossFadeObserver : public ui::CompositorObserver, | 266 class CrossFadeObserver : public ui::CompositorObserver, |
| 267 public aura::WindowObserver, | 267 public aura::WindowObserver, |
| 268 public ui::ImplicitAnimationObserver { | 268 public ui::ImplicitAnimationObserver { |
| 269 public: | 269 public: |
| 270 // Observes |window| for destruction, but does not take ownership. | 270 // Observes |window| for destruction, but does not take ownership. |
| 271 // Takes ownership of |layer| and its child layers. | 271 // Takes ownership of |layer| and its child layers. |
| 272 CrossFadeObserver(aura::Window* window, | 272 CrossFadeObserver(aura::Window* window, |
| 273 scoped_ptr<ui::LayerTreeOwner> layer_owner) | 273 scoped_ptr<ui::LayerTreeOwner> layer_owner) |
| 274 : window_(window), | 274 : window_(window), layer_owner_(std::move(layer_owner)) { |
| 275 layer_owner_(layer_owner.Pass()) { | |
| 276 window_->AddObserver(this); | 275 window_->AddObserver(this); |
| 277 layer_owner_->root()->GetCompositor()->AddObserver(this); | 276 layer_owner_->root()->GetCompositor()->AddObserver(this); |
| 278 } | 277 } |
| 279 ~CrossFadeObserver() override { | 278 ~CrossFadeObserver() override { |
| 280 window_->RemoveObserver(this); | 279 window_->RemoveObserver(this); |
| 281 window_ = NULL; | 280 window_ = NULL; |
| 282 layer_owner_->root()->GetCompositor()->RemoveObserver(this); | 281 layer_owner_->root()->GetCompositor()->RemoveObserver(this); |
| 283 } | 282 } |
| 284 | 283 |
| 285 // ui::CompositorObserver overrides: | 284 // ui::CompositorObserver overrides: |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 335 old_transformed_bounds, new_bounds); | 334 old_transformed_bounds, new_bounds); |
| 336 | 335 |
| 337 // Scale up the old layer while translating to new position. | 336 // Scale up the old layer while translating to new position. |
| 338 { | 337 { |
| 339 ui::Layer* old_layer = old_layer_owner->root(); | 338 ui::Layer* old_layer = old_layer_owner->root(); |
| 340 old_layer->GetAnimator()->StopAnimating(); | 339 old_layer->GetAnimator()->StopAnimating(); |
| 341 old_layer->SetTransform(old_transform); | 340 old_layer->SetTransform(old_transform); |
| 342 ui::ScopedLayerAnimationSettings settings(old_layer->GetAnimator()); | 341 ui::ScopedLayerAnimationSettings settings(old_layer->GetAnimator()); |
| 343 | 342 |
| 344 // Animation observer owns the old layer and deletes itself. | 343 // Animation observer owns the old layer and deletes itself. |
| 345 settings.AddObserver(new CrossFadeObserver(window, old_layer_owner.Pass())); | 344 settings.AddObserver( |
| 345 new CrossFadeObserver(window, std::move(old_layer_owner))); |
| 346 settings.SetTransitionDuration(duration); | 346 settings.SetTransitionDuration(duration); |
| 347 settings.SetTweenType(tween_type); | 347 settings.SetTweenType(tween_type); |
| 348 gfx::Transform out_transform; | 348 gfx::Transform out_transform; |
| 349 float scale_x = static_cast<float>(new_bounds.width()) / | 349 float scale_x = static_cast<float>(new_bounds.width()) / |
| 350 static_cast<float>(old_bounds.width()); | 350 static_cast<float>(old_bounds.width()); |
| 351 float scale_y = static_cast<float>(new_bounds.height()) / | 351 float scale_y = static_cast<float>(new_bounds.height()) / |
| 352 static_cast<float>(old_bounds.height()); | 352 static_cast<float>(old_bounds.height()); |
| 353 out_transform.Translate(new_bounds.x() - old_bounds.x(), | 353 out_transform.Translate(new_bounds.x() - old_bounds.x(), |
| 354 new_bounds.y() - old_bounds.y()); | 354 new_bounds.y() - old_bounds.y()); |
| 355 out_transform.Scale(scale_x, scale_y); | 355 out_transform.Scale(scale_x, scale_y); |
| (...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 503 case SHELF_ALIGNMENT_LEFT: | 503 case SHELF_ALIGNMENT_LEFT: |
| 504 return gfx::Rect(work_area.x(), work_area.y(), 0, 0); | 504 return gfx::Rect(work_area.x(), work_area.y(), 0, 0); |
| 505 case SHELF_ALIGNMENT_RIGHT: | 505 case SHELF_ALIGNMENT_RIGHT: |
| 506 return gfx::Rect(work_area.right(), work_area.y(), 0, 0); | 506 return gfx::Rect(work_area.right(), work_area.y(), 0, 0); |
| 507 } | 507 } |
| 508 NOTREACHED(); | 508 NOTREACHED(); |
| 509 return gfx::Rect(); | 509 return gfx::Rect(); |
| 510 } | 510 } |
| 511 | 511 |
| 512 } // namespace ash | 512 } // namespace ash |
| OLD | NEW |