|
|
|
@ -924,17 +924,18 @@ static void ShowDemoWindowWidgets()
|
|
|
|
|
}
|
|
|
|
|
if (ImGui::TreeNode("Grid"))
|
|
|
|
|
{
|
|
|
|
|
static bool selected[16] = { true, false, false, false, false, true, false, false, false, false, true, false, false, false, false, true };
|
|
|
|
|
for (int i = 0; i < 16; i++)
|
|
|
|
|
static bool selected[4*4] = { true, false, false, false, false, true, false, false, false, false, true, false, false, false, false, true };
|
|
|
|
|
for (int i = 0; i < 4*4; i++)
|
|
|
|
|
{
|
|
|
|
|
ImGui::PushID(i);
|
|
|
|
|
if (ImGui::Selectable("Sailor", &selected[i], 0, ImVec2(50,50)))
|
|
|
|
|
{
|
|
|
|
|
int x = i % 4, y = i / 4;
|
|
|
|
|
if (x > 0) selected[i - 1] ^= 1;
|
|
|
|
|
if (x < 3) selected[i + 1] ^= 1;
|
|
|
|
|
if (y > 0) selected[i - 4] ^= 1;
|
|
|
|
|
if (y < 3) selected[i + 4] ^= 1;
|
|
|
|
|
int x = i % 4;
|
|
|
|
|
int y = i / 4;
|
|
|
|
|
if (x > 0) { selected[i - 1] ^= 1; }
|
|
|
|
|
if (x < 3) { selected[i + 1] ^= 1; }
|
|
|
|
|
if (y > 0) { selected[i - 4] ^= 1; }
|
|
|
|
|
if (y < 3) { selected[i + 4] ^= 1; }
|
|
|
|
|
}
|
|
|
|
|
if ((i % 4) < 3) ImGui::SameLine();
|
|
|
|
|
ImGui::PopID();
|
|
|
|
@ -1000,7 +1001,7 @@ static void ShowDemoWindowWidgets()
|
|
|
|
|
static float values[90] = { 0 };
|
|
|
|
|
static int values_offset = 0;
|
|
|
|
|
static double refresh_time = 0.0;
|
|
|
|
|
if (!animate || refresh_time == 0.0f)
|
|
|
|
|
if (!animate || refresh_time == 0.0)
|
|
|
|
|
refresh_time = ImGui::GetTime();
|
|
|
|
|
while (refresh_time < ImGui::GetTime()) // Create dummy data at fixed 60 hz rate for the demo
|
|
|
|
|
{
|
|
|
|
@ -2032,9 +2033,9 @@ static void ShowDemoWindowLayout()
|
|
|
|
|
ImGui::EndChild();
|
|
|
|
|
ImGui::PopStyleVar(2);
|
|
|
|
|
float scroll_x_delta = 0.0f;
|
|
|
|
|
ImGui::SmallButton("<<"); if (ImGui::IsItemActive()) scroll_x_delta = -ImGui::GetIO().DeltaTime * 1000.0f; ImGui::SameLine();
|
|
|
|
|
ImGui::SmallButton("<<"); if (ImGui::IsItemActive()) { scroll_x_delta = -ImGui::GetIO().DeltaTime * 1000.0f; } ImGui::SameLine();
|
|
|
|
|
ImGui::Text("Scroll from code"); ImGui::SameLine();
|
|
|
|
|
ImGui::SmallButton(">>"); if (ImGui::IsItemActive()) scroll_x_delta = +ImGui::GetIO().DeltaTime * 1000.0f; ImGui::SameLine();
|
|
|
|
|
ImGui::SmallButton(">>"); if (ImGui::IsItemActive()) { scroll_x_delta = +ImGui::GetIO().DeltaTime * 1000.0f; } ImGui::SameLine();
|
|
|
|
|
ImGui::Text("%.0f/%.0f", scroll_x, scroll_max_x);
|
|
|
|
|
if (scroll_x_delta != 0.0f)
|
|
|
|
|
{
|
|
|
|
@ -2562,9 +2563,9 @@ static void ShowDemoWindowMisc()
|
|
|
|
|
// Use >= 0 parameter to SetKeyboardFocusHere() to focus an upcoming item
|
|
|
|
|
static float f3[3] = { 0.0f, 0.0f, 0.0f };
|
|
|
|
|
int focus_ahead = -1;
|
|
|
|
|
if (ImGui::Button("Focus on X")) focus_ahead = 0; ImGui::SameLine();
|
|
|
|
|
if (ImGui::Button("Focus on Y")) focus_ahead = 1; ImGui::SameLine();
|
|
|
|
|
if (ImGui::Button("Focus on Z")) focus_ahead = 2;
|
|
|
|
|
if (ImGui::Button("Focus on X")) { focus_ahead = 0; } ImGui::SameLine();
|
|
|
|
|
if (ImGui::Button("Focus on Y")) { focus_ahead = 1; } ImGui::SameLine();
|
|
|
|
|
if (ImGui::Button("Focus on Z")) { focus_ahead = 2; }
|
|
|
|
|
if (focus_ahead != -1) ImGui::SetKeyboardFocusHere(focus_ahead);
|
|
|
|
|
ImGui::SliderFloat3("Float3", &f3[0], 0.0f, 1.0f);
|
|
|
|
|
|
|
|
|
@ -3811,8 +3812,8 @@ static void ShowExampleAppConstrainedResize(bool* p_open)
|
|
|
|
|
if (type == 2) ImGui::SetNextWindowSizeConstraints(ImVec2(100, 100), ImVec2(FLT_MAX, FLT_MAX)); // Width > 100, Height > 100
|
|
|
|
|
if (type == 3) ImGui::SetNextWindowSizeConstraints(ImVec2(400, -1), ImVec2(500, -1)); // Width 400-500
|
|
|
|
|
if (type == 4) ImGui::SetNextWindowSizeConstraints(ImVec2(-1, 400), ImVec2(-1, 500)); // Height 400-500
|
|
|
|
|
if (type == 5) ImGui::SetNextWindowSizeConstraints(ImVec2(0, 0), ImVec2(FLT_MAX, FLT_MAX), CustomConstraints::Square); // Always Square
|
|
|
|
|
if (type == 6) ImGui::SetNextWindowSizeConstraints(ImVec2(0, 0), ImVec2(FLT_MAX, FLT_MAX), CustomConstraints::Step, (void*)100);// Fixed Step
|
|
|
|
|
if (type == 5) ImGui::SetNextWindowSizeConstraints(ImVec2(0, 0), ImVec2(FLT_MAX, FLT_MAX), CustomConstraints::Square); // Always Square
|
|
|
|
|
if (type == 6) ImGui::SetNextWindowSizeConstraints(ImVec2(0, 0), ImVec2(FLT_MAX, FLT_MAX), CustomConstraints::Step, (void*)(intptr_t)100); // Fixed Step
|
|
|
|
|
|
|
|
|
|
ImGuiWindowFlags flags = auto_resize ? ImGuiWindowFlags_AlwaysAutoResize : 0;
|
|
|
|
|
if (ImGui::Begin("Example: Constrained Resize", p_open, flags))
|
|
|
|
@ -3853,6 +3854,7 @@ static void ShowExampleAppSimpleOverlay(bool* p_open)
|
|
|
|
|
// FIXME-VIEWPORT-ABS: Select a default viewport
|
|
|
|
|
const float DISTANCE = 10.0f;
|
|
|
|
|
static int corner = 0;
|
|
|
|
|
ImGuiIO& io = ImGui::GetIO();
|
|
|
|
|
if (corner != -1)
|
|
|
|
|
{
|
|
|
|
|
ImGuiViewport* viewport = ImGui::GetMainViewport();
|
|
|
|
@ -3867,7 +3869,7 @@ static void ShowExampleAppSimpleOverlay(bool* p_open)
|
|
|
|
|
ImGui::Text("Simple overlay\n" "in the corner of the screen.\n" "(right-click to change position)");
|
|
|
|
|
ImGui::Separator();
|
|
|
|
|
if (ImGui::IsMousePosValid())
|
|
|
|
|
ImGui::Text("Mouse Position: (%.1f,%.1f)", ImGui::GetIO().MousePos.x, ImGui::GetIO().MousePos.y);
|
|
|
|
|
ImGui::Text("Mouse Position: (%.1f,%.1f)", io.MousePos.x, io.MousePos.y);
|
|
|
|
|
else
|
|
|
|
|
ImGui::Text("Mouse Position: <invalid>");
|
|
|
|
|
if (ImGui::BeginPopupContextWindow())
|
|
|
|
|