#pragma once #include #define GLFW_INCLUDE_NONE #include "GLFW/glfw3.h" namespace cbt { class window { public: explicit window(std::string title, int width, int height); ~window(); auto should_close() const -> bool; auto valid() const -> bool; auto swap_buffers() -> void; auto poll_events() -> void; auto raw() const -> GLFWwindow*; auto stop() -> void; auto screenshot(std::string filepath = "screenshot.png") const -> bool; private: GLFWwindow* m_window = nullptr; bool m_glfw_initialized = false; static auto init_glfw() -> bool; static auto terminate_glfw() -> void; }; }