OLD | NEW |
| (Empty) |
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_ | |
OLD | NEW |