58 lines
945 B
C++
58 lines
945 B
C++
#pragma once
|
|
|
|
#include <forstio/async/async.h>
|
|
#include <forstio/common.h>
|
|
|
|
#include <string_view>
|
|
#include <variant>
|
|
|
|
#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<event::resize, event::keyboard,
|
|
event::mouse, event::mouse_move>;
|
|
|
|
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<variant_event> onevent() = 0;
|
|
};
|
|
} // namespace saw
|