diff options
author | Claudius "keldu" Holeksa <mail@keldu.de> | 2023-12-04 12:18:14 +0100 |
---|---|---|
committer | Claudius "keldu" Holeksa <mail@keldu.de> | 2023-12-04 12:18:14 +0100 |
commit | a14896f9ed209dd3f9597722e5a5697bd7dbf531 (patch) | |
tree | 089ca5cbbd206d1921f8f6b53292f5bc1902ca5c /modules/window/window.h | |
parent | 84ecdcbca9e55b1f57fbb832e12ff4fdbb86e7c9 (diff) |
meta: Renamed folder containing source
Diffstat (limited to 'modules/window/window.h')
-rw-r--r-- | modules/window/window.h | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/modules/window/window.h b/modules/window/window.h new file mode 100644 index 0000000..36786de --- /dev/null +++ b/modules/window/window.h @@ -0,0 +1,79 @@ +#pragma once + +#include "video_mode.h" + +#include <forstio/async/async.h> +#include <forstio/core/common.h> +#include <forstio/codec/schema.h> + +#include <string_view> +#include <variant> + +namespace saw { +namespace gfx { +namespace schema { +using namespace saw::schema; +using WindowResize = Struct< + Member<UInt32, "width">, + Member<UInt32, "height"> +>; +using WindowEvents = Union< + Member<WindowResize, "resize"> +>; +} + +template<typename T> +class window; +} +} + +#include "linux_xcb.h" + +/** +namespace saw { +class window { +public: + class event { + public: + struct resize { + size_t width; + size_t height; + }; + + struct keyboard { + uint32_t key; + uint32_t scan; + bool pressed; + bool repeat; + }; + + struct mouse { + uint16_t button_mask; + bool pressed; + uint32_t x; + uint32_t y; + }; + + struct mouse_move { + uint32_t x; + uint32_t y; + }; + }; + + using variant_event = std::variant<event::resize, event::keyboard, + event::mouse, event::mouse_move>; + + virtual ~window() = default; + + virtual void show() = 0; + virtual void hide() = 0; + + virtual const video_mode &get_video_mode() const = 0; + virtual const std::string_view title() const = 0; + + virtual void resize(size_t width, size_t height) = 0; + + virtual conveyor<variant_event> on_event() = 0; +}; +} // namespace saw +*/ |