Подпишитесь на наш Telegram-канал, чтобы всегда быть в курсе важных обновлений! Перейти

Исходник AddRectMultiColorRounded ImGui

Забаненный
Забаненный
Статус
Оффлайн
Регистрация
14 Июл 2019
Сообщения
1,116
Реакции
505
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
жоска закруглил
C++:
Expand Collapse Copy
void ImDrawList::AddRectFilledMultiColorRounded(const ImVec2& p_min, const ImVec2& p_max, ImU32 bg_color, ImU32 col_upr_left, ImU32 col_upr_right, ImU32 col_bot_right, ImU32 col_bot_left, float rounding, ImDrawFlags rounding_corners)
{
    rounding = ImMin(rounding, ImFabs(p_max.x - p_min.x) * (((rounding_corners & ImDrawCornerFlags_Top) == ImDrawCornerFlags_Top) || ((rounding_corners & ImDrawCornerFlags_Bot) == ImDrawCornerFlags_Bot) ? 0.5f : 1.0f) - 1.0f);
    rounding = ImMin(rounding, ImFabs(p_max.y - p_min.y) * (((rounding_corners & ImDrawCornerFlags_Left) == ImDrawCornerFlags_Left) || ((rounding_corners & ImDrawCornerFlags_Right) == ImDrawCornerFlags_Right) ? 0.5f : 1.0f) - 1.0f);

    if (rounding <= 0.0f || rounding_corners == 0)
        return;
    else
    {
        const float rounding_tl = (rounding_corners & ImDrawCornerFlags_TopLeft) ? rounding : 0.0f;
        const float rounding_tr = (rounding_corners & ImDrawCornerFlags_TopRight) ? rounding : 0.0f;
        const float rounding_br = (rounding_corners & ImDrawCornerFlags_BotRight) ? rounding : 0.0f;
        const float rounding_bl = (rounding_corners & ImDrawCornerFlags_BotLeft) ? rounding : 0.0f;

        const ImVec2 uv = _Data->TexUvWhitePixel;
        PrimReserve(6, 4);
        PrimWriteIdx((ImDrawIdx)(_VtxCurrentIdx)); PrimWriteIdx((ImDrawIdx)(_VtxCurrentIdx + 1)); PrimWriteIdx((ImDrawIdx)(_VtxCurrentIdx + 2));
        PrimWriteIdx((ImDrawIdx)(_VtxCurrentIdx)); PrimWriteIdx((ImDrawIdx)(_VtxCurrentIdx + 2)); PrimWriteIdx((ImDrawIdx)(_VtxCurrentIdx + 3));
        PrimWriteVtx(p_min, uv, col_upr_left);
        PrimWriteVtx(ImVec2(p_max.x, p_min.y), uv, col_upr_right);
        PrimWriteVtx(p_max, uv, col_bot_right);
        PrimWriteVtx(ImVec2(p_min.x, p_max.y), uv, col_bot_left);

        PathLineTo(p_min);
        PathArcTo(ImVec2(p_min.x + rounding_tl, p_min.y + rounding_tl), rounding_tl, 4.820f, 3.100f);
        PathFillConvex(bg_color);

        PathLineTo(ImVec2(p_max.x, p_min.y));
        PathArcTo(ImVec2(p_max.x - rounding_tr, p_min.y + rounding_tr), rounding_tr, 6.3400f, 4.620f);
        PathFillConvex(bg_color);

        PathLineTo(ImVec2(p_max.x, p_max.y));
        PathArcTo(ImVec2(p_max.x - rounding_br, p_max.y - rounding_br), rounding_br, 7.960f, 6.240f);
        PathFillConvex(bg_color);

        PathLineTo(ImVec2(p_min.x, p_max.y));
        PathArcTo(ImVec2(p_min.x + rounding_bl, p_max.y - rounding_bl), rounding_bl, 9.5f, 7.770f);
        PathFillConvex(bg_color);

    }
}
1663327715687.png
 
