mirror of
				https://github.com/Drezil/imgui.git
				synced 2025-10-31 13:11:05 +01:00 
			
		
		
		
	ImDrawList: upgraded AddRect(), AddRectFilled(), PathRect() to use general ImDrawFlags instead of ImDrawCornersFlags
This commit is contained in:
		| @@ -874,19 +874,19 @@ void ImGui::Scrollbar(ImGuiAxis axis) | ||||
|  | ||||
|     // Calculate scrollbar bounding box | ||||
|     ImRect bb = GetWindowScrollbarRect(window, axis); | ||||
|     ImDrawCornerFlags rounding_corners = 0; | ||||
|     ImDrawFlags rounding_corners = ImDrawFlags_NoRoundCorners; | ||||
|     if (axis == ImGuiAxis_X) | ||||
|     { | ||||
|         rounding_corners |= ImDrawCornerFlags_BotLeft; | ||||
|         rounding_corners &= ~ImDrawFlags_NoRoundCornerBL; | ||||
|         if (!window->ScrollbarY) | ||||
|             rounding_corners |= ImDrawCornerFlags_BotRight; | ||||
|             rounding_corners &= ~ImDrawFlags_NoRoundCornerBR; | ||||
|     } | ||||
|     else | ||||
|     { | ||||
|         if ((window->Flags & ImGuiWindowFlags_NoTitleBar) && !(window->Flags & ImGuiWindowFlags_MenuBar)) | ||||
|             rounding_corners |= ImDrawCornerFlags_TopRight; | ||||
|             rounding_corners &= ~ImDrawFlags_NoRoundCornerTR; | ||||
|         if (!window->ScrollbarX) | ||||
|             rounding_corners |= ImDrawCornerFlags_BotRight; | ||||
|             rounding_corners &= ~ImDrawFlags_NoRoundCornerBR; | ||||
|     } | ||||
|     float size_avail = window->InnerRect.Max[axis] - window->InnerRect.Min[axis]; | ||||
|     float size_contents = window->ContentSize[axis] + window->WindowPadding[axis] * 2.0f; | ||||
| @@ -899,7 +899,7 @@ void ImGui::Scrollbar(ImGuiAxis axis) | ||||
| // - We store values as normalized ratio and in a form that allows the window content to change while we are holding on a scrollbar | ||||
| // - We handle both horizontal and vertical scrollbars, which makes the terminology not ideal. | ||||
| // Still, the code should probably be made simpler.. | ||||
| bool ImGui::ScrollbarEx(const ImRect& bb_frame, ImGuiID id, ImGuiAxis axis, float* p_scroll_v, float size_avail_v, float size_contents_v, ImDrawCornerFlags rounding_corners) | ||||
| bool ImGui::ScrollbarEx(const ImRect& bb_frame, ImGuiID id, ImGuiAxis axis, float* p_scroll_v, float size_avail_v, float size_contents_v, ImDrawFlags flags) | ||||
| { | ||||
|     ImGuiContext& g = *GImGui; | ||||
|     ImGuiWindow* window = g.CurrentWindow; | ||||
| @@ -979,7 +979,7 @@ bool ImGui::ScrollbarEx(const ImRect& bb_frame, ImGuiID id, ImGuiAxis axis, floa | ||||
|     // Render | ||||
|     const ImU32 bg_col = GetColorU32(ImGuiCol_ScrollbarBg); | ||||
|     const ImU32 grab_col = GetColorU32(held ? ImGuiCol_ScrollbarGrabActive : hovered ? ImGuiCol_ScrollbarGrabHovered : ImGuiCol_ScrollbarGrab, alpha); | ||||
|     window->DrawList->AddRectFilled(bb_frame.Min, bb_frame.Max, bg_col, window->WindowRounding, rounding_corners); | ||||
|     window->DrawList->AddRectFilled(bb_frame.Min, bb_frame.Max, bg_col, window->WindowRounding, flags); | ||||
|     ImRect grab_rect; | ||||
|     if (axis == ImGuiAxis_X) | ||||
|         grab_rect = ImRect(ImLerp(bb.Min.x, bb.Max.x, grab_v_norm), bb.Min.y, ImLerp(bb.Min.x, bb.Max.x, grab_v_norm) + grab_h_pixels, bb.Max.y); | ||||
| @@ -1579,12 +1579,12 @@ bool ImGui::BeginCombo(const char* label, const char* preview_value, ImGuiComboF | ||||
|     const float value_x2 = ImMax(frame_bb.Min.x, frame_bb.Max.x - arrow_size); | ||||
|     RenderNavHighlight(frame_bb, id); | ||||
|     if (!(flags & ImGuiComboFlags_NoPreview)) | ||||
|         window->DrawList->AddRectFilled(frame_bb.Min, ImVec2(value_x2, frame_bb.Max.y), frame_col, style.FrameRounding, (flags & ImGuiComboFlags_NoArrowButton) ? ImDrawCornerFlags_All : ImDrawCornerFlags_Left); | ||||
|         window->DrawList->AddRectFilled(frame_bb.Min, ImVec2(value_x2, frame_bb.Max.y), frame_col, style.FrameRounding, (flags & ImGuiComboFlags_NoArrowButton) ? 0 : ImDrawFlags_NoRoundCornerR); | ||||
|     if (!(flags & ImGuiComboFlags_NoArrowButton)) | ||||
|     { | ||||
|         ImU32 bg_col = GetColorU32((popup_open || hovered) ? ImGuiCol_ButtonHovered : ImGuiCol_Button); | ||||
|         ImU32 text_col = GetColorU32(ImGuiCol_Text); | ||||
|         window->DrawList->AddRectFilled(ImVec2(value_x2, frame_bb.Min.y), frame_bb.Max, bg_col, style.FrameRounding, (w <= arrow_size) ? ImDrawCornerFlags_All : ImDrawCornerFlags_Right); | ||||
|         window->DrawList->AddRectFilled(ImVec2(value_x2, frame_bb.Min.y), frame_bb.Max, bg_col, style.FrameRounding, (w <= arrow_size) ? 0 : ImDrawFlags_NoRoundCornerL); | ||||
|         if (value_x2 + arrow_size - style.FramePadding.x <= frame_bb.Max.x) | ||||
|             RenderArrow(window->DrawList, ImVec2(value_x2 + style.FramePadding.y, frame_bb.Min.y + style.FramePadding.y), text_col, ImGuiDir_Down, 1.0f); | ||||
|     } | ||||
| @@ -5357,8 +5357,8 @@ bool ImGui::ColorButton(const char* desc_id, const ImVec4& col, ImGuiColorEditFl | ||||
|     if ((flags & ImGuiColorEditFlags_AlphaPreviewHalf) && col_rgb.w < 1.0f) | ||||
|     { | ||||
|         float mid_x = IM_ROUND((bb_inner.Min.x + bb_inner.Max.x) * 0.5f); | ||||
|         RenderColorRectWithAlphaCheckerboard(window->DrawList, ImVec2(bb_inner.Min.x + grid_step, bb_inner.Min.y), bb_inner.Max, GetColorU32(col_rgb), grid_step, ImVec2(-grid_step + off, off), rounding, ImDrawCornerFlags_TopRight | ImDrawCornerFlags_BotRight); | ||||
|         window->DrawList->AddRectFilled(bb_inner.Min, ImVec2(mid_x, bb_inner.Max.y), GetColorU32(col_rgb_without_alpha), rounding, ImDrawCornerFlags_TopLeft | ImDrawCornerFlags_BotLeft); | ||||
|         RenderColorRectWithAlphaCheckerboard(window->DrawList, ImVec2(bb_inner.Min.x + grid_step, bb_inner.Min.y), bb_inner.Max, GetColorU32(col_rgb), grid_step, ImVec2(-grid_step + off, off), rounding, ImDrawFlags_NoRoundCornerL); | ||||
|         window->DrawList->AddRectFilled(bb_inner.Min, ImVec2(mid_x, bb_inner.Max.y), GetColorU32(col_rgb_without_alpha), rounding, ImDrawFlags_NoRoundCornerR); | ||||
|     } | ||||
|     else | ||||
|     { | ||||
| @@ -5367,7 +5367,7 @@ bool ImGui::ColorButton(const char* desc_id, const ImVec4& col, ImGuiColorEditFl | ||||
|         if (col_source.w < 1.0f) | ||||
|             RenderColorRectWithAlphaCheckerboard(window->DrawList, bb_inner.Min, bb_inner.Max, GetColorU32(col_source), grid_step, ImVec2(off, off), rounding); | ||||
|         else | ||||
|             window->DrawList->AddRectFilled(bb_inner.Min, bb_inner.Max, GetColorU32(col_source), rounding, ImDrawCornerFlags_All); | ||||
|             window->DrawList->AddRectFilled(bb_inner.Min, bb_inner.Max, GetColorU32(col_source), rounding); | ||||
|     } | ||||
|     RenderNavHighlight(bb, id); | ||||
|     if ((flags & ImGuiColorEditFlags_NoBorder) == 0) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user