WIP - Added a bit of user facing tooling.

This commit is contained in:
ocornut 2025-01-16 15:41:46 +01:00
parent c264fa7410
commit d95c96e20e
2 changed files with 31 additions and 1 deletions

View file

@ -21202,6 +21202,13 @@ namespace ImGuiFreeType { IMGUI_API const ImFontLoader* GetFontLoader(); }
// [DEBUG] List fonts in a font atlas and display its texture
void ImGui::ShowFontAtlas(ImFontAtlas* atlas)
{
SeparatorText("Fonts");
Text("Read the FAQ at ");
SameLine(0, 0);
TextLinkOpenURL("https://www.dearimgui.com/faq/");
SameLine(0, 0);
Text(" for details on font loading.");
// Font loaders
if (TreeNode("Loader", "Loader: \'%s\'", atlas->FontLoaderName ? atlas->FontLoaderName : "NULL"))
{
@ -21240,6 +21247,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)
{

View file

@ -8440,11 +8440,12 @@ void ImGui::ShowStyleEditor(ImGuiStyle* ref)
{
ImGuiIO& io = ImGui::GetIO();
ImFontAtlas* atlas = io.Fonts;
HelpMarker("Read FAQ and docs/FONTS.md for details on font loading.");
ImGui::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).
ImGui::SeparatorText("Legacy Scaling");
const float MIN_SCALE = 0.3f;
const float MAX_SCALE = 2.0f;
HelpMarker(