mirror of
				https://github.com/Drezil/imgui.git
				synced 2025-11-04 07:01:04 +01:00 
			
		
		
		
	Font fixes for horizontal centering within frames
This commit is contained in:
		
							
								
								
									
										21
									
								
								imgui.cpp
									
									
									
									
									
								
							
							
						
						
									
										21
									
								
								imgui.cpp
									
									
									
									
									
								
							@@ -876,7 +876,7 @@ struct ImGuiState
 | 
			
		||||
    ImGuiIO                 IO;
 | 
			
		||||
    ImGuiStyle              Style;
 | 
			
		||||
    ImFont*                 Font;                               // (Shortcut) == FontStack.empty() ? IO.Font : FontStack.back()
 | 
			
		||||
    float                   FontSize;                           // (Shortcut) == IO.FontGlobalScale * (Font->Scale * Font->FontSize). Vertical distance between two lines of text, aka == CalcTextSize(" ").y
 | 
			
		||||
    float                   FontSize;                           // (Shortcut) == IO.FontGlobalScale * Font->Scale * Font->FontSize. Size of characters.
 | 
			
		||||
    ImVec2                  FontTexUvWhitePixel;                // (Shortcut) == Font->TexUvForWhite
 | 
			
		||||
 | 
			
		||||
    float                   Time;
 | 
			
		||||
@@ -2025,7 +2025,7 @@ static ImGuiWindow* FindHoveredWindow(ImVec2 pos, bool excluding_childs)
 | 
			
		||||
            continue;
 | 
			
		||||
        if (excluding_childs && (window->Flags & ImGuiWindowFlags_ChildWindow) != 0)
 | 
			
		||||
            continue;
 | 
			
		||||
        ImGuiAabb bb(window->Pos - g.Style.TouchExtraPadding, window->Pos+window->Size + g.Style.TouchExtraPadding);
 | 
			
		||||
        ImGuiAabb bb(window->Pos - g.Style.TouchExtraPadding, window->Pos + window->Size + g.Style.TouchExtraPadding);
 | 
			
		||||
        if (bb.Contains(pos))
 | 
			
		||||
            return window;
 | 
			
		||||
    }
 | 
			
		||||
@@ -6270,7 +6270,6 @@ void ImDrawList::AddImage(ImTextureID user_texture_id, const ImVec2& a, const Im
 | 
			
		||||
ImFont::ImFont()
 | 
			
		||||
{
 | 
			
		||||
    Scale = 1.0f;
 | 
			
		||||
    DisplayOffset = ImVec2(0.5f, 0.5f);
 | 
			
		||||
    FallbackChar = (ImWchar)'?';
 | 
			
		||||
 | 
			
		||||
    TexPixelsAlpha8 = NULL;
 | 
			
		||||
@@ -6328,14 +6327,14 @@ void    ImFont::ClearTextureData()
 | 
			
		||||
 | 
			
		||||
void    ImFont::Clear()
 | 
			
		||||
{
 | 
			
		||||
    DisplayOffset = ImVec2(0.5f, 0.5f);
 | 
			
		||||
    FontSize = 0.0f;
 | 
			
		||||
    DisplayOffset = ImVec2(-0.5f, 0.5f);
 | 
			
		||||
 | 
			
		||||
    ClearTextureData();
 | 
			
		||||
    TexID = NULL;
 | 
			
		||||
    TexWidth = TexHeight = 0;
 | 
			
		||||
    TexExtraDataPos = TexUvWhitePixel = ImVec2(0, 0);
 | 
			
		||||
 | 
			
		||||
    FontSize = 0.0f;
 | 
			
		||||
    Glyphs.clear();
 | 
			
		||||
    IndexLookup.clear();
 | 
			
		||||
    FallbackGlyph = NULL;
 | 
			
		||||
@@ -6947,6 +6946,11 @@ ImVec2 ImFont::CalcTextSizeA(float size, float max_width, float wrap_width, cons
 | 
			
		||||
        text_size.y += line_height;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Cancel out character spacing for the last character of a line (it is baked into glyph->XAdvance field)
 | 
			
		||||
    const float character_spacing_x = 1.0f * scale;
 | 
			
		||||
    if (text_size.x > 0.0f)
 | 
			
		||||
        text_size.x -= character_spacing_x;
 | 
			
		||||
 | 
			
		||||
    if (remaining)
 | 
			
		||||
        *remaining = s;
 | 
			
		||||
 | 
			
		||||
@@ -7003,6 +7007,11 @@ ImVec2 ImFont::CalcTextSizeW(float size, float max_width, const ImWchar* text_be
 | 
			
		||||
        text_size.y += line_height;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Cancel out character spacing for the last character of a line (it is baked into glyph->XAdvance field)
 | 
			
		||||
    const float character_spacing_x = 1.0f * scale;
 | 
			
		||||
    if (text_size.x > 0.0f)
 | 
			
		||||
        text_size.x -= character_spacing_x;
 | 
			
		||||
 | 
			
		||||
    if (remaining)
 | 
			
		||||
        *remaining = s;
 | 
			
		||||
 | 
			
		||||
@@ -7321,7 +7330,7 @@ void ImGui::ShowStyleEditor(ImGuiStyle* ref)
 | 
			
		||||
    {
 | 
			
		||||
        static float window_scale = 1.0f;
 | 
			
		||||
        ImFont* font = ImGui::GetIO().Font;
 | 
			
		||||
        ImGui::Text("Font Size: %.2f", font->FontSize);
 | 
			
		||||
        ImGui::Text("Base Font Size: %.2f", font->FontSize);
 | 
			
		||||
        ImGui::SliderFloat("window scale", &window_scale, 0.3f, 2.0f, "%.1f");                   // scale only this window
 | 
			
		||||
        ImGui::SliderFloat("font scale", &font->Scale, 0.3f, 2.0f, "%.1f");                      // scale only this font
 | 
			
		||||
        ImGui::SliderFloat("global scale", &ImGui::GetIO().FontGlobalScale, 0.3f, 2.0f, "%.1f"); // scale everything
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user