| 10601 | } |
| 10602 | |
| 10603 | void ImGui::TabItemBackground(ImDrawList* draw_list, const ImRect& bb, ImGuiTabItemFlags flags, ImU32 col) |
| 10604 | { |
| 10605 | // While rendering tabs, we trim 1 pixel off the top of our bounding box so they can fit within a regular frame height while looking "detached" from it. |
| 10606 | ImGuiContext& g = *GImGui; |
| 10607 | const float width = bb.GetWidth(); |
| 10608 | IM_UNUSED(flags); |
| 10609 | IM_ASSERT(width > 0.0f); |
| 10610 | const float rounding = ImMax(0.0f, ImMin((flags & ImGuiTabItemFlags_Button) ? g.Style.FrameRounding : g.Style.TabRounding, width * 0.5f - 1.0f)); |
| 10611 | const float y1 = bb.Min.y + 1.0f; |
| 10612 | const float y2 = bb.Max.y - g.Style.TabBarBorderSize; |
| 10613 | draw_list->PathLineTo(ImVec2(bb.Min.x, y2)); |
| 10614 | draw_list->PathArcToFast(ImVec2(bb.Min.x + rounding, y1 + rounding), rounding, 6, 9); |
| 10615 | draw_list->PathArcToFast(ImVec2(bb.Max.x - rounding, y1 + rounding), rounding, 9, 12); |
| 10616 | draw_list->PathLineTo(ImVec2(bb.Max.x, y2)); |
| 10617 | draw_list->PathFillConvex(col); |
| 10618 | if (g.Style.TabBorderSize > 0.0f) |
| 10619 | { |
| 10620 | draw_list->PathLineTo(ImVec2(bb.Min.x + 0.5f, y2)); |
| 10621 | draw_list->PathArcToFast(ImVec2(bb.Min.x + rounding + 0.5f, y1 + rounding + 0.5f), rounding, 6, 9); |
| 10622 | draw_list->PathArcToFast(ImVec2(bb.Max.x - rounding - 0.5f, y1 + rounding + 0.5f), rounding, 9, 12); |
| 10623 | draw_list->PathLineTo(ImVec2(bb.Max.x - 0.5f, y2)); |
| 10624 | draw_list->PathStroke(GetColorU32(ImGuiCol_Border), 0, g.Style.TabBorderSize); |
| 10625 | } |
| 10626 | } |
| 10627 | |
| 10628 | // Render text label (with custom clipping) + Unsaved Document marker + Close Button logic |
| 10629 | // We tend to lock style.FramePadding for a given tab-bar, hence the 'frame_padding' parameter. |
nothing calls this directly
no test coverage detected