]> git.tdb.fi Git - libs/gui.git/blob - source/graphics/window.h
Consistently label the graphics part as graphics
[libs/gui.git] / source / graphics / window.h
1 #ifndef MSP_GRAPHICS_WINDOW_H_
2 #define MSP_GRAPHICS_WINDOW_H_
3
4 #include <string>
5 #include <sigc++/signal.h>
6 #include "eventsource.h"
7
8 namespace Msp {
9 namespace Graphics {
10
11 class Display;
12
13 struct WindowOptions
14 {
15         unsigned width;
16         unsigned height;
17         bool fullscreen;
18         bool resizable;
19
20         WindowOptions();
21 };
22
23 class Window: public EventSource
24 {
25 public:
26         struct Private;
27         struct Event;
28
29         sigc::signal<void> signal_close;
30
31 protected:
32         Display &display;
33         WindowOptions options;
34         bool visible;
35         bool kbd_autorepeat;
36         bool resizing;
37         Private *priv;
38
39 public:
40         Window(Display &, unsigned w, unsigned h, bool fs = false);
41         Window(Display &, const WindowOptions &);
42 private:
43         void init();
44 public:
45         virtual ~Window();
46
47         void set_title(const std::string &);
48         void reconfigure(const WindowOptions &);
49         void set_keyboard_autorepeat(bool);
50         bool get_keyboard_autorepeat() const { return kbd_autorepeat; }
51         void show_cursor(bool);
52         void warp_pointer(int, int);
53
54         Display &get_display() const { return display; }
55         const WindowOptions &get_options() const { return options; }
56         virtual unsigned get_width() const { return options.width; }
57         virtual unsigned get_height() const { return options.height; }
58         const Private &get_private() const { return *priv; }
59
60         void show();
61         void hide();
62
63         bool event(const Event &evnt);
64 };
65
66 } // namespace Graphics
67 } // namespace Msp
68
69 #endif