mirror of
https://github.com/ocornut/imgui.git
synced 2025-10-26 12:27:30 +00:00
(Breaking) Renamed io.FontGlobalScale to style.FontScaleMain.
# Conflicts: # imgui.cpp
This commit is contained in:
33
imgui.cpp
33
imgui.cpp
@@ -1358,6 +1358,8 @@ static void* GImAllocatorUserData = NULL;
|
||||
ImGuiStyle::ImGuiStyle()
|
||||
{
|
||||
FontSizeBase = 0.0f; // Will default to io.Fonts->Fonts[0] on first frame.
|
||||
FontScaleMain = 1.0f; // Main global scale factor.
|
||||
|
||||
Alpha = 1.0f; // Global alpha applies to everything in Dear ImGui.
|
||||
DisabledAlpha = 0.60f; // Additional alpha multiplier applied by BeginDisabled(). Multiply over current value of Alpha.
|
||||
WindowPadding = ImVec2(8,8); // Padding within a window
|
||||
@@ -1481,9 +1483,11 @@ ImGuiIO::ImGuiIO()
|
||||
UserData = NULL;
|
||||
|
||||
Fonts = NULL;
|
||||
FontGlobalScale = 1.0f;
|
||||
FontDefault = NULL;
|
||||
FontAllowUserScaling = false;
|
||||
#ifndef IMGUI_DISABLE_OBSOLETE_FUNCTIONS
|
||||
FontGlobalScale = 1.0f; // Use style.FontScaleMain instead!
|
||||
#endif
|
||||
DisplayFramebufferScale = ImVec2(1.0f, 1.0f);
|
||||
|
||||
// Keyboard/Gamepad Navigation options
|
||||
@@ -8456,7 +8460,7 @@ ImVec2 ImGui::GetFontTexUvWhitePixel()
|
||||
return GImGui->DrawListSharedData.TexUvWhitePixel;
|
||||
}
|
||||
|
||||
// Prefer using PushFontSize(style.FontSize * factor), or use io.FontGlobalScale to scale all windows.
|
||||
// Prefer using PushFontSize(style.FontSizeBase * factor), or use style.FontScaleMain to scale all windows.
|
||||
#ifndef IMGUI_DISABLE_OBSOLETE_FUNCTIONS
|
||||
void ImGui::SetWindowFontScale(float scale)
|
||||
{
|
||||
@@ -8744,12 +8748,15 @@ void ImGui::UpdateCurrentFontSize(float restore_font_size_after_scaling)
|
||||
final_size = g.FontSizeBeforeScaling;
|
||||
|
||||
// External scale factors
|
||||
final_size *= g.IO.FontGlobalScale;
|
||||
final_size *= g.Style.FontScaleMain;
|
||||
if (window != NULL)
|
||||
final_size *= window->FontWindowScale;
|
||||
|
||||
// Legacy scale factors
|
||||
#ifndef IMGUI_DISABLE_OBSOLETE_FUNCTIONS
|
||||
final_size *= g.IO.FontGlobalScale; // Use style.FontScaleMain instead!
|
||||
if (g.Font != NULL)
|
||||
final_size *= g.Font->Scale;
|
||||
final_size *= g.Font->Scale; // Was never really useful.
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -10544,6 +10551,9 @@ static void ImGui::ErrorCheckNewFrameSanityChecks()
|
||||
IM_ASSERT(g.IO.ConfigErrorRecoveryEnableAssert || g.IO.ConfigErrorRecoveryEnableDebugLog || g.IO.ConfigErrorRecoveryEnableTooltip || g.ErrorCallback != NULL);
|
||||
|
||||
#ifndef IMGUI_DISABLE_OBSOLETE_FUNCTIONS
|
||||
if (g.IO.FontGlobalScale > 1.0f)
|
||||
IM_ASSERT(g.Style.FontScaleMain == 1.0f && "Since 1.92: use style.FontScaleMain instead of g.IO.FontGlobalScale!");
|
||||
|
||||
// Remap legacy names
|
||||
if (g.IO.ConfigFlags & ImGuiConfigFlags_NavEnableSetMousePos)
|
||||
{
|
||||
@@ -15799,29 +15809,24 @@ void ImGui::ShowFontAtlas(ImFontAtlas* atlas)
|
||||
ImGuiIO& io = g.IO;
|
||||
ImGuiStyle& style = g.Style;
|
||||
|
||||
Text("Read "); SameLine(0, 0);
|
||||
TextLinkOpenURL("https://www.dearimgui.com/faq/"); SameLine(0, 0);
|
||||
Text(" for details.");
|
||||
|
||||
SeparatorText("Backend Support for Dynamic Fonts");
|
||||
BeginDisabled();
|
||||
CheckboxFlags("io.BackendFlags: RendererHasTextures", &io.BackendFlags, ImGuiBackendFlags_RendererHasTextures);
|
||||
EndDisabled();
|
||||
|
||||
ShowFontSelector("Font");
|
||||
BeginDisabled((io.BackendFlags & ImGuiBackendFlags_RendererHasTextures) == 0);
|
||||
SetNextItemWidth(GetFontSize() * 10);
|
||||
if (DragFloat("FontSizeBase", &style.FontSizeBase, 0.20f, 5.0f, 100.0f, "%.0f"))
|
||||
style._NextFrameFontSizeBase = style.FontSizeBase; // FIXME: Temporary hack until we finish remaining work.
|
||||
SameLine(0.0f, 0.0f); Text(" (out %.2f)", GetFontSize());
|
||||
SameLine(); MetricsHelpMarker("- This is scaling font only. General scaling will come later.");
|
||||
SetNextItemWidth(GetFontSize() * 10);
|
||||
DragFloat("io.FontGlobalScale", &io.FontGlobalScale, 0.05f, 0.5f, 5.0f); // <-- This works, but no need to make it too visible.
|
||||
DragFloat("FontScaleMain", &style.FontScaleMain, 0.02f, 0.5f, 5.0f);
|
||||
BulletText("Load a nice font for better results!");
|
||||
BulletText("Please submit feedback:");
|
||||
SameLine(); TextLinkOpenURL("#8465", "https://github.com/ocornut/imgui/issues/8465");
|
||||
BulletText("Read FAQ for more details:");
|
||||
SameLine(); TextLinkOpenURL("dearimgui.com/faq", "https://www.dearimgui.com/faq/");
|
||||
EndDisabled();
|
||||
|
||||
SeparatorText("Fonts");
|
||||
SeparatorText("Font List");
|
||||
|
||||
ImGuiMetricsConfig* cfg = &g.DebugMetricsConfig;
|
||||
Checkbox("Show font preview", &cfg->ShowFontPreview);
|
||||
|
||||
12
imgui.h
12
imgui.h
@@ -502,7 +502,7 @@ namespace ImGui
|
||||
// - Or set 'ImFontConfig::Flags |= ImFontFlags_DefaultToLegacySize' before calling AddFont(), and then 'PushFont(font)' will use this size.
|
||||
// *IMPORTANT* If you want to scale an existing font size:
|
||||
// - OK: PushFontSize(style.FontSizeBase * factor) (= value before external scale factors applied).
|
||||
// - KO: PushFontSize(GetFontSize() * factor) (= value after external scale factors applied. external scale factors are io.FontGlobalScale and per-viewport scales.).
|
||||
// - KO: PushFontSize(GetFontSize() * factor) (= value after external scale factors applied. external scale factors are style.FontScaleMain + per-viewport scales.).
|
||||
IMGUI_API void PushFont(ImFont* font, float font_size = -1); // use NULL as a shortcut to push default font. Use <0.0f to keep current font size.
|
||||
IMGUI_API void PopFont();
|
||||
IMGUI_API void PushFontSize(float font_size);
|
||||
@@ -2227,6 +2227,7 @@ IM_MSVC_RUNTIME_CHECKS_RESTORE
|
||||
struct ImGuiStyle
|
||||
{
|
||||
float FontSizeBase; // Current base font size (scaling applied). Use PushFont()/PushFontSize() to modify. Use ImGui::GetFontSize() to obtain scaled value.
|
||||
float FontScaleMain; // Main global scale factor. Other scale factors may apply.
|
||||
|
||||
float Alpha; // Global alpha applies to everything in Dear ImGui.
|
||||
float DisabledAlpha; // Additional alpha multiplier applied by BeginDisabled(). Multiply over current value of Alpha.
|
||||
@@ -2347,9 +2348,8 @@ struct ImGuiIO
|
||||
|
||||
// Font system
|
||||
ImFontAtlas*Fonts; // <auto> // Font atlas: load, rasterize and pack one or more fonts into a single texture.
|
||||
float FontGlobalScale; // = 1.0f // Global scale all fonts
|
||||
bool FontAllowUserScaling; // = false // [OBSOLETE] Allow user scaling text of individual window with CTRL+Wheel.
|
||||
ImFont* FontDefault; // = NULL // Font to use on NewFrame(). Use NULL to uses Fonts->Fonts[0].
|
||||
bool FontAllowUserScaling; // = false // [OBSOLETE] Allow user scaling text of individual window with CTRL+Wheel.
|
||||
|
||||
// Keyboard/Gamepad Navigation options
|
||||
bool ConfigNavSwapGamepadButtons; // = false // Swap Activate<>Cancel (A<>B) buttons, matching typical "Nintendo/Japanese style" gamepad layout.
|
||||
@@ -2546,9 +2546,11 @@ struct ImGuiIO
|
||||
//float NavInputs[ImGuiNavInput_COUNT]; // [LEGACY] Since 1.88, NavInputs[] was removed. Backends from 1.60 to 1.86 won't build. Feed gamepad inputs via io.AddKeyEvent() and ImGuiKey_GamepadXXX enums.
|
||||
//void* ImeWindowHandle; // [Obsoleted in 1.87] Set ImGuiViewport::PlatformHandleRaw instead. Set this to your HWND to get automatic IME cursor positioning.
|
||||
|
||||
#ifndef IMGUI_DISABLE_OBSOLETE_FUNCTIONS
|
||||
float FontGlobalScale; // Moved io.FontGlobalScale to style.FontScaleMain in 1.92 (June 2025)
|
||||
|
||||
// Legacy: before 1.91.1, clipboard functions were stored in ImGuiIO instead of ImGuiPlatformIO.
|
||||
// As this is will affect all users of custom engines/backends, we are providing proper legacy redirection (will obsolete).
|
||||
#ifndef IMGUI_DISABLE_OBSOLETE_FUNCTIONS
|
||||
const char* (*GetClipboardTextFn)(void* user_data);
|
||||
void (*SetClipboardTextFn)(void* user_data, const char* text);
|
||||
void* ClipboardUserData;
|
||||
@@ -3943,7 +3945,7 @@ struct ImGuiPlatformImeData
|
||||
namespace ImGui
|
||||
{
|
||||
// OBSOLETED in 1.92.0 (from June 2025)
|
||||
IMGUI_API void SetWindowFontScale(float scale); // Set font scale factor for current window. Prefer using PushFontSize(style.FontSize * factor) or use io.FontGlobalScale to scale all windows.
|
||||
IMGUI_API void SetWindowFontScale(float scale); // Set font scale factor for current window. Prefer using PushFontSize(style.FontSizeBase * factor) or use style.FontScaleMain to scale all windows.
|
||||
// OBSOLETED in 1.91.9 (from February 2025)
|
||||
IMGUI_API void Image(ImTextureRef tex_ref, const ImVec2& image_size, const ImVec2& uv0, const ImVec2& uv1, const ImVec4& tint_col, const ImVec4& border_col); // <-- 'border_col' was removed in favor of ImGuiCol_ImageBorder. If you use 'tint_col', use ImageWithBg() instead.
|
||||
// OBSOLETED in 1.91.0 (from July 2024)
|
||||
|
||||
@@ -440,13 +440,13 @@ void ImGui::ShowDemoWindow(bool* p_open)
|
||||
style._NextFrameFontSizeBase = style.FontSizeBase; // FIXME: Temporary hack until we finish remaining work.
|
||||
ImGui::SameLine(0.0f, 0.0f); Text(" (out %.2f)", ImGui::GetFontSize());
|
||||
ImGui::SameLine(); HelpMarker("- This is scaling font only. General scaling will come later.");
|
||||
//ImGui::SetNextItemWidth(ImGui::GetFontSize() * 20);
|
||||
//ImGui::DragFloat("FontGlobalScale", &ImGui::GetIO().FontGlobalScale, 0.05f, 0.5f, 5.0f);
|
||||
ImGui::SetNextItemWidth(ImGui::GetFontSize() * 20);
|
||||
ImGui::DragFloat("FontScaleMain", &style.FontScaleMain, 0.02f, 0.5f, 4.0f);
|
||||
ImGui::BulletText("Load a nice font for better results!");
|
||||
ImGui::BulletText("See 'Widgets->Fonts' below for more.");
|
||||
//ImGui::BulletText("Current font loader: '%s'", ImGui::GetIO().Fonts->FontLoaderName);
|
||||
ImGui::BulletText("Please submit feedback:"); ImGui::SameLine();
|
||||
ImGui::TextLinkOpenURL("#8465", "https://github.com/ocornut/imgui/issues/8465");
|
||||
ImGui::BulletText("See 'Widgets->Fonts' below for more.");
|
||||
ImGui::Spacing();
|
||||
}
|
||||
|
||||
@@ -8276,9 +8276,16 @@ void ImGui::ShowStyleEditor(ImGuiStyle* ref)
|
||||
|
||||
{
|
||||
// General
|
||||
SeparatorText("General");
|
||||
if (ShowStyleSelector("Colors##Selector"))
|
||||
ref_saved_style = style;
|
||||
ShowFontSelector("Fonts##Selector");
|
||||
BeginDisabled((GetIO().BackendFlags & ImGuiBackendFlags_RendererHasTextures) == 0);
|
||||
if (DragFloat("FontSizeBase", &style.FontSizeBase, 0.20f, 5.0f, 100.0f, "%.0f"))
|
||||
style._NextFrameFontSizeBase = style.FontSizeBase; // FIXME: Temporary hack until we finish remaining work.
|
||||
SameLine(0.0f, 0.0f); Text(" (out %.2f)", GetFontSize());
|
||||
DragFloat("FontScaleMain", &style.FontScaleMain, 0.02f, 0.5f, 4.0f);
|
||||
EndDisabled();
|
||||
|
||||
// Simplified Settings (expose floating-pointer border sizes as boolean representing 0.0f or 1.0f)
|
||||
if (SliderFloat("FrameRounding", &style.FrameRounding, 0.0f, 12.0f, "%.0f"))
|
||||
@@ -8301,8 +8308,7 @@ void ImGui::ShowStyleEditor(ImGuiStyle* ref)
|
||||
"Save/Revert in local non-persistent storage. Default Colors definition are not affected. "
|
||||
"Use \"Export\" below to save them somewhere.");
|
||||
|
||||
Separator();
|
||||
|
||||
SeparatorText("Details");
|
||||
if (BeginTabBar("##tabs", ImGuiTabBarFlags_None))
|
||||
{
|
||||
if (BeginTabItem("Sizes"))
|
||||
@@ -8477,6 +8483,7 @@ void ImGui::ShowStyleEditor(ImGuiStyle* ref)
|
||||
|
||||
// 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;
|
||||
@@ -8491,6 +8498,7 @@ void ImGui::ShowStyleEditor(ImGuiStyle* ref)
|
||||
//if (DragFloat("window scale", &window_scale, 0.005f, MIN_SCALE, MAX_SCALE, "%.2f", ImGuiSliderFlags_AlwaysClamp)) // Scale only this window
|
||||
// SetWindowFontScale(window_scale);
|
||||
PopItemWidth();
|
||||
*/
|
||||
|
||||
EndTabItem();
|
||||
}
|
||||
|
||||
@@ -2139,7 +2139,7 @@ struct ImGuiContext
|
||||
ImVector<ImFontAtlas*> FontAtlases; // List of font atlases used by the context (generally only contains g.IO.Fonts aka the main font atlas)
|
||||
ImFont* Font; // Currently bound font. (== FontStack.back().Font)
|
||||
ImFontBaked* FontBaked; // Currently bound font at currently bound size. (== Font->GetFontBaked(FontSize))
|
||||
float FontSize; // Currently bound font size == line height (== FontSizeBeforeScaling * io.FontGlobalScale * font->Scale * g.CurrentWindow->FontWindowScale).
|
||||
float FontSize; // Currently bound font size == line height (== FontSizeBeforeScaling + externals scales applied in the UpdateCurrentFontSize() function).
|
||||
float FontSizeBeforeScaling; // == value passed to PushFont() / PushFontSize() when specified.
|
||||
float FontScale; // == FontBaked->Size / Font->FontSize. Scale factor over baked size.
|
||||
float FontRasterizerDensity; // Current font density. Used by all calls to GetFontBaked().
|
||||
|
||||
Reference in New Issue
Block a user