#pragma once /* * Created by Brett on 28/11/23. * Licensed under GNU General Public License V3.0 * See LICENSE file for license detail */ #ifndef BLT_WITH_GRAPHICS_TEMPLATE_WINDOW_H #define BLT_WITH_GRAPHICS_TEMPLATE_WINDOW_H #include #include #include #include #include #include namespace blt::gfx { struct window_context { std::int32_t GL_MAJOR = 4; std::int32_t GL_MINOR = 6; std::int32_t DOUBLE_BUFFER = GLFW_TRUE; std::int32_t GL_PROFILE = GLFW_OPENGL_CORE_PROFILE; }; struct window_data { std::string title; std::int32_t width; std::int32_t height; std::function init; std::function update; window_context context{}; std::int32_t sync_interval = 0; window_data(std::string title, std::function init, std::function update, std::int32_t width = 640, std::int32_t height = 480): title(std::move(title)), width(width), height(height), init(std::move(init)), update(std::move(update)) {} window_data& setContext(const window_context& ctx) { context = ctx; return *this; } window_data& setSyncInterval(std::int32_t sync) { sync_interval = sync; return *this; } }; void init(const window_data& data); void cleanup(); } #endif //BLT_WITH_GRAPHICS_TEMPLATE_WINDOW_H