]> git.tdb.fi Git - libs/gltk.git/blob - source/window.h
2b2b0646e5d6ac73d1ec544a352242a5f8ff6aeb
[libs/gltk.git] / source / window.h
1 #ifndef MSP_GLTK_WINDOW_H_
2 #define MSP_GLTK_WINDOW_H_
3
4 #include <X11/X.h>
5
6 namespace Msp {
7 namespace GLtk {
8
9 struct DisplayOptions
10 {
11         unsigned width;
12         unsigned height;
13         unsigned depth;
14         bool alpha;
15         bool doublebuffer;
16         unsigned multisample;
17         bool fullscreen;
18
19         DisplayOptions();
20 };
21
22 class Window
23 {
24 public:
25         sigc::signal<int, int, unsigned, unsigned> signal_button_press;
26         sigc::signal<int, int, unsigned, unsigned> signal_button_release;
27         sigc::signal<int, int> signal_pointer_motion;
28         sigc::signal<unsigned, unsigned, wchar_t> signal_key_press;
29         sigc::signal<unsigned, unsigned> signal_key_release;
30
31         Window(unsigned, unsigned);
32         Window(const DisplayOptions &);
33         ~Window();
34
35         unsigned get_width() const  { return options.width; }
36         unsigned get_height() const { return options.height; }
37         void show();
38         void add(Widget &);
39         void tick();
40 private:
41         Display *display;
42         DisplayOptions options;
43         ::Window  window;
44
45         void init(const DisplayOptions &);
46         void process_event(const XEvent &);
47 };
48
49 } // namespace GLtk
50 } // namespace Msp
51
52 #endif