From 5a7e1fcbb82277e2008c8ed8f2a787f5a617d5db Mon Sep 17 00:00:00 2001 From: brunoherbelin Date: Mon, 11 May 2020 15:48:43 +0200 Subject: [PATCH] Fixed font size issue with oversampling --- ImGuiToolkit.cpp | 7 ++++--- ImGuiToolkit.h | 2 +- UserInterfaceManager.cpp | 6 +++--- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/ImGuiToolkit.cpp b/ImGuiToolkit.cpp index 18650f7..01ac20b 100644 --- a/ImGuiToolkit.cpp +++ b/ImGuiToolkit.cpp @@ -695,7 +695,7 @@ void ImGuiToolkit::Bar(float value, float in, float out, float min, float max, c } -void ImGuiToolkit::SetFont(ImGuiToolkit::font_style style, const std::string &ttf_font_name, int pointsize) +void ImGuiToolkit::SetFont(ImGuiToolkit::font_style style, const std::string &ttf_font_name, int pointsize, int oversample) { // Font Atlas ImGui Management ImGuiIO& io = ImGui::GetIO(); @@ -705,8 +705,9 @@ void ImGuiToolkit::SetFont(ImGuiToolkit::font_style style, const std::string &tt ImFontConfig font_config; fontname.copy(font_config.Name, 40); font_config.FontDataOwnedByAtlas = false; // data will be copied in font atlas - font_config.OversampleH = 5; - font_config.OversampleV = 5; + // TODO : calculate oversampling as function of the maximum texture size + font_config.OversampleH = CLAMP( oversample * 2 + 1, 1, 7 ); + font_config.OversampleV = CLAMP( oversample, 0, 5 ); // read font in Resource manager size_t data_size = 0; diff --git a/ImGuiToolkit.h b/ImGuiToolkit.h index d05e7e5..2ec3371 100644 --- a/ImGuiToolkit.h +++ b/ImGuiToolkit.h @@ -39,7 +39,7 @@ namespace ImGuiToolkit FONT_MONO, FONT_LARGE } font_style; - void SetFont(font_style type, const std::string &ttf_font_name, int pointsize); + void SetFont(font_style type, const std::string &ttf_font_name, int pointsize, int oversample = 2); void PushFont(font_style type); // color of gui items diff --git a/UserInterfaceManager.cpp b/UserInterfaceManager.cpp index 30eb6f0..fda4c21 100644 --- a/UserInterfaceManager.cpp +++ b/UserInterfaceManager.cpp @@ -160,12 +160,12 @@ bool UserInterface::Init() ImGuiToolkit::SetFont(ImGuiToolkit::FONT_BOLD, "Roboto-Bold", int(base_font_size) ); ImGuiToolkit::SetFont(ImGuiToolkit::FONT_ITALIC, "Roboto-Italic", int(base_font_size) ); ImGuiToolkit::SetFont(ImGuiToolkit::FONT_MONO, "Hack-Regular", int(base_font_size) - 2); - // font for Navigator = 1.5 x base size, and less than 38 (unknown imgui bug for fonts larger than 40) - ImGuiToolkit::SetFont(ImGuiToolkit::FONT_LARGE, "Hack-Regular", MIN(int(base_font_size * 1.5f) , 38) ); + // font for Navigator = 1.5 x base size (with low oversampling) + ImGuiToolkit::SetFont(ImGuiToolkit::FONT_LARGE, "Hack-Regular", MIN(int(base_font_size * 1.5f), 50), 1 ); // info Log::Info("Monitor (%.1f,%.1f)", Rendering::manager().MonitorWidth(), Rendering::manager().MonitorHeight()); - Log::Info("Font size %df", int(base_font_size) ); + Log::Info("Font size %d", int(base_font_size) ); // Style ImGuiStyle& style = ImGui::GetStyle();