#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); double getMouseX(); double getMouseY(); double getMouseDX(); double getMouseDY(); void lockCursor(); void unlockCursor(); bool isCursorLocked(); bool isCursorInWindow(); void setRawInput(bool state); bool isRawInput(); void setClipboard(const std::string& str); std::string getClipboard(); void cleanup(); } #endif //BLT_WITH_GRAPHICS_TEMPLATE_WINDOW_H