diff --git a/Runtime/GuiSys/CRasterFont.cpp b/Runtime/GuiSys/CRasterFont.cpp index 0808b848f..35f60af6e 100644 --- a/Runtime/GuiSys/CRasterFont.cpp +++ b/Runtime/GuiSys/CRasterFont.cpp @@ -1,5 +1,7 @@ #include "Runtime/GuiSys/CRasterFont.hpp" +#include + #include "Runtime/CSimplePool.hpp" #include "Runtime/Graphics/CTexture.hpp" #include "Runtime/GuiSys/CDrawStringOptions.hpp" @@ -84,6 +86,17 @@ CRasterFont::CRasterFont(urde::CInputStream& in, urde::IObjectStore& store) { x0_initialized = true; } +const CGlyph* CRasterFont::InternalGetGlyph(char16_t chr) const { + const auto iter = + std::find_if(xc_glyphs.cbegin(), xc_glyphs.cend(), [chr](const auto& entry) { return entry.first == chr; }); + + if (iter == xc_glyphs.cend()) { + return nullptr; + } + + return &iter->second; +} + void CRasterFont::SinglePassDrawString(const CDrawStringOptions& opts, int x, int y, int& xout, int& yout, CTextRenderBuffer* renderBuf, const char16_t* str, s32 length) const { if (!x0_initialized) diff --git a/Runtime/GuiSys/CRasterFont.hpp b/Runtime/GuiSys/CRasterFont.hpp index 82db5d5d7..cbbaa1552 100644 --- a/Runtime/GuiSys/CRasterFont.hpp +++ b/Runtime/GuiSys/CRasterFont.hpp @@ -109,16 +109,7 @@ class CRasterFont { s32 x8c_baseline; s32 x90_lineMargin = 0; - const CGlyph* InternalGetGlyph(char16_t chr) const { - u32 i = 0; - for (; i < xc_glyphs.size(); ++i) - if (chr == xc_glyphs[i].first) - break; - - if (i == xc_glyphs.size()) - return nullptr; - return &xc_glyphs[i].second; - } + const CGlyph* InternalGetGlyph(char16_t chr) const; public: CRasterFont(CInputStream& in, IObjectStore& store);