summaryrefslogtreecommitdiff
path: root/Runtime/GUI/Font.cpp
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2021-11-18 19:14:35 +0800
committerchai <chaifix@163.com>2021-11-18 19:14:35 +0800
commit2ab7fad7b308debba0aacbf76831569f360d19a0 (patch)
treea28f4b6ed64ef9782be0f009ca9e458a709e34ca /Runtime/GUI/Font.cpp
parent6198d0c32b5416b328b55c4c4e5b760c745952c7 (diff)
*misc
Diffstat (limited to 'Runtime/GUI/Font.cpp')
-rw-r--r--Runtime/GUI/Font.cpp12
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;
}