X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fgraphics%2Fwindow.h;h=a6fb92b4e8e1eb4db2f0cf46004a3a93cf92d1f6;hb=d7686e3867e3c68cec0d3767a21f9d2408383085;hp=942fc8c984074f72572828e5ed5efee6f43675ab;hpb=5d688fbf457b1f4d3bebde431a7f58c898be584c;p=libs%2Fgui.git diff --git a/source/graphics/window.h b/source/graphics/window.h index 942fc8c..a6fb92b 100644 --- a/source/graphics/window.h +++ b/source/graphics/window.h @@ -3,23 +3,28 @@ #include #include +#include "mspgui_api.h" namespace Msp { namespace Graphics { class Display; +struct Monitor; struct WindowOptions { - unsigned width; - unsigned height; - bool fullscreen; - bool resizable; - - WindowOptions(); + int x = 0; + int y = 0; + bool user_position = false; + unsigned width = 640; + unsigned height = 480; + bool fullscreen = false; + const Monitor *fullscreen_monitor = nullptr; + bool fullscreen_exclusive = true; + bool resizable = false; }; -class Window +class MSPGUI_API Window { public: struct Private; @@ -30,41 +35,63 @@ public: objects instead. */ sigc::signal signal_input_event; + sigc::signal signal_got_focus; + sigc::signal signal_lost_focus; + + sigc::signal signal_move; sigc::signal signal_resize; + sigc::signal signal_expose; sigc::signal signal_close; protected: Display &display; WindowOptions options; - bool visible; - bool kbd_autorepeat; - bool resizing; - Private *priv; + bool visible = false; + bool kbd_autorepeat = true; + bool touch_input = false; + bool resizing = false; + bool moving = false; + Private *priv = nullptr; public: Window(Display &, unsigned w, unsigned h, bool fs = false); Window(Display &, const WindowOptions &); private: void init(); + void platform_init(); + void platform_cleanup(); public: - virtual ~Window(); + ~Window(); void set_title(const std::string &); void reconfigure(const WindowOptions &); +private: + void set_fullscreen_mode(); + void platform_reconfigure(bool); +public: void set_keyboard_autorepeat(bool); bool get_keyboard_autorepeat() const { return kbd_autorepeat; } void show_cursor(bool); void warp_pointer(int, int); + void set_touch_input(bool); +private: + void platform_set_touch_input(); +public: + bool get_touch_input() const { return touch_input; } Display &get_display() const { return display; } const WindowOptions &get_options() const { return options; } - virtual unsigned get_width() const { return options.width; } - virtual unsigned get_height() const { return options.height; } + unsigned get_width() const { return options.width; } + unsigned get_height() const { return options.height; } const Private &get_private() const { return *priv; } void show(); void hide(); +private: + void platform_show(); + void platform_hide(); +public: bool event(const Event &evnt); };