Chromium Code Reviews| Index: ash/wm/overview/scoped_transform_overview_window.h |
| diff --git a/ash/wm/overview/scoped_transform_overview_window.h b/ash/wm/overview/scoped_transform_overview_window.h |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..0f8882cf8b82e4dbe4547bda1e57443bd8829cd8 |
| --- /dev/null |
| +++ b/ash/wm/overview/scoped_transform_overview_window.h |
| @@ -0,0 +1,96 @@ |
| +// Copyright 2013 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#ifndef ASH_WM_OVERVIEW_SCOPED_TRANSFORM_OVERVIEW_WINDOW_H_ |
| +#define ASH_WM_OVERVIEW_SCOPED_TRANSFORM_OVERVIEW_WINDOW_H_ |
| + |
| +#include "base/compiler_specific.h" |
| +#include "ui/gfx/rect.h" |
| +#include "ui/gfx/transform.h" |
| + |
| +namespace aura { |
| +class RootWindow; |
| +class Window; |
| +} |
| + |
| +namespace ui { |
| +class Layer; |
| +} |
| + |
| +namespace views { |
| +class Widget; |
| +} |
| + |
| +namespace ash { |
| + |
| +// Manages a window in the overview mode. This class allows transforming the |
| +// window with a helper to determine the best fit in certain bounds and |
| +// copies the window if being moved to another display. The window's state is |
| +// restored on destruction of this object. |
| +class ScopedTransformOverviewWindow { |
| + public: |
| + // The duration of transitions used for window transforms. |
| + static const int kTransitionMilliseconds; |
| + |
| + // Returns the transform necessary to fit |rect| into |bounds| preserving |
| + // aspect ratio and centering. |
| + static gfx::Transform GetTransformForRectPreservingAspectRatio( |
| + const gfx::Rect& rect, const gfx::Rect& bounds); |
|
sky
2013/09/13 21:46:44
nit: one param per line when you wrap.
flackr
2013/09/13 22:28:38
Done.
|
| + |
| + explicit ScopedTransformOverviewWindow(aura::Window* window); |
| + virtual ~ScopedTransformOverviewWindow(); |
| + |
| + // Returns true if this window selector window contains the |target|. This is |
| + // used to determine if an event targetted this window. |
| + bool Contains(const aura::Window* target) const; |
| + |
| + // Restores the window if it was minimized. |
| + void RestoreWindow(); |
| + |
| + // Restores this window on exit rather than returning it to a minimized state |
| + // if it was minimized on entering overview mode. |
| + void RestoreWindowOnExit(); |
| + |
| + // Informs the ScopedTransformOverviewWindow that the window being watched was |
| + // destroyed. This resets the internal window pointer to avoid calling |
| + // anything on the window at destruction time. |
| + void OnWindowDestroyed(); |
| + |
| + // Sets |transform| on the window and a copy of the window if the target |
| + // |root_window| is not the window's root window. |
| + void SetTransform(aura::RootWindow* root_window, |
| + const gfx::Transform& transform); |
| + |
| + aura::Window* window() const { return window_; } |
| + |
| + protected: |
| + // Dispatched when the overview of this window has started. |
| + virtual void OnOverviewStarted(); |
| + |
| + private: |
| + // A weak pointer to the real window in the overview. |
| + aura::Window* window_; |
| + |
| + // A copy of the window used to transition the window to another root. |
| + views::Widget* window_copy_; |
| + |
| + // A weak pointer to a deep copy of the window's layers. |
| + ui::Layer* layer_; |
| + |
| + // If true, the window was minimized and should be restored if the window |
| + // was not selected. |
| + bool minimized_; |
| + |
| + // True if the window has been transformed for overview mode. |
| + bool overview_started_; |
| + |
| + // The original transform of the window before entering overview mode. |
| + gfx::Transform original_transform_; |
| + |
| + DISALLOW_COPY_AND_ASSIGN(ScopedTransformOverviewWindow); |
| +}; |
| + |
| +} // namespace ash |
| + |
| +#endif // ASH_WM_OVERVIEW_SCOPED_TRANSFORM_OVERVIEW_WINDOW_H_ |