From 7f0440cc25fc3ebc711df9fb708a5bffe53bf784 Mon Sep 17 00:00:00 2001 From: Claudius Holeksa Date: Mon, 22 May 2023 00:37:33 +0200 Subject: c++: Initial setup for regular window creation --- src/window/window.h | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 src/window/window.h (limited to 'src/window/window.h') diff --git a/src/window/window.h b/src/window/window.h new file mode 100644 index 0000000..216c866 --- /dev/null +++ b/src/window/window.h @@ -0,0 +1,57 @@ +#pragma once + +#include +#include + +#include +#include + +#include "video_mode.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; + + virtual ~window() = default; + + virtual void show() = 0; + virtual void hide() = 0; + + virtual const video_mode &videoMode() const = 0; + virtual const std::string_view title() const = 0; + + virtual void resize(size_t width, size_t height) = 0; + + virtual conveyor on_event() = 0; +}; +} // namespace saw -- cgit v1.2.3