CRasterFont: Collapse loop into a std::find_if in InternalGetGlyph()

Same behavior, less code.
This commit is contained in:
Lioncash 2020-04-05 06:01:24 -04:00
parent 1279be5e56
commit 94264f6fe6
2 changed files with 14 additions and 10 deletions

View File

@ -1,5 +1,7 @@
#include "Runtime/GuiSys/CRasterFont.hpp"
#include <algorithm>
#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)

View File

@ -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);