void ImGui::EndChild(bool shadow) {
ImGuiWindow* window = GetCurrentWindow();
ImVec2 min_top, max_top, min_bot, max_bot;
if (window->ScrollbarY) {
auto min_top = ImGui::GetWindowPos();
auto max_top = min_top + ImVec2(GetWindowSize().x, 15);
auto min_bot = min_top + ImVec2(0, GetWindowSize().y - 15);
auto max_bot = min_bot + ImVec2(GetWindowSize().x, 15);
auto arrow = [window](int x, int y, bool normal, float clr = 0.59f) {
if (normal) {
for (auto i = 5; i >= 3; --i) {
auto offset = 5 - i;
window->DrawList->AddLine(ImVec2(x + offset, y + offset), ImVec2(x + offset + nigga(i - offset, 0, 5), y + offset), ImColor(clr, clr, clr));
}
}
else {
window->DrawList->AddLine(ImVec2(x + 2, y), ImVec2(x + 3, y), ImColor(clr, clr, clr));
window->DrawList->AddLine(ImVec2(x + 1, y + 1), ImVec2(x + 4, y + 1), ImColor(clr, clr, clr));
window->DrawList->AddLine(ImVec2(x, y + 2), ImVec2(x + 5, y + 2), ImColor(clr, clr, clr));
}
};
if (window->Scroll.y > 1.0f) {
window->DrawList->AddRectFilledMultiColor(min_top - ImVec2(7, 0), max_top - ImVec2(1, 0), ImColor(0, 0, 0, 100), ImColor(0, 0, 0, 100), ImColor(0, 0, 0, 0), ImColor(0, 0, 0, 0));
arrow(max_top.x - 20, max_top.y - 8, false);
}
if ((GetScrollMaxY() - window->Scroll.y) > 1.f) {
window->DrawList->AddRectFilledMultiColor(min_bot - ImVec2(7, 0), max_bot - ImVec2(1, 0), ImColor(0, 0, 0, 0), ImColor(0, 0, 0, 0), ImColor(0, 0, 0, 100), ImColor(0, 0, 0, 100));
arrow(max_bot.x - 20, max_bot.y - 10, true);
}
}
if (shadow) {
std::string window_title(window->Name);
window_title = std::string(&window_title[0] + window_title.find(".") + 1);
window_title[window_title.find(".")] = '\0';
ImVec2 text_position(window->Pos.x + 12.0f, window->Pos.y + CalcTextSize(window_title.c_str()).y - 18.0f);
ImVec2 line_min(text_position.x - 3.0f, window->Pos.y);
ImVec2 line_max(text_position.x + CalcTextSize(window_title.c_str()).x + 3.0f, GetWindowPos().y);
ImRect title_bar_rect = window->TitleBarRect();
ImRect clip_rect;
clip_rect.Min.x = ImFloor(0.5f + title_bar_rect.Min.x + ImMax(window->BorderSize, ImFloor(window->WindowPadding.x * 0.1f)));
clip_rect.Min.y = ImFloor(0.5f + title_bar_rect.Max.y + window->MenuBarHeight() + window->BorderSize) - 16;
clip_rect.Max.x = ImFloor(0.5f + window->Pos.x + window->Size.x - window->ScrollbarSizes.x - ImMax(window->BorderSize, ImFloor(window->WindowPadding.x * 0.1f)));
clip_rect.Max.y = ImFloor(0.5f + window->Pos.y + window->Size.y - window->ScrollbarSizes.y - window->BorderSize);
PushClipRect(clip_rect.Min, clip_rect.Max, false);
ImGui::GetWindowDrawList()->AddLine(line_min, line_max, GetColorU32(ImGuiCol_ChildWindowBg));
ImGui::GetWindowDrawList()->AddText(ImVec2(text_position.x - 1, text_position.y - 1), IM_COL32(0, 0, 0, 255), window_title.c_str());
ImGui::GetWindowDrawList()->AddText(ImVec2(text_position.x - 1, text_position.y), IM_COL32(0, 0, 0, 255), window_title.c_str());
ImGui::GetWindowDrawList()->AddText(ImVec2(text_position.x - 1, text_position.y + 1), IM_COL32(0, 0, 0, 255), window_title.c_str());
ImGui::GetWindowDrawList()->AddText(ImVec2(text_position.x, text_position.y - 1), IM_COL32(0, 0, 0, 255), window_title.c_str());
ImGui::GetWindowDrawList()->AddText(ImVec2(text_position.x, text_position.y + 1), IM_COL32(0, 0, 0, 255), window_title.c_str());
ImGui::GetWindowDrawList()->AddText(ImVec2(text_position.x + 1, text_position.y - 1), IM_COL32(0, 0, 0, 255), window_title.c_str());
ImGui::GetWindowDrawList()->AddText(ImVec2(text_position.x + 1, text_position.y), IM_COL32(0, 0, 0, 255), window_title.c_str());
ImGui::GetWindowDrawList()->AddText(ImVec2(text_position.x + 1, text_position.y + 1), IM_COL32(0, 0, 0, 255), window_title.c_str());
ImGui::GetWindowDrawList()->AddText(text_position, IM_COL32(255, 255, 255, 255), window_title.c_str());
PopClipRect();
}