#include "demo.h" #include "core/tokens.h" #include namespace gallery { void demo_header(const char* name, const char* version, const char* description) { using namespace fn_tokens; ImGui::SetWindowFontScale(1.4f); ImGui::TextUnformatted(name); ImGui::SetWindowFontScale(1.0f); ImGui::SameLine(); ImGui::PushStyleColor(ImGuiCol_Text, colors::text_dim); ImGui::Text(" %s", version); ImGui::PopStyleColor(); if (description && *description) { ImGui::PushStyleColor(ImGuiCol_Text, colors::text_muted); ImGui::TextWrapped("%s", description); ImGui::PopStyleColor(); } ImGui::Separator(); ImGui::Dummy(ImVec2(0, spacing::sm)); } void section(const char* title) { using namespace fn_tokens; ImGui::Dummy(ImVec2(0, spacing::sm)); ImGui::PushStyleColor(ImGuiCol_Text, colors::text_muted); ImGui::TextUnformatted(title); ImGui::PopStyleColor(); ImGui::Separator(); ImGui::Dummy(ImVec2(0, spacing::xs)); } void variant_label(const char* text) { ImGui::PushStyleColor(ImGuiCol_Text, fn_tokens::colors::text_dim); ImGui::TextUnformatted(text); ImGui::PopStyleColor(); } void code_block(const char* code) { using namespace fn_tokens; ImGui::Dummy(ImVec2(0, spacing::sm)); ImGui::PushStyleColor(ImGuiCol_Text, colors::text_dim); ImGui::TextUnformatted("// example"); ImGui::PopStyleColor(); ImGui::PushStyleColor(ImGuiCol_ChildBg, colors::bg); ImGui::PushStyleColor(ImGuiCol_Border, colors::border); ImGui::PushStyleVar(ImGuiStyleVar_ChildRounding, radius::sm); ImGui::PushStyleVar(ImGuiStyleVar_ChildBorderSize, 1.0f); ImGui::PushStyleVar(ImGuiStyleVar_WindowPadding, ImVec2(spacing::md, spacing::sm)); // Altura: aprox lineas * line-height int lines = 1; for (const char* p = code; *p; ++p) if (*p == '\n') ++lines; float h = lines * ImGui::GetTextLineHeightWithSpacing() + spacing::md; char id[32]; std::snprintf(id, sizeof(id), "##code_%p", (const void*)code); ImGui::BeginChild(id, ImVec2(0, h), ImGuiChildFlags_Borders, ImGuiWindowFlags_NoScrollbar | ImGuiWindowFlags_NoScrollWithMouse); ImGui::PushStyleColor(ImGuiCol_Text, colors::text); ImGui::TextUnformatted(code); ImGui::PopStyleColor(); ImGui::EndChild(); ImGui::PopStyleVar(3); ImGui::PopStyleColor(2); } } // namespace gallery