diff --git a/imgui.cpp b/imgui.cpp index f681e71b6..24073f715 100644 --- a/imgui.cpp +++ b/imgui.cpp @@ -15594,6 +15594,7 @@ void ImGui::ShowFontAtlas(ImFontAtlas* atlas) { ImGuiContext& g = *GImGui; + SeparatorText("Fonts"); Text("Read "); SameLine(0, 0); TextLinkOpenURL("https://www.dearimgui.com/faq/"); @@ -15641,6 +15642,28 @@ void ImGui::ShowFontAtlas(ImFontAtlas* atlas) PopID(); } + SeparatorText("Font Atlas"); + if (Button("Clear Cache")) + atlas->ClearCache(); + SameLine(); + if (Button("Grow")) + ImFontAtlasBuildGrowTexture(atlas); + SameLine(); + if (Button("Compact")) + ImFontAtlasBuildCompactTexture(atlas); + + for (int tex_n = 0; tex_n < atlas->TexList.Size; tex_n++) + { + ImTextureData* tex = atlas->TexList[tex_n]; + if (tex_n > 0) + SameLine(); + Text("Tex: %dx%d", tex->Width, tex->Height); + } + const int packed_surface_sqrt = (int)sqrtf((float)atlas->Builder->RectsPackedSurface); + const int discarded_surface_sqrt = (int)sqrtf((float)atlas->Builder->RectsDiscardedSurface); + Text("Packed rects: %d, area: about %d px ~%dx%d px", atlas->Builder->RectsPackedCount, atlas->Builder->RectsPackedSurface, packed_surface_sqrt, packed_surface_sqrt); + Text("incl. Discarded rects: %d, area: about %d px ~%dx%d px", atlas->Builder->RectsDiscardedCount, atlas->Builder->RectsDiscardedSurface, discarded_surface_sqrt, discarded_surface_sqrt); + // Texture list for (ImTextureData* tex : atlas->TexList) { diff --git a/imgui_demo.cpp b/imgui_demo.cpp index 5d5075e81..55b09a2bf 100644 --- a/imgui_demo.cpp +++ b/imgui_demo.cpp @@ -8446,11 +8446,11 @@ void ImGui::ShowStyleEditor(ImGuiStyle* ref) { ImGuiIO& io = GetIO(); ImFontAtlas* atlas = io.Fonts; - HelpMarker("Read FAQ and docs/FONTS.md for details on font loading."); ShowFontAtlas(atlas); // Post-baking font scaling. Note that this is NOT the nice way of scaling fonts, read below. // (we enforce hard clamping manually as by default DragFloat/SliderFloat allows CTRL+Click text to get out of bounds). + SeparatorText("Legacy Scaling"); const float MIN_SCALE = 0.3f; const float MAX_SCALE = 2.0f; HelpMarker(