Demo: added basic Fonts section under main demo (same as Metrics one) for visibility.

This commit is contained in:
ocornut
2025-05-05 19:39:56 +02:00
parent c5e2bb7cd1
commit afd3a36f69
3 changed files with 41 additions and 4 deletions

View File

@@ -15491,6 +15491,18 @@ static void MetricsHelpMarker(const char* desc)
// [DEBUG] List fonts in a font atlas and display its texture // [DEBUG] List fonts in a font atlas and display its texture
void ImGui::ShowFontAtlas(ImFontAtlas* atlas) void ImGui::ShowFontAtlas(ImFontAtlas* atlas)
{ {
ImGuiContext& g = *GImGui;
Text("Read ");
SameLine(0, 0);
TextLinkOpenURL("https://www.dearimgui.com/faq/");
SameLine(0, 0);
Text(" for details on font loading.");
ImGuiMetricsConfig* cfg = &g.DebugMetricsConfig;
Checkbox("Show font preview", &cfg->ShowFontPreview);
// Font list
for (ImFont* font : atlas->Fonts) for (ImFont* font : atlas->Fonts)
{ {
PushID(font); PushID(font);
@@ -15499,7 +15511,6 @@ void ImGui::ShowFontAtlas(ImFontAtlas* atlas)
} }
if (TreeNode("Font Atlas", "Font Atlas (%dx%d pixels)", atlas->TexWidth, atlas->TexHeight)) if (TreeNode("Font Atlas", "Font Atlas (%dx%d pixels)", atlas->TexWidth, atlas->TexHeight))
{ {
ImGuiContext& g = *GImGui;
PushStyleVar(ImGuiStyleVar_ImageBorderSize, ImMax(1.0f, g.Style.ImageBorderSize)); PushStyleVar(ImGuiStyleVar_ImageBorderSize, ImMax(1.0f, g.Style.ImageBorderSize));
ImageWithBg(atlas->TexID, ImVec2((float)atlas->TexWidth, (float)atlas->TexHeight), ImVec2(0.0f, 0.0f), ImVec2(1.0f, 1.0f), ImVec4(0.0f, 0.0f, 0.0f, 1.0f)); ImageWithBg(atlas->TexID, ImVec2((float)atlas->TexWidth, (float)atlas->TexHeight), ImVec2(0.0f, 0.0f), ImVec2(1.0f, 1.0f), ImVec4(0.0f, 0.0f, 0.0f, 1.0f));
PopStyleVar(); PopStyleVar();
@@ -16290,6 +16301,8 @@ void ImGui::DebugNodeDrawCmdShowMeshAndBoundingBox(ImDrawList* out_draw_list, co
// [DEBUG] Display details for a single font, called by ShowStyleEditor(). // [DEBUG] Display details for a single font, called by ShowStyleEditor().
void ImGui::DebugNodeFont(ImFont* font) void ImGui::DebugNodeFont(ImFont* font)
{ {
ImGuiContext& g = *GImGui;
ImGuiMetricsConfig* cfg = &g.DebugMetricsConfig;
bool opened = TreeNode(font, "Font: \"%s\": %.2f px, %d glyphs, %d sources(s)", bool opened = TreeNode(font, "Font: \"%s\": %.2f px, %d glyphs, %d sources(s)",
font->Sources ? font->Sources[0].Name : "", font->FontSize, font->Glyphs.Size, font->SourcesCount); font->Sources ? font->Sources[0].Name : "", font->FontSize, font->Glyphs.Size, font->SourcesCount);
@@ -16297,9 +16310,12 @@ void ImGui::DebugNodeFont(ImFont* font)
if (!opened) if (!opened)
Indent(); Indent();
Indent(); Indent();
PushFont(font); if (cfg->ShowFontPreview)
Text("The quick brown fox jumps over the lazy dog"); {
PopFont(); PushFont(font);
Text("The quick brown fox jumps over the lazy dog");
PopFont();
}
if (!opened) if (!opened)
{ {
Unindent(); Unindent();

View File

@@ -82,6 +82,7 @@ Index of this file:
// [SECTION] DemoWindowWidgetsDisableBlocks() // [SECTION] DemoWindowWidgetsDisableBlocks()
// [SECTION] DemoWindowWidgetsDragAndDrop() // [SECTION] DemoWindowWidgetsDragAndDrop()
// [SECTION] DemoWindowWidgetsDragsAndSliders() // [SECTION] DemoWindowWidgetsDragsAndSliders()
// [SECTION] DemoWindowWidgetsFonts()
// [SECTION] DemoWindowWidgetsImages() // [SECTION] DemoWindowWidgetsImages()
// [SECTION] DemoWindowWidgetsListBoxes() // [SECTION] DemoWindowWidgetsListBoxes()
// [SECTION] DemoWindowWidgetsMultiComponents() // [SECTION] DemoWindowWidgetsMultiComponents()
@@ -1719,6 +1720,24 @@ static void DemoWindowWidgetsDragsAndSliders()
} }
} }
//-----------------------------------------------------------------------------
// [SECTION] DemoWindowWidgetsFonts()
//-----------------------------------------------------------------------------
// Forward declare ShowFontAtlas() which isn't worth putting in public API yet
namespace ImGui { IMGUI_API void ShowFontAtlas(ImFontAtlas* atlas); }
static void DemoWindowWidgetsFonts()
{
IMGUI_DEMO_MARKER("Widgets/Fonts");
if (ImGui::TreeNode("Fonts"))
{
ImFontAtlas* atlas = ImGui::GetIO().Fonts;
ImGui::ShowFontAtlas(atlas);
ImGui::TreePop();
}
}
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// [SECTION] DemoWindowWidgetsImages() // [SECTION] DemoWindowWidgetsImages()
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
@@ -4182,6 +4201,7 @@ static void DemoWindowWidgets(ImGuiDemoWindowData* demo_data)
DemoWindowWidgetsDragAndDrop(); DemoWindowWidgetsDragAndDrop();
DemoWindowWidgetsDragsAndSliders(); DemoWindowWidgetsDragsAndSliders();
DemoWindowWidgetsFonts();
DemoWindowWidgetsImages(); DemoWindowWidgetsImages();
DemoWindowWidgetsListBoxes(); DemoWindowWidgetsListBoxes();
DemoWindowWidgetsMultiComponents(); DemoWindowWidgetsMultiComponents();

View File

@@ -2020,6 +2020,7 @@ struct ImGuiMetricsConfig
int ShowTablesRectsType = -1; int ShowTablesRectsType = -1;
int HighlightMonitorIdx = -1; int HighlightMonitorIdx = -1;
ImGuiID HighlightViewportID = 0; ImGuiID HighlightViewportID = 0;
bool ShowFontPreview = true;
}; };
struct ImGuiStackLevelInfo struct ImGuiStackLevelInfo