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