// ============================================= // Aster: window.h // Copyright (c) 2020-2024 Anish Bhobe // ============================================= #pragma once #include "global.h" #include "context.h" struct Window final { Window(const std::string_view &_title, Context *_context, vk::Extent2D _extent, b8 _full_screen = false); Window(const Window &_other) = delete; Window(Window &&_other) noexcept; Window &operator=(const Window &_other) = delete; Window &operator=(Window &&_other) noexcept; ~Window(); bool should_close() const noexcept { return glfwWindowShouldClose(window); } bool poll() const noexcept { glfwPollEvents(); return !glfwWindowShouldClose(window); } void set_window_size(const vk::Extent2D &_extent) noexcept { extent = _extent; glfwSetWindowSize(window, extent.width, extent.height); } void set_window_size(const u32 _width, const u32 _height) noexcept { set_window_size({ _width, _height }); } // fields Context *parent_context{}; GLFWwindow *window{ nullptr }; GLFWmonitor *monitor{ nullptr }; vk::SurfaceKHR surface; vk::Extent2D extent; std::string name; b8 full_screen{ false }; };