Последнее редактирование:
жоска закругил
C++:
Expand Collapse Copy
void ImDrawList::AddRectFilledMultiColorRounded(const ImVec2& p_min, const ImVec2& p_max, ImU32 bg_color, ImU32 col_upr_left, ImU32 col_upr_right, ImU32 col_bot_right, ImU32 col_bot_left, float rounding, ImDrawFlags rounding_corners)
{
    rounding = ImMin(rounding, ImFabs(p_max.x - p_min.x) * (((rounding_corners & ImDrawCornerFlags_Top) == ImDrawCornerFlags_Top) || ((rounding_corners & ImDrawCornerFlags_Bot) == ImDrawCornerFlags_Bot) ? 0.5f : 1.0f) - 1.0f);
    rounding = ImMin(rounding, ImFabs(p_max.y - p_min.y) * (((rounding_corners & ImDrawCornerFlags_Left) == ImDrawCornerFlags_Left) || ((rounding_corners & ImDrawCornerFlags_Right) == ImDrawCornerFlags_Right) ? 0.5f : 1.0f) - 1.0f);

    if (rounding <= 0.0f || rounding_corners == 0)
        return;
    else
    {
        const float rounding_tl = (rounding_corners & ImDrawCornerFlags_TopLeft) ? rounding : 0.0f;
        const float rounding_tr = (rounding_corners & ImDrawCornerFlags_TopRight) ? rounding : 0.0f;
        const float rounding_br = (rounding_corners & ImDrawCornerFlags_BotRight) ? rounding : 0.0f;
        const float rounding_bl = (rounding_corners & ImDrawCornerFlags_BotLeft) ? rounding : 0.0f;

        const ImVec2 uv = _Data->TexUvWhitePixel;
        PrimReserve(6, 4);
        PrimWriteIdx((ImDrawIdx)(_VtxCurrentIdx)); PrimWriteIdx((ImDrawIdx)(_VtxCurrentIdx + 1)); PrimWriteIdx((ImDrawIdx)(_VtxCurrentIdx + 2));
        PrimWriteIdx((ImDrawIdx)(_VtxCurrentIdx)); PrimWriteIdx((ImDrawIdx)(_VtxCurrentIdx + 2)); PrimWriteIdx((ImDrawIdx)(_VtxCurrentIdx + 3));
        PrimWriteVtx(p_min, uv, col_upr_left);
        PrimWriteVtx(ImVec2(p_max.x, p_min.y), uv, col_upr_right);
        PrimWriteVtx(p_max, uv, col_bot_right);
        PrimWriteVtx(ImVec2(p_min.x, p_max.y), uv, col_bot_left);

        PathLineTo(p_min);
        PathArcTo(ImVec2(p_min.x + rounding_tl, p_min.y + rounding_tl), rounding_tl, 4.820f, 3.100f);
        PathFillConvex(bg_color);

        PathLineTo(ImVec2(p_max.x, p_min.y));
        PathArcTo(ImVec2(p_max.x - rounding_tr, p_min.y + rounding_tr), rounding_tr, 6.3400f, 4.620f);
        PathFillConvex(bg_color);

        PathLineTo(ImVec2(p_max.x, p_max.y));
        PathArcTo(ImVec2(p_max.x - rounding_br, p_max.y - rounding_br), rounding_br, 7.960f, 6.240f);
        PathFillConvex(bg_color);

        PathLineTo(ImVec2(p_min.x, p_max.y));
        PathArcTo(ImVec2(p_min.x + rounding_bl, p_max.y - rounding_bl), rounding_bl, 9.5f, 7.770f);
        PathFillConvex(bg_color);

    }
}
блять.
1663328656895.png

красава короч.
 
