|
@@ -1,4 +1,4 @@
|
|
|
-// dear imgui, v1.90.4 WIP
|
|
|
+// dear imgui, v1.90.4
|
|
|
// (demo code)
|
|
|
|
|
|
// Help:
|
|
@@ -418,6 +418,12 @@ void ImGui::ShowDemoWindow(bool* p_open)
|
|
|
ImGui::MenuItem("Debug Log", NULL, &show_tool_debug_log, has_debug_tools);
|
|
|
ImGui::MenuItem("ID Stack Tool", NULL, &show_tool_id_stack_tool, has_debug_tools);
|
|
|
ImGui::MenuItem("Style Editor", NULL, &show_tool_style_editor);
|
|
|
+ bool is_debugger_present = ImGui::GetIO().ConfigDebugIsDebuggerPresent;
|
|
|
+ if (ImGui::MenuItem("Item Picker", NULL, false, has_debug_tools && is_debugger_present))
|
|
|
+ ImGui::DebugStartItemPicker();
|
|
|
+ if (!is_debugger_present)
|
|
|
+ ImGui::SetItemTooltip("Requires io.ConfigDebugIsDebuggerPresent=true to be set.\n\nWe otherwise disable the menu option to avoid casual users crashing the application.\n\nYou can however always access the Item Picker in Metrics->Tools.");
|
|
|
+ ImGui::Separator();
|
|
|
ImGui::MenuItem("About Dear ImGui", NULL, &show_tool_about);
|
|
|
ImGui::EndMenu();
|
|
|
}
|
|
@@ -8133,6 +8139,9 @@ static void ShowExampleAppCustomRendering(bool* p_open)
|
|
|
const float rounding = sz / 5.0f;
|
|
|
const int circle_segments = circle_segments_override ? circle_segments_override_v : 0;
|
|
|
const int curve_segments = curve_segments_override ? curve_segments_override_v : 0;
|
|
|
+ const ImVec2 cp3[3] = { ImVec2(0.0f, sz * 0.6f), ImVec2(sz * 0.5f, -sz * 0.4f), ImVec2(sz, sz) }; // Control points for curves
|
|
|
+ const ImVec2 cp4[4] = { ImVec2(0.0f, 0.0f), ImVec2(sz * 1.3f, sz * 0.3f), ImVec2(sz - sz * 1.3f, sz - sz * 0.3f), ImVec2(sz, sz) };
|
|
|
+
|
|
|
float x = p.x + 4.0f;
|
|
|
float y = p.y + 4.0f;
|
|
|
for (int n = 0; n < 2; n++)
|
|
@@ -8151,17 +8160,23 @@ static void ShowExampleAppCustomRendering(bool* p_open)
|
|
|
draw_list->AddLine(ImVec2(x, y), ImVec2(x, y + sz), col, th); x += spacing; // Vertical line (note: drawing a filled rectangle will be faster!)
|
|
|
draw_list->AddLine(ImVec2(x, y), ImVec2(x + sz, y + sz), col, th); x += sz + spacing; // Diagonal line
|
|
|
|
|
|
+ // Path
|
|
|
+ draw_list->PathArcTo(ImVec2(x + sz*0.5f, y + sz*0.5f), sz*0.5f, 3.141592f, 3.141592f * -0.5f);
|
|
|
+ draw_list->PathStroke(col, ImDrawFlags_None, th);
|
|
|
+ x += sz + spacing;
|
|
|
+
|
|
|
// Quadratic Bezier Curve (3 control points)
|
|
|
- ImVec2 cp3[3] = { ImVec2(x, y + sz * 0.6f), ImVec2(x + sz * 0.5f, y - sz * 0.4f), ImVec2(x + sz, y + sz) };
|
|
|
- draw_list->AddBezierQuadratic(cp3[0], cp3[1], cp3[2], col, th, curve_segments); x += sz + spacing;
|
|
|
+ draw_list->AddBezierQuadratic(ImVec2(x + cp3[0].x, y + cp3[0].y), ImVec2(x + cp3[1].x, y + cp3[1].y), ImVec2(x + cp3[2].x, y + cp3[2].y), col, th, curve_segments);
|
|
|
+ x += sz + spacing;
|
|
|
|
|
|
// Cubic Bezier Curve (4 control points)
|
|
|
- ImVec2 cp4[4] = { ImVec2(x, y), ImVec2(x + sz * 1.3f, y + sz * 0.3f), ImVec2(x + sz - sz * 1.3f, y + sz - sz * 0.3f), ImVec2(x + sz, y + sz) };
|
|
|
- draw_list->AddBezierCubic(cp4[0], cp4[1], cp4[2], cp4[3], col, th, curve_segments);
|
|
|
+ draw_list->AddBezierCubic(ImVec2(x + cp4[0].x, y + cp4[0].y), ImVec2(x + cp4[1].x, y + cp4[1].y), ImVec2(x + cp4[2].x, y + cp4[2].y), ImVec2(x + cp4[3].x, y + cp4[3].y), col, th, curve_segments);
|
|
|
|
|
|
x = p.x + 4;
|
|
|
y += sz + spacing;
|
|
|
}
|
|
|
+
|
|
|
+ // Filled shapes
|
|
|
draw_list->AddNgonFilled(ImVec2(x + sz * 0.5f, y + sz * 0.5f), sz * 0.5f, col, ngon_sides); x += sz + spacing; // N-gon
|
|
|
draw_list->AddCircleFilled(ImVec2(x + sz * 0.5f, y + sz * 0.5f), sz * 0.5f, col, circle_segments); x += sz + spacing; // Circle
|
|
|
draw_list->AddEllipseFilled(ImVec2(x + sz * 0.5f, y + sz * 0.5f), sz * 0.5f, sz * 0.3f, col, -0.3f, circle_segments); x += sz + spacing;// Ellipse
|
|
@@ -8173,9 +8188,27 @@ static void ShowExampleAppCustomRendering(bool* p_open)
|
|
|
draw_list->AddRectFilled(ImVec2(x, y), ImVec2(x + sz, y + thickness), col); x += sz + spacing; // Horizontal line (faster than AddLine, but only handle integer thickness)
|
|
|
draw_list->AddRectFilled(ImVec2(x, y), ImVec2(x + thickness, y + sz), col); x += spacing * 2.0f;// Vertical line (faster than AddLine, but only handle integer thickness)
|
|
|
draw_list->AddRectFilled(ImVec2(x, y), ImVec2(x + 1, y + 1), col); x += sz; // Pixel (faster than AddLine)
|
|
|
+
|
|
|
+ // Path
|
|
|
+ draw_list->PathArcTo(ImVec2(x + sz * 0.5f, y + sz * 0.5f), sz * 0.5f, 3.141592f * -0.5f, 3.141592f);
|
|
|
+ draw_list->PathFillConvex(col);
|
|
|
+ x += sz + spacing;
|
|
|
+
|
|
|
+ // Quadratic Bezier Curve (3 control points)
|
|
|
+ draw_list->PathLineTo(ImVec2(x + cp3[0].x, y + cp3[0].y));
|
|
|
+ draw_list->PathBezierQuadraticCurveTo(ImVec2(x + cp3[1].x, y + cp3[1].y), ImVec2(x + cp3[2].x, y + cp3[2].y), curve_segments);
|
|
|
+ draw_list->PathFillConvex(col);
|
|
|
+ x += sz + spacing;
|
|
|
+
|
|
|
+ // Cubic Bezier Curve (4 control points): this is concave so not drawing it yet
|
|
|
+ //draw_list->PathLineTo(ImVec2(x + cp4[0].x, y + cp4[0].y));
|
|
|
+ //draw_list->PathBezierCubicCurveTo(ImVec2(x + cp4[1].x, y + cp4[1].y), ImVec2(x + cp4[2].x, y + cp4[2].y), ImVec2(x + cp4[3].x, y + cp4[3].y), curve_segments);
|
|
|
+ //draw_list->PathFillConvex(col);
|
|
|
+ //x += sz + spacing;
|
|
|
+
|
|
|
draw_list->AddRectFilledMultiColor(ImVec2(x, y), ImVec2(x + sz, y + sz), IM_COL32(0, 0, 0, 255), IM_COL32(255, 0, 0, 255), IM_COL32(255, 255, 0, 255), IM_COL32(0, 255, 0, 255));
|
|
|
|
|
|
- ImGui::Dummy(ImVec2((sz + spacing) * 11.2f, (sz + spacing) * 3.0f));
|
|
|
+ ImGui::Dummy(ImVec2((sz + spacing) * 12.2f, (sz + spacing) * 3.0f));
|
|
|
ImGui::PopItemWidth();
|
|
|
ImGui::EndTabItem();
|
|
|
}
|