From 1686a01b6ae7467e71eac247078248de4a3b3423 Mon Sep 17 00:00:00 2001 From: Dan Goodliffe Date: Mon, 13 Dec 2021 23:47:30 +0000 Subject: Refactor to start splitting out UI components --- ui/window.cpp | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 ui/window.cpp (limited to 'ui/window.cpp') diff --git a/ui/window.cpp b/ui/window.cpp new file mode 100644 index 0000000..c451367 --- /dev/null +++ b/ui/window.cpp @@ -0,0 +1,42 @@ +#include "window.h" +#include "ui/inputHandler.h" +#include +#include + +Window::Window(int width, int height, const std::string & title) : + m_window {title.c_str(), static_cast(SDL_WINDOWPOS_CENTERED), static_cast(SDL_WINDOWPOS_CENTERED), width, + height, static_cast(SDL_WINDOW_OPENGL)}, + m_glContext {m_window} +{ + if (glewInit() != GLEW_OK) { + throw std::runtime_error {"Glew failed to initialize!"}; + } + + glEnable(GL_CULL_FACE); + glCullFace(GL_BACK); + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); +} + +void +Window::Clear(float r, float g, float b, float a) const +{ + glClearColor(r, g, b, a); + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); +} + +void +Window::SwapBuffers() const +{ + SDL_GL_SwapWindow(m_window); +} + +bool +Window::handleInput(const SDL_Event & e) +{ + if (SDL_GetWindowID(m_window) == e.window.windowID) { + inputStack.applyOne(&InputHandler::handleInput, e); + return true; + } + return false; +} -- cgit v1.2.3