diff options
author | Dan Goodliffe <dan@randomdan.homeip.net> | 2024-01-26 17:48:11 +0000 |
---|---|---|
committer | Dan Goodliffe <dan@randomdan.homeip.net> | 2024-01-26 17:48:11 +0000 |
commit | 30f58cc3832bd1b5a5cadf4b0a4a9d47d024f9f7 (patch) | |
tree | 0e347320e8295f03efb3d12bd85e76f838bf51d3 /ui | |
parent | Always set pixel unpack alignment before generating font texture content (diff) | |
download | ilt-30f58cc3832bd1b5a5cadf4b0a4a9d47d024f9f7.tar.bz2 ilt-30f58cc3832bd1b5a5cadf4b0a4a9d47d024f9f7.tar.xz ilt-30f58cc3832bd1b5a5cadf4b0a4a9d47d024f9f7.zip |
Remove the static font cache
Each thing can own/share a font rendering itself
Diffstat (limited to 'ui')
-rw-r--r-- | ui/editNetwork.cpp | 5 | ||||
-rw-r--r-- | ui/editNetwork.h | 2 | ||||
-rw-r--r-- | ui/font.cpp | 2 | ||||
-rw-r--r-- | ui/font.h | 5 | ||||
-rw-r--r-- | ui/gameMainSelector.cpp | 12 | ||||
-rw-r--r-- | ui/gameMainSelector.h | 3 | ||||
-rw-r--r-- | ui/text.cpp | 10 | ||||
-rw-r--r-- | ui/text.h | 3 |
8 files changed, 17 insertions, 25 deletions
diff --git a/ui/editNetwork.cpp b/ui/editNetwork.cpp index 7fbde32..ac2d93d 100644 --- a/ui/editNetwork.cpp +++ b/ui/editNetwork.cpp @@ -8,6 +8,7 @@ #include <gfx/gl/sceneShader.h> #include <gfx/models/texture.h> +const std::filesystem::path fontpath {"/usr/share/fonts/hack/Hack-Regular.ttf"}; constexpr const glm::u8vec4 TRANSPARENT_BLUE {30, 50, 255, 200}; EditNetwork::EditNetwork(Network * n) : @@ -17,7 +18,7 @@ EditNetwork::EditNetwork(Network * n) : {"ui/icon/network.png", mode.toggle<BuilderJoin>()}, {"ui/icon/network.png", mode.toggle<BuilderFreeExtend>()}, }, - blue {1, 1, &TRANSPARENT_BLUE} + blue {1, 1, &TRANSPARENT_BLUE}, font {fontpath, 15} { } @@ -66,7 +67,7 @@ void EditNetwork::render(const UIShader & shader, const UIComponent::Position & parentPos) const { if (builder) { - Text {builder->hint(), {{50, 10}, {0, 15}}, {1, 1, 0}}.render(shader, parentPos); + Text {builder->hint(), font, {{50, 10}, {0, 15}}, {1, 1, 0}}.render(shader, parentPos); } builderToolbar.render(shader, parentPos); } diff --git a/ui/editNetwork.h b/ui/editNetwork.h index 23dcf43..ec06fa7 100644 --- a/ui/editNetwork.h +++ b/ui/editNetwork.h @@ -7,7 +7,6 @@ #include <game/gamestate.h> #include <game/network/network.h> #include <gfx/models/texture.h> -#include <optional> template<typename> class Ray; @@ -43,6 +42,7 @@ private: Mode<Builder::Ptr, ModeSecondClick::NoAction> mode {builder}; Toolbar builderToolbar; Texture blue; + const Font font; }; template<typename T> class EditNetworkOf : public EditNetwork { diff --git a/ui/font.cpp b/ui/font.cpp index f610a1b..237c22d 100644 --- a/ui/font.cpp +++ b/ui/font.cpp @@ -60,8 +60,6 @@ using Face = glRef<FT_Face, }, FT_Done_Face>; -Cache<Font, std::filesystem::path, unsigned int> Font::cachedFontRenderings; - Font::Font(std::filesystem::path p, unsigned s) : path {std::move(p)}, size {getTextureSize(s)} { generateChars(BASIC_CHARS); @@ -1,22 +1,17 @@ #pragma once #include <array> -#include <cache.h> #include <cstddef> -#include <cstdint> #include <filesystem> #include <glArrays.h> #include <glad/gl.h> #include <glm/glm.hpp> #include <map> -#include <string_view> #include <unicode.h> #include <vector> class Font { public: - static Cache<Font, std::filesystem::path, unsigned int> cachedFontRenderings; - Font(std::filesystem::path path, unsigned int height); using Quad = std::array<glm::vec4, 4>; diff --git a/ui/gameMainSelector.cpp b/ui/gameMainSelector.cpp index a577838..5bef48d 100644 --- a/ui/gameMainSelector.cpp +++ b/ui/gameMainSelector.cpp @@ -8,14 +8,16 @@ #include <game/selectable.h> #include <game/worldobject.h> // IWYU pragma: keep #include <gfx/gl/camera.h> -#include <math.h> #include <optional> -#include <span> #include <stream_support.h> #include <typeinfo> -#include <vector> -GameMainSelector::GameMainSelector(const Camera * c, ScreenAbsCoord size) : UIComponent {{{}, size}}, camera {c} { } +const std::filesystem::path fontpath {"/usr/share/fonts/hack/Hack-Regular.ttf"}; + +GameMainSelector::GameMainSelector(const Camera * c, ScreenAbsCoord size) : + UIComponent {{{}, size}}, camera {c}, font {fontpath, 15} +{ +} constexpr ScreenAbsCoord TargetPos {5, 45}; @@ -26,7 +28,7 @@ GameMainSelector::render(const UIShader & shader, const Position & parentPos) co target->render(shader, parentPos + position + TargetPos); } if (!clicked.empty()) { - Text {clicked, {{50, 10}, {0, 15}}, {1, 1, 0}}.render(shader, parentPos); + Text {clicked, font, {{50, 10}, {0, 15}}, {1, 1, 0}}.render(shader, parentPos); } } diff --git a/ui/gameMainSelector.h b/ui/gameMainSelector.h index cc30707..ccf0fa0 100644 --- a/ui/gameMainSelector.h +++ b/ui/gameMainSelector.h @@ -2,7 +2,7 @@ #include "SDL_events.h" #include "config/types.h" -#include "special_members.h" +#include "font.h" #include "uiComponent.h" #include "worldOverlay.h" #include <glm/glm.hpp> @@ -40,5 +40,6 @@ public: private: const Camera * camera; + const Font font; std::string clicked; }; diff --git a/ui/text.cpp b/ui/text.cpp index b776b90..7cb7d30 100644 --- a/ui/text.cpp +++ b/ui/text.cpp @@ -4,19 +4,13 @@ #include "uiComponent.h" #include <array> #include <cache.h> -#include <filesystem> #include <glArrays.h> #include <glm/gtc/type_ptr.hpp> -#include <map> -#include <memory> #include <utility> -const std::filesystem::path font {"/usr/share/fonts/hack/Hack-Regular.ttf"}; - -Text::Text(std::string_view s, Position pos, glm::vec3 c) : UIComponent {pos}, colour {c} +Text::Text(std::string_view s, const Font & font, Position pos, glm::vec3 c) : UIComponent {pos}, colour {c} { - for (const auto & textureQuads : - Font::cachedFontRenderings.get(font, static_cast<unsigned int>(pos.size.y))->render(s)) { + for (const auto & textureQuads : font.render(s)) { auto & rendering = models.emplace_back(textureQuads.first, static_cast<GLsizei>(6 * textureQuads.second.size())); glBindVertexArray(rendering.vao); @@ -1,5 +1,6 @@ #pragma once +#include "font.h" #include "uiComponent.h" #include <glArrays.h> #include <glad/gl.h> @@ -12,7 +13,7 @@ union SDL_Event; class Text : public UIComponent { public: - Text(std::string_view s, Position, glm::vec3 colour); + Text(std::string_view s, const Font &, Position, glm::vec3 colour); void render(const UIShader &, const Position & parentPos) const override; bool handleInput(const SDL_Event &, const Position & parentPos) override; |