Stop Staring At the Shadows
привет skvizxcc, немного по поводу кода
1 - попытайся избегать подобных магических чисел и странных калькуляций в коде. создавай переменную и нейми её тем, за что она отвечает, при подобном подходе юзеру твоего сурса будет в десятки раз проще разобраться и использоваться / портировать твои исходники.
по поводу константы "200", лучше делай как-то так:
функция "renderer_tab" сама по себе немного странная, тебе нет смысла выполнять подобные мувы
если ты можешь передавать айдишник таба прямо в функцию, а саму переменную tab передавать как объект (по ссылке), и изменять её прямо из-под функции.
хоть чуть-чуть, да лучше же стало, согласен?
1 - попытайся избегать подобных магических чисел и странных калькуляций в коде. создавай переменную и нейми её тем, за что она отвечает, при подобном подходе юзеру твоего сурса будет в десятки раз проще разобраться и использоваться / портировать твои исходники.
по поводу константы "200", лучше делай как-то так:
C++:
constexpr float x_spacing = 200;
если ты можешь передавать айдишник таба прямо в функцию, а саму переменную tab передавать как объект (по ссылке), и изменять её прямо из-под функции.
C++:
bool ImGui::render_tab(const char* icon, const char* name, int tab_id, int& tab_variable)
{
ImGuiWindow* window = ImGui::GetCurrentWindow();
if (window->SkipItems)
return false;
ImDrawList* draw = window->DrawList;
const ImGuiID id = window->GetID(name);
const bool is_selected = tab_id == tab_variable;
const ImVec2 pos = window->DC.CursorPos;
const ImVec2 size = { 140, 38 };
const ImRect bb(pos, pos + size);
ImGui::ItemSize(size, 0);
if (!ImGui::ItemAdd(bb, id))
return false;
bool hovered, held;
bool pressed = ImGui::ButtonBehavior(bb, id, &hovered, &held, NULL);
if (pressed) {
tab_variable = tab_id;
}
//if (hovered || held)
// ImGui::SetMouseCursor(9); Useless
if (is_selected)
draw->AddRectFilled(ImVec2(bb.Min.x, bb.Min.y), ImVec2(bb.Min.x + 130, bb.Min.y + 36 - 7), ImColor(25, 24, 25), 5);
ImGui::PushFont(opt.InterMedium);
draw->AddText(ImVec2(bb.Min.x + 10 + 26, bb.Min.y + 12 - 6), is_selected ? ImColor(255, 255, 255) : ImColor(135, 133, 135), name);
ImGui::PopFont();
ImGui::PushFont(opt.IconFont);
draw->AddText(ImVec2(bb.Min.x + 10, bb.Min.y + 9 - 6 + 2), is_selected ? ImColor(255, 255, 255) : ImColor(135, 133, 135), icon);
ImGui::PopFont();
return pressed;
}
хоть чуть-чуть, да лучше же стало, согласен?