• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
3 // found in the LICENSE file.
4 
5 #ifndef ASH_DISPLAY_SHARED_DISPLAY_EDGE_INDICATOR_H_
6 #define ASH_DISPLAY_SHARED_DISPLAY_EDGE_INDICATOR_H_
7 
8 #include "ash/ash_export.h"
9 #include "base/basictypes.h"
10 #include "base/memory/scoped_ptr.h"
11 #include "ui/gfx/animation/animation_delegate.h"
12 #include "ui/gfx/display.h"
13 
14 namespace gfx {
15 class Rect;
16 class ThrobAnimation;
17 }
18 
19 namespace views {
20 class View;
21 class Widget;
22 }
23 
24 namespace ash {
25 namespace internal {
26 
27 // SharedDisplayEdgeIndicator is responsible for showing a window that indicates
28 // the edge that a window can be dragged into another display.
29 class ASH_EXPORT SharedDisplayEdgeIndicator : public gfx::AnimationDelegate {
30  public:
31   SharedDisplayEdgeIndicator();
32   virtual ~SharedDisplayEdgeIndicator();
33 
34   // Shows/Hides the indicator window. The |src_bounds| is for the window on
35   // the source display, and the |dst_bounds| is for the window on the other
36   // display.
37   void Show(const gfx::Rect& src_bounds, const gfx::Rect& dst_bounds);
38   void Hide();
39 
40   // gfx::AnimationDelegate overrides:
41   virtual void AnimationProgressed(const gfx::Animation* animation) OVERRIDE;
42 
43  private:
44   // Used to show the displays' shared edge where a window can be moved across.
45   // |src_widget_| is for the display where drag starts and |dst_widget_| is
46   // for the other display.
47   views::View* src_indicator_;
48   views::View* dst_indicator_;
49 
50   // Used to transition the opacity.
51   scoped_ptr<gfx::ThrobAnimation> animation_;
52 
53   DISALLOW_COPY_AND_ASSIGN(SharedDisplayEdgeIndicator);
54 };
55 
56 }  // namespace internal
57 }  // namespace ash
58 
59 #endif  // ASH_DISPLAY_SHARED_DISPLAY_EDGE_INDICATOR_H_
60