diff options
author | chai <chaifix@163.com> | 2021-11-18 19:14:35 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2021-11-18 19:14:35 +0800 |
commit | 2ab7fad7b308debba0aacbf76831569f360d19a0 (patch) | |
tree | a28f4b6ed64ef9782be0f009ca9e458a709e34ca /Runtime/GUI/Font.cpp | |
parent | 6198d0c32b5416b328b55c4c4e5b760c745952c7 (diff) |
*misc
Diffstat (limited to 'Runtime/GUI/Font.cpp')
-rw-r--r-- | Runtime/GUI/Font.cpp | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/Runtime/GUI/Font.cpp b/Runtime/GUI/Font.cpp index 207e658..b611126 100644 --- a/Runtime/GUI/Font.cpp +++ b/Runtime/GUI/Font.cpp @@ -23,6 +23,7 @@ static const int s_SizePerPixel = sizeof(unsigned char); Font::Font(std::string path, TextGeneratingSettings settings) : LuaBind::NativeClass<Font>() + , m_Characters() { m_AtlasMargin = settings.margin; m_GlyphPadding = settings.padding; @@ -43,6 +44,7 @@ Font::Font(std::string path, TextGeneratingSettings settings) Font::Font(LuaBind::VM* vm, std::string path, TextGeneratingSettings settings) : LuaBind::NativeClass<Font>(vm) + , m_Characters() { m_AtlasMargin = settings.margin; m_GlyphPadding = settings.padding; @@ -63,6 +65,7 @@ Font::Font(LuaBind::VM* vm, std::string path, TextGeneratingSettings settings) Font::Font(DataBuffer* db, TextGeneratingSettings settings) : LuaBind::NativeClass<Font>() + , m_Characters() { m_AtlasMargin = settings.margin; m_GlyphPadding = settings.padding; @@ -83,6 +86,7 @@ Font::Font(DataBuffer* db, TextGeneratingSettings settings) Font::Font(LuaBind::VM* vm, DataBuffer* db, TextGeneratingSettings settings) : LuaBind::NativeClass<Font>(vm) + , m_Characters() { m_AtlasMargin = settings.margin; m_GlyphPadding = settings.padding; @@ -112,12 +116,12 @@ character::Hash Font::GetHash(Unicode codepoint, int pixelSize) const Character* Font::GetCharacter(character::Unicode codepoint, int pixelSize) { character::Hash hash = GetHash(codepoint, pixelSize); - auto iter = m_Characters.find(hash); + auto iter = m_Characters.find(hash.hashCode); if (iter == m_Characters.end()) { if (RenderCharacter(codepoint, pixelSize)) { - iter = m_Characters.find(hash); + iter = m_Characters.find(hash.hashCode); } else { @@ -148,7 +152,7 @@ void Font::RenderCharacters(std::vector<character::Unicode>& codepoint, int pixe bool Font::RenderCharacter(character::Unicode codepoint, int pixelSize) { character::Hash hash = GetHash(codepoint, pixelSize); - if (m_Characters.count(hash) != 0) + if (m_Characters.size() > 0 && m_Characters.count(hash.hashCode) != 0) return true; FT_Set_Pixel_Sizes(m_FTFace, 0, pixelSize); @@ -220,7 +224,7 @@ bool Font::RenderCharacter(character::Unicode codepoint, int pixelSize) character.advance = m_FTFace->glyph->advance.x * 1/64.f; - m_Characters.insert(std::pair<character::Hash, Character>(hash, character)); + m_Characters.insert(std::pair<unsigned int, Character>(hash.hashCode, character)); return true; } |