From 70975fe44d22dc758c5b6ba430107ee2b4a16b74 Mon Sep 17 00:00:00 2001 From: omar Date: Mon, 10 Feb 2020 22:08:52 +0100 Subject: [PATCH] Demo: Added a black and white gradient to Demo>Examples>Custom Rendering. --- docs/CHANGELOG.txt | 5 ++++- imgui_demo.cpp | 22 +++++++++++++++++++++- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/docs/CHANGELOG.txt b/docs/CHANGELOG.txt index d071c7de..b96c0d66 100644 --- a/docs/CHANGELOG.txt +++ b/docs/CHANGELOG.txt @@ -38,7 +38,10 @@ Other Changes: - ColorButton: Added ImGuiColorEditFlags_NoBorder flag to remove the border normally enforced by default for standalone ColorButton. -- Backends: Added SDL2+Metal example application. (#3017) [@coding-jackalope] +- Demo: Added a black and white gradient to Demo>Examples>Custom Rendering. +- Backends: SDL: Added ImGui_ImplSDL2_InitForMetal() for API consistency (even though the function + currently does nothing). +- Examples: Added SDL2+Metal example application. (#3017) [@coding-jackalope] ----------------------------------------------------------------------- diff --git a/imgui_demo.cpp b/imgui_demo.cpp index 32579d19..2a1676d6 100644 --- a/imgui_demo.cpp +++ b/imgui_demo.cpp @@ -4471,7 +4471,6 @@ static void ShowExampleAppCustomRendering(bool* p_open) if (ImGui::SliderInt("Circle segments", &circle_segments_override_v, 3, 40)) circle_segments_override = true; ImGui::ColorEdit4("Color", &colf.x); - ImGui::PopItemWidth(); const ImVec2 p = ImGui::GetCursorScreenPos(); const ImU32 col = ImColor(colf); const float spacing = 10.0f; @@ -4510,6 +4509,27 @@ static void ShowExampleAppCustomRendering(bool* p_open) draw_list->AddRectFilled(ImVec2(x, y), ImVec2(x + 1, y + 1), col); x += sz; // Pixel (faster than AddLine) 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) * 9.8f, (sz + spacing) * 3)); + + // Draw black and white gradients + static int gradient_steps = 16; + ImGui::Separator(); + ImGui::AlignTextToFramePadding(); + ImGui::Text("Gradient steps"); + ImGui::SameLine(); if (ImGui::RadioButton("16", gradient_steps == 16)) { gradient_steps = 16; } + ImGui::SameLine(); if (ImGui::RadioButton("32", gradient_steps == 32)) { gradient_steps = 32; } + ImGui::SameLine(); if (ImGui::RadioButton("256", gradient_steps == 256)) { gradient_steps = 256; } + ImVec2 gradient_size = ImVec2(ImGui::CalcItemWidth(), 64.0f); + x = ImGui::GetCursorScreenPos().x; + y = ImGui::GetCursorScreenPos().y; + for (int n = 0; n < gradient_steps; n++) + { + float f = n / (float)gradient_steps; + ImU32 col32 = ImGui::GetColorU32(ImVec4(f, f, f, 1.0f)); + draw_list->AddRectFilled(ImVec2(x + gradient_size.x * (n / (float)gradient_steps), y), ImVec2(x + gradient_size.x * ((n+1) / (float)gradient_steps), y + gradient_size.y), col32); + } + ImGui::InvisibleButton("##gradient", gradient_size); + + ImGui::PopItemWidth(); ImGui::EndTabItem(); }