|
@@ -3829,7 +3829,28 @@ void ImGui::ShowStyleEditor(ImGuiStyle* ref)
|
|
|
ImGui::PushItemWidth(100);
|
|
|
ImGui::DragFloat("Curve Tessellation Tolerance", &style.CurveTessellationTol, 0.02f, 0.10f, 10.0f, "%.2f");
|
|
|
if (style.CurveTessellationTol < 0.10f) style.CurveTessellationTol = 0.10f;
|
|
|
- ImGui::DragFloat("Circle segment Max Error", &style.CircleSegmentMaxError, 0.01f, 0.10f, 10.0f, "%.2f");
|
|
|
+
|
|
|
+ // When editing the "Circle Segment Max Error" value, draw a preview of its effect on auto-tessellated circles.
|
|
|
+ ImGui::DragFloat("Circle Segment Max Error", &style.CircleSegmentMaxError, 0.01f, 0.10f, 10.0f, "%.2f");
|
|
|
+ if (ImGui::IsItemActive())
|
|
|
+ {
|
|
|
+ ImGui::SetNextWindowPos(ImGui::GetCursorScreenPos());
|
|
|
+ ImGui::BeginTooltip();
|
|
|
+ ImVec2 p = ImGui::GetCursorScreenPos();
|
|
|
+ float RAD_MIN = 10.0f, RAD_MAX = 80.0f;
|
|
|
+ float off_x = 10.0f;
|
|
|
+ for (int n = 0; n < 7; n++)
|
|
|
+ {
|
|
|
+ const float rad = RAD_MIN + (RAD_MAX - RAD_MIN) * (float)n / (7.0f - 1.0f);
|
|
|
+ ImGui::GetWindowDrawList()->AddCircle(ImVec2(p.x + off_x + rad, p.y + RAD_MAX), rad, ImGui::GetColorU32(ImGuiCol_Text), 0);
|
|
|
+ off_x += 10.0f + rad * 2.0f;
|
|
|
+ }
|
|
|
+ ImGui::Dummy(ImVec2(off_x, RAD_MAX * 2.0f));
|
|
|
+ ImGui::EndTooltip();
|
|
|
+ }
|
|
|
+ ImGui::SameLine();
|
|
|
+ HelpMarker("When drawing circle primitives with \"num_segments == 0\" tesselation will be calculated automatically.");
|
|
|
+
|
|
|
ImGui::DragFloat("Global Alpha", &style.Alpha, 0.005f, 0.20f, 1.0f, "%.2f"); // Not exposing zero here so user doesn't "lose" the UI (zero alpha clips all widgets). But application code could have a toggle to switch between zero and non-zero.
|
|
|
ImGui::PopItemWidth();
|
|
|
|