mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-02-20 00:04:23 -05:00
65 lines
1.5 KiB
C++
65 lines
1.5 KiB
C++
#pragma once
|
|
|
|
#include <string>
|
|
#include <memory>
|
|
#include <SDL2/SDL.h>
|
|
|
|
namespace wowee {
|
|
namespace core {
|
|
|
|
struct WindowConfig {
|
|
std::string title = "Wowee Native";
|
|
int width = 1920;
|
|
int height = 1080;
|
|
bool fullscreen = false;
|
|
bool vsync = true;
|
|
bool resizable = true;
|
|
};
|
|
|
|
class Window {
|
|
public:
|
|
explicit Window(const WindowConfig& config);
|
|
~Window();
|
|
|
|
Window(const Window&) = delete;
|
|
Window& operator=(const Window&) = delete;
|
|
|
|
bool initialize();
|
|
void shutdown();
|
|
|
|
void swapBuffers();
|
|
void pollEvents();
|
|
|
|
bool shouldClose() const { return shouldCloseFlag; }
|
|
void setShouldClose(bool value) { shouldCloseFlag = value; }
|
|
|
|
int getWidth() const { return width; }
|
|
int getHeight() const { return height; }
|
|
void setSize(int w, int h) { width = w; height = h; }
|
|
float getAspectRatio() const { return static_cast<float>(width) / height; }
|
|
bool isFullscreen() const { return fullscreen; }
|
|
bool isVsyncEnabled() const { return vsync; }
|
|
void setFullscreen(bool enable);
|
|
void setVsync(bool enable);
|
|
void applyResolution(int w, int h);
|
|
|
|
SDL_Window* getSDLWindow() const { return window; }
|
|
SDL_GLContext getGLContext() const { return glContext; }
|
|
|
|
private:
|
|
WindowConfig config;
|
|
SDL_Window* window = nullptr;
|
|
SDL_GLContext glContext = nullptr;
|
|
|
|
int width;
|
|
int height;
|
|
int windowedWidth = 0;
|
|
int windowedHeight = 0;
|
|
bool fullscreen = false;
|
|
bool vsync = true;
|
|
bool shouldCloseFlag = false;
|
|
};
|
|
|
|
} // namespace core
|
|
} // namespace wowee
|