]> git.tdb.fi Git - libs/gui.git/blobdiff - source/graphics/display.h
Extend the video mode API to support multiple monitors
[libs/gui.git] / source / graphics / display.h
index 370bf0dea81013c03d2212ae77e2cfabd9cb7981..8d2f61873495bb4056dd276c25f4f6e65e5fa37c 100644 (file)
@@ -4,6 +4,7 @@
 #include <list>
 #include <stdexcept>
 #include <string>
+#include "monitor.h"
 #include "videomode.h"
 
 namespace Msp {
@@ -17,8 +18,9 @@ public:
        struct Private;
 
 private:
+       std::list<Monitor> monitors;
+       Monitor *primary_monitor;
        std::list<VideoMode> modes;
-       VideoMode orig_mode;
        Private *priv;
 
 public:
@@ -30,11 +32,15 @@ public:
        void add_window(Window &);
        void remove_window(Window &);
 
+       const std::list<Monitor> &get_monitors() const { return monitors; }
        const std::list<VideoMode> &get_modes() const { return modes; }
-       const VideoMode &get_desktop_mode() const { return orig_mode; }
-       void set_mode(const VideoMode &);
-       void restore_mode() { set_mode(orig_mode); }
+       const VideoMode &get_desktop_mode() const;
+       void set_mode(const VideoMode &, bool = false);
+       void restore_mode();
+private:
+       const VideoMode *find_matching_mode(const VideoMode &) const;
 
+public:
        void tick();
 private:
        bool process_events();