From 4fb3a5ae0f53a6fa3f4901f92e64f1de8d2dbb17 Mon Sep 17 00:00:00 2001 From: Dan Goodliffe Date: Sat, 29 Apr 2023 18:50:02 +0100 Subject: Dunno how, but some DOS new lines got in here! --- ui/icon.cpp | 60 ++++++++++----------- ui/icon.h | 38 +++++++------- ui/window.cpp | 166 +++++++++++++++++++++++++++++----------------------------- ui/window.h | 88 +++++++++++++++---------------- 4 files changed, 176 insertions(+), 176 deletions(-) (limited to 'ui') diff --git a/ui/icon.cpp b/ui/icon.cpp index ee88317..be1a63c 100644 --- a/ui/icon.cpp +++ b/ui/icon.cpp @@ -1,30 +1,30 @@ -#include "icon.h" -#include "glArrays.h" -#include -#include -#include -#include - -Icon::Icon(const std::filesystem::path & fileName) : Icon {Image {Resource::mapPath(fileName).c_str(), STBI_rgb_alpha}} -{ -} - -Icon::Icon(const Image & tex) : size {tex.width, tex.height} -{ - glBindTexture(GL_TEXTURE_2D, m_texture); - - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_BORDER); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_BORDER); - - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, static_cast(tex.width), static_cast(tex.height), 0, - GL_RGBA, GL_UNSIGNED_BYTE, tex.data.data()); -} - -void -Icon::Bind() const -{ - glActiveTexture(GL_TEXTURE0); - glBindTexture(GL_TEXTURE_2D, m_texture); -} +#include "icon.h" +#include "glArrays.h" +#include +#include +#include +#include + +Icon::Icon(const std::filesystem::path & fileName) : Icon {Image {Resource::mapPath(fileName).c_str(), STBI_rgb_alpha}} +{ +} + +Icon::Icon(const Image & tex) : size {tex.width, tex.height} +{ + glBindTexture(GL_TEXTURE_2D, m_texture); + + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_BORDER); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_BORDER); + + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, static_cast(tex.width), static_cast(tex.height), 0, + GL_RGBA, GL_UNSIGNED_BYTE, tex.data.data()); +} + +void +Icon::Bind() const +{ + glActiveTexture(GL_TEXTURE0); + glBindTexture(GL_TEXTURE_2D, m_texture); +} diff --git a/ui/icon.h b/ui/icon.h index 961c11b..76cd3ae 100644 --- a/ui/icon.h +++ b/ui/icon.h @@ -1,19 +1,19 @@ -#pragma once - -#include -#include -#include - -class Image; - -class Icon { -public: - explicit Icon(const std::filesystem::path & fileName); - explicit Icon(const Image & image); - - void Bind() const; - const glm::vec2 size; - -private: - glTexture m_texture; -}; +#pragma once + +#include +#include +#include + +class Image; + +class Icon { +public: + explicit Icon(const std::filesystem::path & fileName); + explicit Icon(const Image & image); + + void Bind() const; + const glm::vec2 size; + +private: + glTexture m_texture; +}; diff --git a/ui/window.cpp b/ui/window.cpp index 5930292..ad071bb 100644 --- a/ui/window.cpp +++ b/ui/window.cpp @@ -1,83 +1,83 @@ -#include "window.h" -#include "uiComponent.h" -#include "worldOverlay.h" -#include -#include -#include -#include -#include - -Window::GlewInitHelper::GlewInitHelper() -{ - [[maybe_unused]] static auto init = []() { - if (const auto r = glewInit(); r != GLEW_OK) { - throw std::runtime_error {reinterpret_cast(glewGetErrorString(r))}; - } - else { - return r; - } - }(); -} - -Window::Window(size_t width, size_t height, const std::string & title, Uint32 flags) : - size {static_cast(width), static_cast(height)}, m_window {title.c_str(), - static_cast(SDL_WINDOWPOS_CENTERED), - static_cast(SDL_WINDOWPOS_CENTERED), size.x, - size.y, flags}, - glContext {m_window}, uiShader {width, height} -{ -} - -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) { - SDL_Event eAdjusted {e}; - switch (e.type) { - // SDL and OpenGL have coordinates that are vertically opposed. - case SDL_MOUSEBUTTONDOWN: - case SDL_MOUSEBUTTONUP: - eAdjusted.button.y = size.y - e.button.y; - break; - case SDL_MOUSEMOTION: - eAdjusted.motion.y = size.y - e.motion.y; - break; - } - uiComponents.rapplyOne(&UIComponent::handleInput, eAdjusted, UIComponent::Position {{}, size}); - return true; - } - return false; -} - -void -Window::refresh() const -{ - SDL_GL_MakeCurrent(m_window, glContext); - clear(0.0F, 0.0F, 0.0F, 1.0F); - - render(); - - swapBuffers(); -} - -void -Window::render() const -{ - glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glDisable(GL_DEPTH_TEST); - uiComponents.apply(&UIComponent::render, uiShader, UIComponent::Position {}); -} +#include "window.h" +#include "uiComponent.h" +#include "worldOverlay.h" +#include +#include +#include +#include +#include + +Window::GlewInitHelper::GlewInitHelper() +{ + [[maybe_unused]] static auto init = []() { + if (const auto r = glewInit(); r != GLEW_OK) { + throw std::runtime_error {reinterpret_cast(glewGetErrorString(r))}; + } + else { + return r; + } + }(); +} + +Window::Window(size_t width, size_t height, const std::string & title, Uint32 flags) : + size {static_cast(width), static_cast(height)}, m_window {title.c_str(), + static_cast(SDL_WINDOWPOS_CENTERED), + static_cast(SDL_WINDOWPOS_CENTERED), size.x, + size.y, flags}, + glContext {m_window}, uiShader {width, height} +{ +} + +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) { + SDL_Event eAdjusted {e}; + switch (e.type) { + // SDL and OpenGL have coordinates that are vertically opposed. + case SDL_MOUSEBUTTONDOWN: + case SDL_MOUSEBUTTONUP: + eAdjusted.button.y = size.y - e.button.y; + break; + case SDL_MOUSEMOTION: + eAdjusted.motion.y = size.y - e.motion.y; + break; + } + uiComponents.rapplyOne(&UIComponent::handleInput, eAdjusted, UIComponent::Position {{}, size}); + return true; + } + return false; +} + +void +Window::refresh() const +{ + SDL_GL_MakeCurrent(m_window, glContext); + clear(0.0F, 0.0F, 0.0F, 1.0F); + + render(); + + swapBuffers(); +} + +void +Window::render() const +{ + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glDisable(GL_DEPTH_TEST); + uiComponents.apply(&UIComponent::render, uiShader, UIComponent::Position {}); +} diff --git a/ui/window.h b/ui/window.h index cb0118a..8b7d870 100644 --- a/ui/window.h +++ b/ui/window.h @@ -1,44 +1,44 @@ -#pragma once - -#include "chronology.hpp" -#include "collection.hpp" -#include "gfx/gl/uiShader.h" -#include "ptr.hpp" -#include "uiComponent.h" // IWYU pragma: keep -#include -#include -#include -#include - -using SDL_WindowPtr = wrapped_ptrt; -using GL_Context = std::remove_pointer_t; -using SDL_GLContextPtr = wrapped_ptrt; - -class Window { -public: - Window(size_t width, size_t height, const std::string & title, Uint32 flags); - virtual ~Window() = default; - - NO_COPY(Window); - NO_MOVE(Window); - - virtual void tick(TickDuration elapsed) = 0; - void refresh() const; - bool handleInput(const SDL_Event & e); - - void clear(float r, float g, float b, float a) const; - void swapBuffers() const; - -protected: - virtual void render() const; - struct GlewInitHelper { - GlewInitHelper(); - }; - - const glm::ivec2 size; - SDL_WindowPtr m_window; - SDL_GLContextPtr glContext; - GlewInitHelper glewinithelper; - Collection uiComponents; - UIShader uiShader; -}; +#pragma once + +#include "chronology.hpp" +#include "collection.hpp" +#include "gfx/gl/uiShader.h" +#include "ptr.hpp" +#include "uiComponent.h" // IWYU pragma: keep +#include +#include +#include +#include + +using SDL_WindowPtr = wrapped_ptrt; +using GL_Context = std::remove_pointer_t; +using SDL_GLContextPtr = wrapped_ptrt; + +class Window { +public: + Window(size_t width, size_t height, const std::string & title, Uint32 flags); + virtual ~Window() = default; + + NO_COPY(Window); + NO_MOVE(Window); + + virtual void tick(TickDuration elapsed) = 0; + void refresh() const; + bool handleInput(const SDL_Event & e); + + void clear(float r, float g, float b, float a) const; + void swapBuffers() const; + +protected: + virtual void render() const; + struct GlewInitHelper { + GlewInitHelper(); + }; + + const glm::ivec2 size; + SDL_WindowPtr m_window; + SDL_GLContextPtr glContext; + GlewInitHelper glewinithelper; + Collection uiComponents; + UIShader uiShader; +}; -- cgit v1.2.3