Последнее редактирование:
жоска закругил
C++:
Expand Collapse Copy
void ImDrawList::AddRectFilledMultiColorRounded(const ImVec2& p_min, const ImVec2& p_max, ImU32 bg_color, ImU32 col_upr_left, ImU32 col_upr_right, ImU32 col_bot_right, ImU32 col_bot_left, float rounding, ImDrawFlags rounding_corners)
{
    rounding = ImMin(rounding, ImFabs(p_max.x - p_min.x) * (((rounding_corners & ImDrawCornerFlags_Top) == ImDrawCornerFlags_Top) || ((rounding_corners & ImDrawCornerFlags_Bot) == ImDrawCornerFlags_Bot) ? 0.5f : 1.0f) - 1.0f);
    rounding = ImMin(rounding, ImFabs(p_max.y - p_min.y) * (((rounding_corners & ImDrawCornerFlags_Left) == ImDrawCornerFlags_Left) || ((rounding_corners & ImDrawCornerFlags_Right) == ImDrawCornerFlags_Right) ? 0.5f : 1.0f) - 1.0f);

    if (rounding <= 0.0f || rounding_corners == 0)
        return;
    else
    {
        const float rounding_tl = (rounding_corners & ImDrawCornerFlags_TopLeft) ? rounding : 0.0f;
        const float rounding_tr = (rounding_corners & ImDrawCornerFlags_TopRight) ? rounding : 0.0f;
        const float rounding_br = (rounding_corners & ImDrawCornerFlags_BotRight) ? rounding : 0.0f;
        const float rounding_bl = (rounding_corners & ImDrawCornerFlags_BotLeft) ? rounding : 0.0f;

        const ImVec2 uv = _Data->TexUvWhitePixel;
        PrimReserve(6, 4);
        PrimWriteIdx((ImDrawIdx)(_VtxCurrentIdx)); PrimWriteIdx((ImDrawIdx)(_VtxCurrentIdx + 1)); PrimWriteIdx((ImDrawIdx)(_VtxCurrentIdx + 2));
        PrimWriteIdx((ImDrawIdx)(_VtxCurrentIdx)); PrimWriteIdx((ImDrawIdx)(_VtxCurrentIdx + 2)); PrimWriteIdx((ImDrawIdx)(_VtxCurrentIdx + 3));
        PrimWriteVtx(p_min, uv, col_upr_left);
        PrimWriteVtx(ImVec2(p_max.x, p_min.y), uv, col_upr_right);
        PrimWriteVtx(p_max, uv, col_bot_right);
        PrimWriteVtx(ImVec2(p_min.x, p_max.y), uv, col_bot_left);

        PathLineTo(p_min);
        PathArcTo(ImVec2(p_min.x + rounding_tl, p_min.y + rounding_tl), rounding_tl, 4.820f, 3.100f);
        PathFillConvex(bg_color);

        PathLineTo(ImVec2(p_max.x, p_min.y));
        PathArcTo(ImVec2(p_max.x - rounding_tr, p_min.y + rounding_tr), rounding_tr, 6.3400f, 4.620f);
        PathFillConvex(bg_color);

        PathLineTo(ImVec2(p_max.x, p_max.y));
        PathArcTo(ImVec2(p_max.x - rounding_br, p_max.y - rounding_br), rounding_br, 7.960f, 6.240f);
        PathFillConvex(bg_color);

        PathLineTo(ImVec2(p_min.x, p_max.y));
        PathArcTo(ImVec2(p_min.x + rounding_bl, p_max.y - rounding_bl), rounding_bl, 9.5f, 7.770f);
        PathFillConvex(bg_color);

    }
}
приват функция ликед изи
 
