38 using WindowHandle =
void*;
39 using ProcHandle =
void*;
40 using Callback =
void*;
42 static tenno::shared_ptr<FrameBuffer> framebuffer;
45 static const std::string subsystem_name;
46 std::string name()
override;
47 bool is_initialized()
override;
48 std::expected<void, Subsystem::Error> initialize()
override;
49 std::expected<void, Subsystem::Error> terminate()
override;
59 static int get_width();
60 static int get_height();
61 static bool should_close();
62 static bool is_key_pressed(Key key);
63 static Time get_time();
64 static ProcHandle get_proc_address();
65 static WindowHandle get_window();
66 static tenno::shared_ptr<Window::Driver> get_driver();
72 static void set_mouse_capture(
bool is_captured);
73 static void set_mouse_callback(Callback callback);
74 static void set_size_callback(Callback callback);
75 static void set_mouse_pos_callback(Callback callback);
76 static void set_key_callback(Callback callback);
77 static void set_dimensions(
int width,
int height);
85 static void swap_buffers();
87 static void poll_events();
89 static void update_dimensions();
91 static void make_context_current();
96 static bool initialized;
98 static tenno::shared_ptr<Window::Driver> backend;
113 virtual std::expected<void, std::string> initialize(
const Window::Config &conf) = 0;
114 virtual std::expected<void, std::string> terminate() = 0;
120 virtual int get_width() = 0;
121 virtual int get_height() = 0;
122 virtual bool should_close() = 0;
123 virtual bool is_key_pressed(Key key) = 0;
124 virtual Time get_time() = 0;
125 virtual Window::ProcHandle get_proc_address() = 0;
126 virtual Window::WindowHandle get_window() = 0;
132 virtual void set_mouse_capture(
bool is_captured) = 0;
133 virtual void set_mouse_callback(Window::Callback callback) = 0;
134 virtual void set_size_callback(Window::Callback callback) = 0;
135 virtual void set_mouse_pos_callback(Window::Callback callback) = 0;
136 virtual void set_key_callback(Window::Callback callback) = 0;
137 virtual void set_dimensions(
int width,
int height) = 0;
143 virtual void swap_buffers() = 0;
144 virtual void poll_events() = 0;
145 virtual void update_dimensions() = 0;
146 virtual void set_context_version(
int major,
int minor) = 0;
147 virtual void use_core_profile() = 0;
148 virtual void set_hints_apple() = 0;
149 virtual void create_window(
int width,
int height,
150 const std::string& title) = 0;
151 virtual void make_context_current() = 0;
152 virtual void close() = 0;