#pragma once #include "video_mode.hpp #include #include #include #include #include namespace saw { namespace gfx { namespace schema { using namespace saw::schema; using WindowResize = Struct< Member, Member >; using WindowEvents = Union< Member >; } template class window; } } #include "linux_xcb.hpp /** 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 &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 on_event() = 0; }; } // namespace saw */