жоска закругил
C++:
Expand Collapse Copy
void ImDrawList::AddRectFilledMultiColorRounded(const ImVec2& p_min, const ImVec2& p_max, ImU32 bg_color, ImU32 col_upr_left, ImU32 col_upr_right, ImU32 col_bot_right, ImU32 col_bot_left, float rounding, ImDrawFlags rounding_corners)
{
    rounding = ImMin(rounding, ImFabs(p_max.x - p_min.x) * (((rounding_corners & ImDrawCornerFlags_Top) == ImDrawCornerFlags_Top) || ((rounding_corners & ImDrawCornerFlags_Bot) == ImDrawCornerFlags_Bot) ? 0.5f : 1.0f) - 1.0f);
    rounding = ImMin(rounding, ImFabs(p_max.y - p_min.y) * (((rounding_corners & ImDrawCornerFlags_Left) == ImDrawCornerFlags_Left) || ((rounding_corners & ImDrawCornerFlags_Right) == ImDrawCornerFlags_Right) ? 0.5f : 1.0f) - 1.0f);

    if (rounding <= 0.0f || rounding_corners == 0)
        return;
    else
    {
        const float rounding_tl = (rounding_corners & ImDrawCornerFlags_TopLeft) ? rounding : 0.0f;
        const float rounding_tr = (rounding_corners & ImDrawCornerFlags_TopRight) ? rounding : 0.0f;
        const float rounding_br = (rounding_corners & ImDrawCornerFlags_BotRight) ? rounding : 0.0f;
        const float rounding_bl = (rounding_corners & ImDrawCornerFlags_BotLeft) ? rounding : 0.0f;

        const ImVec2 uv = _Data->TexUvWhitePixel;
        PrimReserve(6, 4);
        PrimWriteIdx((ImDrawIdx)(_VtxCurrentIdx)); PrimWriteIdx((ImDrawIdx)(_VtxCurrentIdx + 1)); PrimWriteIdx((ImDrawIdx)(_VtxCurrentIdx + 2));
        PrimWriteIdx((ImDrawIdx)(_VtxCurrentIdx)); PrimWriteIdx((ImDrawIdx)(_VtxCurrentIdx + 2)); PrimWriteIdx((ImDrawIdx)(_VtxCurrentIdx + 3));
        PrimWriteVtx(p_min, uv, col_upr_left);
        PrimWriteVtx(ImVec2(p_max.x, p_min.y), uv, col_upr_right);
        PrimWriteVtx(p_max, uv, col_bot_right);
        PrimWriteVtx(ImVec2(p_min.x, p_max.y), uv, col_bot_left);

        PathLineTo(p_min);
        PathArcTo(ImVec2(p_min.x + rounding_tl, p_min.y + rounding_tl), rounding_tl, 4.820f, 3.100f);
        PathFillConvex(bg_color);

        PathLineTo(ImVec2(p_max.x, p_min.y));
        PathArcTo(ImVec2(p_max.x - rounding_tr, p_min.y + rounding_tr), rounding_tr, 6.3400f, 4.620f);
        PathFillConvex(bg_color);

        PathLineTo(ImVec2(p_max.x, p_max.y));
        PathArcTo(ImVec2(p_max.x - rounding_br, p_max.y - rounding_br), rounding_br, 7.960f, 6.240f);
        PathFillConvex(bg_color);

        PathLineTo(ImVec2(p_min.x, p_max.y));
        PathArcTo(ImVec2(p_min.x + rounding_bl, p_max.y - rounding_bl), rounding_bl, 9.5f, 7.770f);
        PathFillConvex(bg_color);

    }
}
Ура, теперь появиться куча говно меню с градиентом
 
