]> git.tdb.fi Git - libs/gui.git/blob - source/graphics/display.h
Consistently label the graphics part as graphics
[libs/gui.git] / source / graphics / display.h
1 #ifndef MSP_GRAPHICS_DISPLAY_H_
2 #define MSP_GRAPHICS_DISPLAY_H_
3
4 #include <list>
5 #include <map>
6 #include <stdexcept>
7 #include <string>
8
9 namespace Msp {
10 namespace Graphics {
11
12 class Window;
13
14 struct VideoMode
15 {
16         unsigned width;
17         unsigned height;
18         unsigned rate;
19
20         VideoMode(): width(0), height(0), rate(0) { }
21         VideoMode(unsigned w, unsigned h): width(w), height(h), rate(0) { }
22 };
23
24
25 class unsupported_video_mode: public std::runtime_error
26 {
27 public:
28         unsupported_video_mode(const VideoMode &);
29         virtual ~unsupported_video_mode() throw () { }
30 };
31
32
33 class Display
34 {
35 public:
36         struct Private;
37
38 private:
39         std::list<VideoMode> modes;
40         VideoMode orig_mode;
41         Private *priv;
42
43 public:
44         Display(const std::string &disp_name = std::string());
45         ~Display();
46
47         const Private &get_private() const { return *priv; }
48
49         void add_window(Window &);
50         void remove_window(Window &);
51
52         const std::list<VideoMode> &get_modes() const { return modes; }
53         void set_mode(const VideoMode &);
54         void restore_mode() { set_mode(orig_mode); }
55
56         void tick();
57         void check_error();
58 };
59
60 } // namespace Graphics
61 } // namespace Msp
62
63 #endif