From 28c2526c48ab3ee6f38f34adf2954a50f89173c6 Mon Sep 17 00:00:00 2001 From: iwubcode Date: Mon, 8 Apr 2024 23:37:06 -0500 Subject: [PATCH] VideoCommon: add graphics mod editor control for displaying a colored box --- .../Controls/MiscControls.cpp | 46 +++++++++++++++++++ .../GraphicsModEditor/Controls/MiscControls.h | 12 +++++ 2 files changed, 58 insertions(+) create mode 100644 Source/Core/VideoCommon/GraphicsModEditor/Controls/MiscControls.cpp create mode 100644 Source/Core/VideoCommon/GraphicsModEditor/Controls/MiscControls.h diff --git a/Source/Core/VideoCommon/GraphicsModEditor/Controls/MiscControls.cpp b/Source/Core/VideoCommon/GraphicsModEditor/Controls/MiscControls.cpp new file mode 100644 index 0000000000..eaffde08d0 --- /dev/null +++ b/Source/Core/VideoCommon/GraphicsModEditor/Controls/MiscControls.cpp @@ -0,0 +1,46 @@ +// Copyright 2024 Dolphin Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "VideoCommon/GraphicsModEditor/Controls/MiscControls.h" + +namespace GraphicsModEditor::Controls +{ +bool ColorButton(const char* label, ImVec2 buttonSize, ImVec4 color) +{ + ImGui::PushStyleColor(ImGuiCol_Button, color); + bool pressed = ImGui::Button(label, buttonSize); + + // Draw a gradient on top of the button + { + ImVec2 tl = ImGui::GetItemRectMin(); + ImVec2 br = ImGui::GetItemRectMax(); + ImVec2 size = ImGui::GetItemRectSize(); + + float k = 0.3f; + + ImVec2 tl_middle(tl.x, tl.y + size.y * (1.f - k)); + ImVec2 br_middle(br.x, tl.y + size.y * k); + + ImVec4 col_darker(0.f, 0.f, 0.f, 0.2f); + ImVec4 col_interm(0.f, 0.f, 0.f, 0.1f); + ImVec4 col_transp(0.f, 0.f, 0.f, 0.f); + + ImGui::GetForegroundDrawList()->AddRectFilledMultiColor( + tl, br_middle, + ImGui::GetColorU32(col_interm), // upper left + ImGui::GetColorU32(col_interm), // upper right + ImGui::GetColorU32(col_transp), // bottom right + ImGui::GetColorU32(col_transp) // bottom left + ); + ImGui::GetForegroundDrawList()->AddRectFilledMultiColor( + tl_middle, br, + ImGui::GetColorU32(col_transp), // upper left + ImGui::GetColorU32(col_transp), // upper right + ImGui::GetColorU32(col_darker), // bottom right + ImGui::GetColorU32(col_darker) // bottom left + ); + } + ImGui::PopStyleColor(); + return pressed; +} +} // namespace GraphicsModEditor::Controls diff --git a/Source/Core/VideoCommon/GraphicsModEditor/Controls/MiscControls.h b/Source/Core/VideoCommon/GraphicsModEditor/Controls/MiscControls.h new file mode 100644 index 0000000000..69c02bf278 --- /dev/null +++ b/Source/Core/VideoCommon/GraphicsModEditor/Controls/MiscControls.h @@ -0,0 +1,12 @@ +// Copyright 2024 Dolphin Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include + +namespace GraphicsModEditor::Controls +{ +// Pulled from the tips and tricks cafe on 2023, credit to pthom +bool ColorButton(const char* label, ImVec2 buttonSize, ImVec4 color); +} // namespace GraphicsModEditor::Controls