Кастомный свитч в ImGui C++
namespace ImGui {
bool CustomToggle(bool th ,const char* label, bool* v) {
ImGuiWindow* window = ImGui::GetCurrentWindow();
ImGui::PushID(label);ImGui::TextColored((*v ? (th ? ImVec4(1.0f, 1.0f, 1.0f, 1.00f) : ImVec4(0.0f, 0.0f, 0.0f, 1.00f)) : (th ? ImVec4(0.65f, 0.65f, 0.65f, 1.00f): ImVec4(0.30f, 0.30f, 0.30f, 1.00f))), label);
ImGui::SameLine();
float height = ImGui::GetFrameHeight();
float width = height * 1.55f;
ImGuiStyle& style = ImGui::GetStyle();
ImVec2 p = ImGui::GetCursorScreenPos();
// Colors
ImU32 color_bg_on = ImGui::GetColorU32(ImVec4(0.0f, 0.0f, 0.0f, 0.0f));
ImU32 color_bg_off = ImGui::GetColorU32(ImVec4(0.0f, 0.0f, 0.0f, 0.0f));
ImU32 color_knob = *v ? ImGui::GetColorU32(ImVec4(0.34f, 0.06f, 0.98f, 1.00f)) :
ImGui::GetColorU32(ImVec4(0.36f, 0.36f, 0.36f, 1.0f));
ImU32 glow_color = ImGui::GetColorU32(ImVec4(0.34f, 0.06f, 0.98f, 0.3f)); // Цвет свечения
ImU32 border_color = ImGui::GetColorU32(ImGuiCol_Border);
ImGui::InvisibleButton(label, ImVec2(width, height));
bool clicked = ImGui::IsItemClicked();
if (clicked) *v = !(*v);
// Background + Border
ImDrawList* draw_list = ImGui::GetWindowDrawList();
draw_list->AddRectFilled(p, ImVec2(p.x + width, p.y + height), *v ? color_bg_on : color_bg_off, height);
if (style.FrameBorderSize > 0.0f) {
draw_list->AddRect(
p,
ImVec2(p.x + width, p.y + height),
border_color,
height * 0.5f,
0,
style.FrameBorderSize
);
}
// Knob parameters
float base_radius = *v ? 10 : 8;
ImVec2 knob_pos = *v ?
ImVec2(p.x + width - height * 0.5f, p.y + height * 0.5f) :
ImVec2(p.x + height * 0.5f, p.y + height * 0.5f);
// Glow effect (only when active)
if (*v) {
// Рисуем несколько слоев для эффекта свечения
const int glow_layers = 3;
for (int i = 0; i < glow_layers; i++) {
float alpha = 0.3f * (1.0f - (float)i / glow_layers);
float radius = base_radius + 2.0f * (i + 1);
draw_list->AddCircle(
knob_pos,
radius,
ImGui::GetColorU32(ImVec4(0.34f, 0.06f, 0.98f, alpha)),
0, // сегменты (0 = автоматически)
2.0f // толщина линии
);
}
}
// Main knob
draw_list->AddCircleFilled(knob_pos, base_radius, color_knob);
ImGui::PopID();
return clicked;
}
}This media is not supported in your browser
VIEW IN TELEGRAM
Вы заметили изменения в группе? Лайк - да , Дизлайк - нет
👎3👍2
This media is not supported in your browser
VIEW IN TELEGRAM
стрим по раньше запустил https://youtube.com/live/kEn4qb_4KQk?feature=share
YouTube
ПОДКАСТ_СТРИМ: Общение + кодинг на JS , C++ | C++ Dev
#cpp #youtube #dev #terminal #юмор
СМАЙЛЫ ДЛЯ ЮТУБА https://chromewebstore.google.com/detail/betterttv/ajopnjidmegmdimjlfnijceegpefgped
=====спросить или поддержать автора ===========
https://donationalerts.com/r/hcpp
или
https://new.donatepay.ru/@1128636…
СМАЙЛЫ ДЛЯ ЮТУБА https://chromewebstore.google.com/detail/betterttv/ajopnjidmegmdimjlfnijceegpefgped
=====спросить или поддержать автора ===========
https://donationalerts.com/r/hcpp
или
https://new.donatepay.ru/@1128636…
👎1😁1🤪1