mirror of
				https://github.com/Drezil/imgui.git
				synced 2025-11-03 22:51:06 +01:00 
			
		
		
		
	Internal: Refactor: Moved RenderArrow, RenderBullet, RenderCheckMark to imgui_draw.cpp, changed RenderCheckMark to avoid using ImGui context
This commit is contained in:
		
							
								
								
									
										60
									
								
								imgui.cpp
									
									
									
									
									
								
							
							
						
						
									
										60
									
								
								imgui.cpp
									
									
									
									
									
								
							@@ -2542,8 +2542,9 @@ const char* ImGui::GetStyleColorName(ImGuiCol idx)
 | 
			
		||||
 | 
			
		||||
//-----------------------------------------------------------------------------
 | 
			
		||||
// [SECTION] RENDER HELPERS
 | 
			
		||||
// Some of those (internal) functions are currently quite a legacy mess - their signature and behavior will change.
 | 
			
		||||
// Also see imgui_draw.cpp for some more which have been reworked to not rely on ImGui:: state.
 | 
			
		||||
// Some of those (internal) functions are currently quite a legacy mess - their signature and behavior will change,
 | 
			
		||||
// we need a nicer separation between low-level functions and high-level functions relying on the ImGui context.
 | 
			
		||||
// Also see imgui_draw.cpp for some more which have been reworked to not rely on ImGui:: context.
 | 
			
		||||
//-----------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
const char* ImGui::FindRenderedTextEnd(const char* text, const char* text_end)
 | 
			
		||||
@@ -2753,61 +2754,6 @@ void ImGui::RenderFrameBorder(ImVec2 p_min, ImVec2 p_max, float rounding)
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Render an arrow aimed to be aligned with text (p_min is a position in the same space text would be positioned). To e.g. denote expanded/collapsed state
 | 
			
		||||
void ImGui::RenderArrow(ImDrawList* draw_list, ImVec2 pos, ImU32 col, ImGuiDir dir, float scale)
 | 
			
		||||
{
 | 
			
		||||
    const float h = draw_list->_Data->FontSize * 1.00f;
 | 
			
		||||
    float r = h * 0.40f * scale;
 | 
			
		||||
    ImVec2 center = pos + ImVec2(h * 0.50f, h * 0.50f * scale);
 | 
			
		||||
 | 
			
		||||
    ImVec2 a, b, c;
 | 
			
		||||
    switch (dir)
 | 
			
		||||
    {
 | 
			
		||||
    case ImGuiDir_Up:
 | 
			
		||||
    case ImGuiDir_Down:
 | 
			
		||||
        if (dir == ImGuiDir_Up) r = -r;
 | 
			
		||||
        a = ImVec2(+0.000f,+0.750f) * r;
 | 
			
		||||
        b = ImVec2(-0.866f,-0.750f) * r;
 | 
			
		||||
        c = ImVec2(+0.866f,-0.750f) * r;
 | 
			
		||||
        break;
 | 
			
		||||
    case ImGuiDir_Left:
 | 
			
		||||
    case ImGuiDir_Right:
 | 
			
		||||
        if (dir == ImGuiDir_Left) r = -r;
 | 
			
		||||
        a = ImVec2(+0.750f,+0.000f) * r;
 | 
			
		||||
        b = ImVec2(-0.750f,+0.866f) * r;
 | 
			
		||||
        c = ImVec2(-0.750f,-0.866f) * r;
 | 
			
		||||
        break;
 | 
			
		||||
    case ImGuiDir_None:
 | 
			
		||||
    case ImGuiDir_COUNT:
 | 
			
		||||
        IM_ASSERT(0);
 | 
			
		||||
        break;
 | 
			
		||||
    }
 | 
			
		||||
    draw_list->AddTriangleFilled(center + a, center + b, center + c, col);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void ImGui::RenderBullet(ImDrawList* draw_list, ImVec2 pos, ImU32 col)
 | 
			
		||||
{
 | 
			
		||||
    draw_list->AddCircleFilled(pos, draw_list->_Data->FontSize * 0.20f, col, 8);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void ImGui::RenderCheckMark(ImVec2 pos, ImU32 col, float sz)
 | 
			
		||||
{
 | 
			
		||||
    ImGuiContext& g = *GImGui;
 | 
			
		||||
    ImGuiWindow* window = g.CurrentWindow;
 | 
			
		||||
 | 
			
		||||
    float thickness = ImMax(sz / 5.0f, 1.0f);
 | 
			
		||||
    sz -= thickness*0.5f;
 | 
			
		||||
    pos += ImVec2(thickness*0.25f, thickness*0.25f);
 | 
			
		||||
 | 
			
		||||
    float third = sz / 3.0f;
 | 
			
		||||
    float bx = pos.x + third;
 | 
			
		||||
    float by = pos.y + sz - third*0.5f;
 | 
			
		||||
    window->DrawList->PathLineTo(ImVec2(bx - third, by - third));
 | 
			
		||||
    window->DrawList->PathLineTo(ImVec2(bx, by));
 | 
			
		||||
    window->DrawList->PathLineTo(ImVec2(bx + third*2, by - third*2));
 | 
			
		||||
    window->DrawList->PathStroke(col, false, thickness);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void ImGui::RenderNavHighlight(const ImRect& bb, ImGuiID id, ImGuiNavHighlightFlags flags)
 | 
			
		||||
{
 | 
			
		||||
    ImGuiContext& g = *GImGui;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user