- add sources.
[platform/framework/web/crosswalk.git] / src / ash / screen_ash.h
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_SCREEN_ASH_H_
6 #define ASH_SCREEN_ASH_H_
7
8 #include "ash/ash_export.h"
9 #include "base/compiler_specific.h"
10 #include "base/observer_list.h"
11 #include "ui/gfx/screen.h"
12
13 namespace gfx {
14 class Rect;
15 }
16
17 namespace ash {
18
19 // Aura implementation of gfx::Screen. Implemented here to avoid circular
20 // dependencies.
21 class ASH_EXPORT ScreenAsh : public gfx::Screen {
22  public:
23   ScreenAsh();
24   virtual ~ScreenAsh();
25
26   // Finds the display that contains |point| in screeen coordinates.
27   // Returns invalid display if there is no display that can satisfy
28   // the condition.
29   static gfx::Display FindDisplayContainingPoint(const gfx::Point& point);
30
31   // Returns the bounds for maximized windows in parent coordinates.
32   // Maximized windows trigger auto-hiding the shelf.
33   static gfx::Rect GetMaximizedWindowBoundsInParent(aura::Window* window);
34
35   // Returns the display bounds in parent coordinates.
36   static gfx::Rect GetDisplayBoundsInParent(aura::Window* window);
37
38   // Returns the display's work area bounds in parent coordinates.
39   static gfx::Rect GetDisplayWorkAreaBoundsInParent(aura::Window* window);
40
41   // Converts |rect| from |window|'s coordinates to the virtual screen
42   // coordinates.
43   static gfx::Rect ConvertRectToScreen(aura::Window* window,
44                                        const gfx::Rect& rect);
45
46   // Converts |rect| from virtual screen coordinates to the |window|'s
47   // coordinates.
48   static gfx::Rect ConvertRectFromScreen(aura::Window* window,
49                                          const gfx::Rect& rect);
50
51   // Returns a gfx::Display object for secondary display. Returns
52   // invalid display if there is no secondary display connected.
53   static const gfx::Display& GetSecondaryDisplay();
54
55   // Returns a gfx::Display object for the specified id.  Returns
56   // invalid display if no such display is connected.
57   static const gfx::Display& GetDisplayForId(int64 display_id);
58
59   // Notifies observers of display configuration changes.
60   void NotifyBoundsChanged(const gfx::Display& display);
61   void NotifyDisplayAdded(const gfx::Display& display);
62   void NotifyDisplayRemoved(const gfx::Display& display);
63
64  protected:
65   // gfx::Screen overrides:
66   virtual bool IsDIPEnabled() OVERRIDE;
67   virtual gfx::Point GetCursorScreenPoint() OVERRIDE;
68   virtual gfx::NativeWindow GetWindowUnderCursor() OVERRIDE;
69   virtual gfx::NativeWindow GetWindowAtScreenPoint(const gfx::Point& point)
70       OVERRIDE;
71   virtual int GetNumDisplays() const OVERRIDE;
72   virtual std::vector<gfx::Display> GetAllDisplays() const OVERRIDE;
73   virtual gfx::Display GetDisplayNearestWindow(
74       gfx::NativeView view) const OVERRIDE;
75   virtual gfx::Display GetDisplayNearestPoint(
76       const gfx::Point& point) const OVERRIDE;
77   virtual gfx::Display GetDisplayMatching(
78       const gfx::Rect& match_rect) const OVERRIDE;
79   virtual gfx::Display GetPrimaryDisplay() const OVERRIDE;
80   virtual void AddObserver(gfx::DisplayObserver* observer) OVERRIDE;
81   virtual void RemoveObserver(gfx::DisplayObserver* observer) OVERRIDE;
82
83  private:
84   ObserverList<gfx::DisplayObserver> observers_;
85
86   DISALLOW_COPY_AND_ASSIGN(ScreenAsh);
87 };
88
89 }  // namespace ash
90
91 #endif  // ASH_SCREEN_ASH_H_