Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(464)

Unified Diff: ui/gfx/screen.h

Issue 9960042: Refactor screen/monitor so that gfx::Screen returns monitor object. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: DeviceScaleFactor Created 8 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: ui/gfx/screen.h
diff --git a/ui/gfx/screen.h b/ui/gfx/screen.h
index a451130216815d063dbf266deef258f4339dbebb..a62084368fa3e3b087387c2d073e248c5bff69dd 100644
--- a/ui/gfx/screen.h
+++ b/ui/gfx/screen.h
@@ -13,77 +13,85 @@
namespace gfx {
+class Monitor;
+class MonitorObserver;
+class ScreenImpl;
+
// A utility class for getting various info about screen size, monitors,
-// cursor position, etc.
-// TODO(erikkay) add more of those methods here
+// cursor position, etc. The monitor object returned by Screen's method
+// is valid only until the next |GetMonitorXXX| method is called.
+// TODO(oshima): Implment monitor observers on other platforms and
+// remove above restruction.
class UI_EXPORT Screen {
public:
virtual ~Screen() {}
-#if defined(USE_ASH)
+#if defined(USE_AURA)
// Sets the instance to use. This takes owernship of |screen|, deleting the
// old instance. This is used on aura to avoid circular dependencies between
// ui and aura.
- static void SetInstance(Screen* screen);
+ static void SetInstance(ScreenImpl* screen);
#endif
+ static void AddMonitorObserver(MonitorObserver* observer);
+ static void RemoveMonitorObserver(MonitorObserver* observer);
+
// Returns the current absolute position of the mouse pointer.
static gfx::Point GetCursorScreenPoint();
- // Returns the work area of the monitor nearest the specified window.
- static gfx::Rect GetMonitorWorkAreaNearestWindow(gfx::NativeView view);
-
- // Returns the bounds of the monitor nearest the specified window.
- static gfx::Rect GetMonitorAreaNearestWindow(gfx::NativeView view);
+ // Returns the window under the cursor.
+ static gfx::NativeWindow GetWindowAtCursorScreenPoint();
- // Returns the work area of the monitor nearest the specified point.
- static gfx::Rect GetMonitorWorkAreaNearestPoint(const gfx::Point& point);
+ // Returns the number of monitors.
+ // Mirrored displays are excluded; this method is intended to return the
+ // number of distinct, usable displays.
+ static int GetNumMonitors();
- // Returns the monitor area (not the work area, but the complete bounds) of
- // the monitor nearest the specified point.
- static gfx::Rect GetMonitorAreaNearestPoint(const gfx::Point& point);
+ // Returns the monitor nearest the specified window. See the comment at the
+ // top regarding the life sycle of |gfx::Monitor| object.
+ static const gfx::Monitor* GetMonitorNearestWindow(gfx::NativeView view);
- // Returns the bounds of the work area of the primary monitor.
- static gfx::Rect GetPrimaryMonitorWorkArea();
+ // Returns the the monitor nearest the specified point. See the comment at the
+ // top regarding the life sycle of |gfx::Monitor| object.
+ static const gfx::Monitor* GetMonitorNearestPoint(const gfx::Point& point);
- // Returns the bounds of the primary monitor.
- static gfx::Rect GetPrimaryMonitorBounds();
+ // Returns the bounds of the work area of the primary monitor. See
+ // the comment at the top regarding the life sycle of |gfx::Monitor|
+ // object.
+ static const gfx::Monitor* GetPrimaryMonitor();
- // Returns the bounds of the work area of the monitor that most closely
- // intersects the provided bounds.
- static gfx::Rect GetMonitorWorkAreaMatching(
- const gfx::Rect& match_rect);
+ // Returns the monitor that most closely intersects the provided bounds. See
+ // the comment at the top regarding the life sycle of |gfx::Monitor|
+ // object.
+ static const gfx::Monitor* GetMonitorMatching(const gfx::Rect& match_rect);
- // Returns the window under the cursor.
- static gfx::NativeWindow GetWindowAtCursorScreenPoint();
+ // Utility functions to get Monitor bounds/WorkArea bounds.
+ static gfx::Rect GetMonitorAreaNearestWindow(gfx::NativeView view);
+ static gfx::Rect GetMonitorWorkAreaNearestWindow(gfx::NativeView view);
+ static gfx::Rect GetMonitorAreaNearestPoint(const gfx::Point& point);
+ static gfx::Rect GetMonitorWorkAreaNearestPoint(const gfx::Point& point);
+};
- // Returns the dimensions of the primary monitor in pixels.
- static gfx::Size GetPrimaryMonitorSize();
+#if defined(USE_AURA)
+// A class that provides |gfx::Screen|'s implementation on aura.
+class UI_EXPORT ScreenImpl {
+ public:
+ virtual ~ScreenImpl();
- // Returns the number of monitors.
- // Mirrored displays are excluded; this method is intended to return the
- // number of distinct, usable displays.
- static int GetNumMonitors();
+ virtual gfx::Point GetCursorScreenPoint() = 0;
+ virtual gfx::NativeWindow GetWindowAtCursorScreenPoint() = 0;
- protected:
- virtual gfx::Point GetCursorScreenPointImpl() = 0;
- virtual gfx::Rect GetMonitorWorkAreaNearestWindowImpl(
- gfx::NativeView view) = 0;
- virtual gfx::Rect GetMonitorAreaNearestWindowImpl(
+ virtual int GetNumMonitors() = 0;
+ virtual const gfx::Monitor* GetMonitorNearestWindow(
gfx::NativeView view) = 0;
- virtual gfx::Rect GetMonitorWorkAreaNearestPointImpl(
+ virtual const gfx::Monitor* GetMonitorNearestPoint(
const gfx::Point& point) = 0;
- virtual gfx::Rect GetMonitorAreaNearestPointImpl(const gfx::Point& point) = 0;
- virtual gfx::NativeWindow GetWindowAtCursorScreenPointImpl() = 0;
- virtual gfx::Size GetPrimaryMonitorSizeImpl() = 0;
- virtual int GetNumMonitorsImpl() = 0;
+ virtual const gfx::Monitor* GetPrimaryMonitor() = 0;
-private:
-#if defined(USE_AURA)
- // The singleton screen instance. Only used on aura.
- static Screen* instance_;
-#endif
+ virtual void AddMonitorObserver(MonitorObserver* observer) = 0;
+ virtual void RemoveMonitorObserver(MonitorObserver* observer) = 0;
};
+#endif
} // namespace gfx
« no previous file with comments | « ui/gfx/monitor_observer.cc ('k') | ui/gfx/screen.cc » ('j') | ui/gfx/screen_mac.mm » ('J')

Powered by Google App Engine
This is Rietveld 408576698