mirror of
https://github.com/Drezil/imgui.git
synced 2024-11-15 09:27:00 +00:00
Merge branch 'inolen-atlas_build_clear_font'
This commit is contained in:
commit
b52e207758
2
imgui.h
2
imgui.h
@ -1500,7 +1500,7 @@ struct ImFont
|
|||||||
// Methods
|
// Methods
|
||||||
IMGUI_API ImFont();
|
IMGUI_API ImFont();
|
||||||
IMGUI_API ~ImFont();
|
IMGUI_API ~ImFont();
|
||||||
IMGUI_API void Clear();
|
IMGUI_API void ClearOutputData();
|
||||||
IMGUI_API void BuildLookupTable();
|
IMGUI_API void BuildLookupTable();
|
||||||
IMGUI_API const ImFontGlyph*FindGlyph(ImWchar c) const;
|
IMGUI_API const ImFontGlyph*FindGlyph(ImWchar c) const;
|
||||||
IMGUI_API void SetFallbackChar(ImWchar c);
|
IMGUI_API void SetFallbackChar(ImWchar c);
|
||||||
|
@ -1951,6 +1951,7 @@ void ImGui::ShowStyleEditor(ImGuiStyle* ref)
|
|||||||
for (int i = 0; i < atlas->Fonts.Size; i++)
|
for (int i = 0; i < atlas->Fonts.Size; i++)
|
||||||
{
|
{
|
||||||
ImFont* font = atlas->Fonts[i];
|
ImFont* font = atlas->Fonts[i];
|
||||||
|
ImGui::PushID(font);
|
||||||
bool font_details_opened = ImGui::TreeNode(font, "Font %d: \'%s\', %.2f px, %d glyphs", i, font->ConfigData ? font->ConfigData[0].Name : "", font->FontSize, font->Glyphs.Size);
|
bool font_details_opened = ImGui::TreeNode(font, "Font %d: \'%s\', %.2f px, %d glyphs", i, font->ConfigData ? font->ConfigData[0].Name : "", font->FontSize, font->Glyphs.Size);
|
||||||
ImGui::SameLine(); if (ImGui::SmallButton("Set as default")) ImGui::GetIO().FontDefault = font;
|
ImGui::SameLine(); if (ImGui::SmallButton("Set as default")) ImGui::GetIO().FontDefault = font;
|
||||||
if (font_details_opened)
|
if (font_details_opened)
|
||||||
@ -2011,6 +2012,7 @@ void ImGui::ShowStyleEditor(ImGuiStyle* ref)
|
|||||||
}
|
}
|
||||||
ImGui::TreePop();
|
ImGui::TreePop();
|
||||||
}
|
}
|
||||||
|
ImGui::PopID();
|
||||||
}
|
}
|
||||||
static float window_scale = 1.0f;
|
static float window_scale = 1.0f;
|
||||||
ImGui::DragFloat("this window scale", &window_scale, 0.005f, 0.3f, 2.0f, "%.1f"); // scale only this window
|
ImGui::DragFloat("this window scale", &window_scale, 0.005f, 0.3f, 2.0f, "%.1f"); // scale only this window
|
||||||
|
@ -1577,7 +1577,6 @@ bool ImFontAtlasBuildWithStbTruetype(ImFontAtlas* atlas)
|
|||||||
const float off_x = cfg.GlyphOffset.x;
|
const float off_x = cfg.GlyphOffset.x;
|
||||||
const float off_y = cfg.GlyphOffset.y + (float)(int)(dst_font->Ascent + 0.5f);
|
const float off_y = cfg.GlyphOffset.y + (float)(int)(dst_font->Ascent + 0.5f);
|
||||||
|
|
||||||
dst_font->FallbackGlyph = NULL; // Always clear fallback so FindGlyph can return NULL. It will be set again in BuildLookupTable()
|
|
||||||
for (int i = 0; i < tmp.RangesCount; i++)
|
for (int i = 0; i < tmp.RangesCount; i++)
|
||||||
{
|
{
|
||||||
stbtt_pack_range& range = tmp.Ranges[i];
|
stbtt_pack_range& range = tmp.Ranges[i];
|
||||||
@ -1619,14 +1618,12 @@ void ImFontAtlasBuildSetupFont(ImFontAtlas* atlas, ImFont* font, ImFontConfig* f
|
|||||||
{
|
{
|
||||||
if (!font_config->MergeMode)
|
if (!font_config->MergeMode)
|
||||||
{
|
{
|
||||||
font->ContainerAtlas = atlas;
|
font->ClearOutputData();
|
||||||
font->ConfigData = font_config;
|
|
||||||
font->ConfigDataCount = 0;
|
|
||||||
font->FontSize = font_config->SizePixels;
|
font->FontSize = font_config->SizePixels;
|
||||||
|
font->ConfigData = font_config;
|
||||||
|
font->ContainerAtlas = atlas;
|
||||||
font->Ascent = ascent;
|
font->Ascent = ascent;
|
||||||
font->Descent = descent;
|
font->Descent = descent;
|
||||||
font->Glyphs.resize(0);
|
|
||||||
font->MetricsTotalSurface = 0;
|
|
||||||
}
|
}
|
||||||
font->ConfigDataCount++;
|
font->ConfigDataCount++;
|
||||||
}
|
}
|
||||||
@ -1903,7 +1900,8 @@ ImFont::ImFont()
|
|||||||
{
|
{
|
||||||
Scale = 1.0f;
|
Scale = 1.0f;
|
||||||
FallbackChar = (ImWchar)'?';
|
FallbackChar = (ImWchar)'?';
|
||||||
Clear();
|
DisplayOffset = ImVec2(0.0f, 1.0f);
|
||||||
|
ClearOutputData();
|
||||||
}
|
}
|
||||||
|
|
||||||
ImFont::~ImFont()
|
ImFont::~ImFont()
|
||||||
@ -1916,13 +1914,12 @@ ImFont::~ImFont()
|
|||||||
if (g.Font == this)
|
if (g.Font == this)
|
||||||
g.Font = NULL;
|
g.Font = NULL;
|
||||||
*/
|
*/
|
||||||
Clear();
|
ClearOutputData();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ImFont::Clear()
|
void ImFont::ClearOutputData()
|
||||||
{
|
{
|
||||||
FontSize = 0.0f;
|
FontSize = 0.0f;
|
||||||
DisplayOffset = ImVec2(0.0f, 1.0f);
|
|
||||||
Glyphs.clear();
|
Glyphs.clear();
|
||||||
IndexAdvanceX.clear();
|
IndexAdvanceX.clear();
|
||||||
IndexLookup.clear();
|
IndexLookup.clear();
|
||||||
|
Loading…
Reference in New Issue
Block a user