namespace Msp {
namespace GLtk {
+struct DisplayOptions
+{
+ unsigned width;
+ unsigned height;
+ unsigned depth;
+ bool alpha;
+ bool doublebuffer;
+ unsigned multisample;
+ bool fullscreen;
+
+ DisplayOptions();
+};
+
class Window
{
public:
- Window();
+ sigc::signal<int, int, unsigned, unsigned> signal_button_press;
+ sigc::signal<int, int, unsigned, unsigned> signal_button_release;
+ sigc::signal<int, int> signal_pointer_motion;
+ sigc::signal<unsigned, unsigned, wchar_t> signal_key_press;
+ sigc::signal<unsigned, unsigned> signal_key_release;
+
+ Window(unsigned, unsigned);
+ Window(const DisplayOptions &);
+ ~Window();
+
+ unsigned get_width() const { return options.width; }
+ unsigned get_height() const { return options.height; }
+ void show();
+ void add(Widget &);
+ void tick();
private:
Display *display;
- Window window;
+ DisplayOptions options;
+ ::Window window;
+
+ void init(const DisplayOptions &);
+ void process_event(const XEvent &);
};
} // namespace GLtk