жоска закругил
C++:
Expand Collapse Copy
void ImDrawList::AddRectFilledMultiColorRounded(const ImVec2& p_min, const ImVec2& p_max, ImU32 bg_color, ImU32 col_upr_left, ImU32 col_upr_right, ImU32 col_bot_right, ImU32 col_bot_left, float rounding, ImDrawFlags rounding_corners)
{
    rounding = ImMin(rounding, ImFabs(p_max.x - p_min.x) * (((rounding_corners & ImDrawCornerFlags_Top) == ImDrawCornerFlags_Top) || ((rounding_corners & ImDrawCornerFlags_Bot) == ImDrawCornerFlags_Bot) ? 0.5f : 1.0f) - 1.0f);
    rounding = ImMin(rounding, ImFabs(p_max.y - p_min.y) * (((rounding_corners & ImDrawCornerFlags_Left) == ImDrawCornerFlags_Left) || ((rounding_corners & ImDrawCornerFlags_Right) == ImDrawCornerFlags_Right) ? 0.5f : 1.0f) - 1.0f);

    if (rounding <= 0.0f || rounding_corners == 0)
        return;
    else
    {
        const float rounding_tl = (rounding_corners & ImDrawCornerFlags_TopLeft) ? rounding : 0.0f;
        const float rounding_tr = (rounding_corners & ImDrawCornerFlags_TopRight) ? rounding : 0.0f;
        const float rounding_br = (rounding_corners & ImDrawCornerFlags_BotRight) ? rounding : 0.0f;
        const float rounding_bl = (rounding_corners & ImDrawCornerFlags_BotLeft) ? rounding : 0.0f;

        const ImVec2 uv = _Data->TexUvWhitePixel;
        PrimReserve(6, 4);
        PrimWriteIdx((ImDrawIdx)(_VtxCurrentIdx)); PrimWriteIdx((ImDrawIdx)(_VtxCurrentIdx + 1)); PrimWriteIdx((ImDrawIdx)(_VtxCurrentIdx + 2));
        PrimWriteIdx((ImDrawIdx)(_VtxCurrentIdx)); PrimWriteIdx((ImDrawIdx)(_VtxCurrentIdx + 2)); PrimWriteIdx((ImDrawIdx)(_VtxCurrentIdx + 3));
        PrimWriteVtx(p_min, uv, col_upr_left);
        PrimWriteVtx(ImVec2(p_max.x, p_min.y), uv, col_upr_right);
        PrimWriteVtx(p_max, uv, col_bot_right);
        PrimWriteVtx(ImVec2(p_min.x, p_max.y), uv, col_bot_left);

        PathLineTo(p_min);
        PathArcTo(ImVec2(p_min.x + rounding_tl, p_min.y + rounding_tl), rounding_tl, 4.820f, 3.100f);
        PathFillConvex(bg_color);

        PathLineTo(ImVec2(p_max.x, p_min.y));
        PathArcTo(ImVec2(p_max.x - rounding_tr, p_min.y + rounding_tr), rounding_tr, 6.3400f, 4.620f);
        PathFillConvex(bg_color);

        PathLineTo(ImVec2(p_max.x, p_max.y));
        PathArcTo(ImVec2(p_max.x - rounding_br, p_max.y - rounding_br), rounding_br, 7.960f, 6.240f);
        PathFillConvex(bg_color);

        PathLineTo(ImVec2(p_min.x, p_max.y));
        PathArcTo(ImVec2(p_min.x + rounding_bl, p_max.y - rounding_bl), rounding_bl, 9.5f, 7.770f);
        PathFillConvex(bg_color);

    }
}
Ну наконец-то хоть кто-то додумался сделать нормальные края у закругления
 
Ну наконец-то хоть кто-то додумался сделать нормальные края у закругления
Ты на каких наркотиках? Тема паблик уже 50 лет, сам окорнут сливал норм реализацию да и самому это сделать нихуя не сложно

p.s прочитал код создателя темы, так это как раз тот паблик код динозавровский, это не фулл правильная реализация я блять даже на черном фоне вижу как сильно у тебя зашакалены углы
 
Ты на каких наркотиках? Тема паблик уже 50 лет, сам окорнут сливал норм реализацию да и самому это сделать нихуя не сложно

p.s прочитал код создателя темы, так это как раз тот паблик код динозавровский, это не фулл правильная реализация я блять даже на черном фоне вижу как сильно у тебя зашакалены углы
Что с ними не так?
Imgui методы исключительно никаких костылей
Что ты там решил улучшать в углах? Пиксели есть пиксели так уж сделали экраны.
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Что с ними не так?
Imgui методы исключительно никаких костылей
Что ты там решил улучшать в углах? Пиксели есть пиксели так уж сделали экраны.
Так у него же углы пиздец шакальные, а тут нормальные
Пацаны вы что рофлите втф, посмотрите насколько такой "раудинг" шакалит углы, я сейчас не имею доступа к мейн компу, но если кто-то будет выебываться что невозможно сделать так что бы не шакалилось я попрошу кента что бы он скинул мне скрин с ласт реализации на имгуи :coldsideRage:
1663386824321.png
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Пацаны вы что рофлите втф, посмотрите насколько такой "раудинг" шакалит углы, я сейчас не имею доступа к мейн компу, но если кто-то будет выебываться что невозможно сделать так что бы не шакалилось я попрошу кента что бы он скинул мне скрин с ласт реализации на имгуи :coldsideRage:
Посмотреть вложение 221338
мне кажется, что ты немного обосрался
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Посмотреть вложение 221345
шок!!! в последней версии имгуи точно так же "шакалятся" углы!!!
Так кто сказал что в имгуи все полноценно сделано? Большинство людей как раз таки и делают свою версию имгуи без костылей и багов, как раз скоро выйдет такое решение от человека которого все знают. Дефолтное имгуи это вообще не совсем про красоту а больше про функциональность и стабильность, поэтому там куча проблем с шрифтами и прочим.
 
Назад
Сверху Снизу