Program Listing for File window.hpp¶
↰ Return to documentation for file (inexor/vulkan-renderer/wrapper/window.hpp
)
#pragma once
#include <GLFW/glfw3.h>
#include <cstdint>
#include <string>
namespace inexor::vulkan_renderer::wrapper {
class Window {
public:
enum class Mode { WINDOWED, FULLSCREEN, WINDOWED_FULLSCREEN };
private:
std::uint32_t m_width;
std::uint32_t m_height;
Mode m_mode;
GLFWwindow *m_window{nullptr};
public:
Window(const std::string &title, std::uint32_t width, std::uint32_t height, bool visible, bool resizable,
Mode mode);
Window(const Window &) = delete;
Window(Window &&) = delete;
~Window();
Window &operator=(const Window &) = delete;
Window &operator=(Window &&) = delete;
void wait_for_focus();
void set_title(const std::string &title);
// @note Since GLFW is a C-style API, we can't use a class method as callback for window resize.
void set_user_ptr(void *user_ptr);
void set_resize_callback(GLFWframebuffersizefun frame_buffer_resize_callback);
void set_keyboard_button_callback(GLFWkeyfun keyboard_button_callback);
void set_cursor_position_callback(GLFWcursorposfun cursor_pos_callback);
void set_mouse_button_callback(GLFWmousebuttonfun mouse_button_callback);
void set_mouse_scroll_callback(GLFWscrollfun mouse_scroll_callback);
void show();
static void poll();
bool should_close();
[[nodiscard]] GLFWwindow *get() const {
return m_window;
}
[[nodiscard]] std::uint32_t width() const {
return m_width;
}
[[nodiscard]] std::uint32_t height() const {
return m_height;
}
[[nodiscard]] Mode mode() const {
return m_mode;
}
};
} // namespace inexor::vulkan_renderer::wrapper