#include "window.hpp" #include #include static void glfwErrorCallback(int error, const char *message) { SPDLOG_CRITICAL("Error code{}: {}", error, message); } static void framebufferCallback([[maybe_unused]] GLFWwindow *glfWwindow, int width, int height) { glViewport(0, 0, width, height); } gui::Window::Window() { glfwSetErrorCallback(glfwErrorCallback); if (glfwInit() == GLFW_FALSE) { SPDLOG_CRITICAL("GLFW init failed."); throw std::runtime_error("GLFW init failed."); } glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 0); wwindow = std::unique_ptr(glfwCreateWindow(600, 800, "Billy Sheet tracker", nullptr, nullptr), delete_glfw_window); if (!wwindow) { glfwTerminate(); SPDLOG_CRITICAL("No GLFW window created, nullptr."); throw std::runtime_error("GLFW failed. See log."); } glfwMakeContextCurrent(wwindow.get()); glfwSwapInterval(1); // VSync on glfwSetFramebufferSizeCallback(wwindow.get(), framebufferCallback); } bool gui::Window::should_close() const noexcept { return glfwWindowShouldClose(wwindow.get()); } void gui::Window::swap_buffers() const noexcept { glfwSwapBuffers(wwindow.get()); }