39 void destroy() override;
41 [[nodiscard]]
bool should_close() const override;
43 [[nodiscard]] inline const
WindowState& get_state()
const override
55 m_input_config = config;
60 return m_input_config;
65 [[nodiscard]]
void* get_native_handle()
const override;
67 [[nodiscard]]
void* get_native_display()
const override;
71 void set_title(
const std::string& title)
override;
73 void set_size(uint32_t width, uint32_t height)
override;
75 void set_position(uint32_t x, uint32_t y)
override;
89 void set_graphics_registered(
bool registered)
override;
97 void register_rendering_buffer(std::shared_ptr<Buffers::VKBuffer> buffer)
override;
103 void unregister_rendering_buffer(std::shared_ptr<Buffers::VKBuffer> buffer)
override;
112 void track_frame_command(uint64_t cmd_id)
override;
120 [[nodiscard]]
const std::vector<uint64_t>& get_frame_commands()
const override;
127 void clear_frame_commands()
override;
133 [[nodiscard]] std::vector<std::shared_ptr<Buffers::VKBuffer>> get_rendering_buffers()
const override;
136 GLFWwindow* m_window =
nullptr;
142 std::atomic<bool> m_graphics_registered {
false };
151 void setup_callbacks();
153 static void glfw_window_size_callback(GLFWwindow* window,
int width,
int height);
154 static void glfw_window_close_callback(GLFWwindow* window);
155 static void glfw_window_focus_callback(GLFWwindow* window,
int focused);
156 static void glfw_framebuffer_size_callback(GLFWwindow* window,
int width,
int height);
157 static void glfw_key_callback(GLFWwindow* window,
int key,
int scancode,
int action,
int mods);
158 static void glfw_cursor_pos_callback(GLFWwindow* window,
double xpos,
double ypos);
159 static void glfw_mouse_button_callback(GLFWwindow* window,
int button,
int action,
int mods);
160 static void glfw_scroll_callback(GLFWwindow* window,
double xoffset,
double yoffset);
std::vector< std::weak_ptr< Buffers::VKBuffer > > m_rendering_buffers
bool is_graphics_registered() const override
Check if window is registered with graphics subsystem.
Vruta::EventSource m_event_source
const InputConfig & get_input_config() const override
Get current input configuration.
GlfwWindow(const GlfwWindow &)=delete
WindowCreateInfo m_create_info
void set_input_config(const InputConfig &config) override
Set input configuration (keyboard, mouse, cursor)
const Vruta::EventSource & get_event_source() const override
const WindowCreateInfo & get_create_info() const override
GlfwWindow & operator=(const GlfwWindow &)=delete
GLFWwindow * get_glfw_handle() const
Vruta::EventSource & get_event_source() override
Gets the event source for awaiting events.
InputConfig m_input_config
std::vector< uint64_t > m_frame_commands
WindowEventCallback m_event_callback
std::mutex m_render_tracking_mutex
Platform-agnostic window wrapper.
Platform-agnostic window wrapper.
Awaitable event stream for window events.
std::function< void(const WindowEvent &)> WindowEventCallback
Configuration hints for GLFW initialization.
System-wide configuration for visual stream processing.
Configuration for creating a single window instance.
Runtime state of a window (mutable by system, read by user)