add theme
This commit is contained in:
105
src/main.cpp
105
src/main.cpp
@@ -51,6 +51,110 @@ static void setup_menus(PlatformWindow *window)
|
|||||||
platform_set_menu(window, menus, sizeof(menus) / sizeof(menus[0]));
|
platform_set_menu(window, menus, sizeof(menus) / sizeof(menus[0]));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void setup_theme()
|
||||||
|
{
|
||||||
|
ImGuiIO &io = ImGui::GetIO();
|
||||||
|
|
||||||
|
// Load Segoe UI from Windows system fonts
|
||||||
|
ImFontConfig font_cfg = {};
|
||||||
|
font_cfg.OversampleH = 2;
|
||||||
|
font_cfg.OversampleV = 1;
|
||||||
|
font_cfg.PixelSnapH = true;
|
||||||
|
io.Fonts->AddFontFromFileTTF("C:\\Windows\\Fonts\\segoeui.ttf", 15.0f, &font_cfg);
|
||||||
|
|
||||||
|
// DAW-style dark theme
|
||||||
|
ImGuiStyle &s = ImGui::GetStyle();
|
||||||
|
|
||||||
|
// Geometry
|
||||||
|
s.WindowPadding = ImVec2(8, 8);
|
||||||
|
s.FramePadding = ImVec2(6, 4);
|
||||||
|
s.ItemSpacing = ImVec2(8, 4);
|
||||||
|
s.ItemInnerSpacing = ImVec2(4, 4);
|
||||||
|
s.ScrollbarSize = 12.0f;
|
||||||
|
s.GrabMinSize = 8.0f;
|
||||||
|
s.WindowBorderSize = 1.0f;
|
||||||
|
s.FrameBorderSize = 0.0f;
|
||||||
|
s.TabBorderSize = 0.0f;
|
||||||
|
s.WindowRounding = 2.0f;
|
||||||
|
s.FrameRounding = 2.0f;
|
||||||
|
s.GrabRounding = 2.0f;
|
||||||
|
s.TabRounding = 2.0f;
|
||||||
|
s.ScrollbarRounding = 2.0f;
|
||||||
|
|
||||||
|
ImVec4 *c = s.Colors;
|
||||||
|
|
||||||
|
// Backgrounds
|
||||||
|
c[ImGuiCol_WindowBg] = ImVec4(0.12f, 0.12f, 0.13f, 1.00f);
|
||||||
|
c[ImGuiCol_ChildBg] = ImVec4(0.12f, 0.12f, 0.13f, 1.00f);
|
||||||
|
c[ImGuiCol_PopupBg] = ImVec4(0.15f, 0.15f, 0.16f, 1.00f);
|
||||||
|
|
||||||
|
// Borders
|
||||||
|
c[ImGuiCol_Border] = ImVec4(0.22f, 0.22f, 0.24f, 1.00f);
|
||||||
|
c[ImGuiCol_BorderShadow] = ImVec4(0.00f, 0.00f, 0.00f, 0.00f);
|
||||||
|
|
||||||
|
// Text
|
||||||
|
c[ImGuiCol_Text] = ImVec4(0.88f, 0.88f, 0.88f, 1.00f);
|
||||||
|
c[ImGuiCol_TextDisabled] = ImVec4(0.44f, 0.44f, 0.44f, 1.00f);
|
||||||
|
|
||||||
|
// Headers (collapsing headers, menu bar items)
|
||||||
|
c[ImGuiCol_Header] = ImVec4(0.20f, 0.20f, 0.22f, 1.00f);
|
||||||
|
c[ImGuiCol_HeaderHovered] = ImVec4(0.28f, 0.28f, 0.30f, 1.00f);
|
||||||
|
c[ImGuiCol_HeaderActive] = ImVec4(0.24f, 0.24f, 0.26f, 1.00f);
|
||||||
|
|
||||||
|
// Buttons
|
||||||
|
c[ImGuiCol_Button] = ImVec4(0.22f, 0.22f, 0.24f, 1.00f);
|
||||||
|
c[ImGuiCol_ButtonHovered] = ImVec4(0.30f, 0.30f, 0.33f, 1.00f);
|
||||||
|
c[ImGuiCol_ButtonActive] = ImVec4(0.26f, 0.26f, 0.28f, 1.00f);
|
||||||
|
|
||||||
|
// Frame backgrounds (inputs, checkboxes, sliders)
|
||||||
|
c[ImGuiCol_FrameBg] = ImVec4(0.16f, 0.16f, 0.17f, 1.00f);
|
||||||
|
c[ImGuiCol_FrameBgHovered] = ImVec4(0.20f, 0.20f, 0.22f, 1.00f);
|
||||||
|
c[ImGuiCol_FrameBgActive] = ImVec4(0.18f, 0.18f, 0.20f, 1.00f);
|
||||||
|
|
||||||
|
// Tabs
|
||||||
|
c[ImGuiCol_Tab] = ImVec4(0.16f, 0.16f, 0.17f, 1.00f);
|
||||||
|
c[ImGuiCol_TabHovered] = ImVec4(0.28f, 0.28f, 0.30f, 1.00f);
|
||||||
|
c[ImGuiCol_TabSelected] = ImVec4(0.20f, 0.20f, 0.22f, 1.00f);
|
||||||
|
c[ImGuiCol_TabSelectedOverline] = ImVec4(0.34f, 0.54f, 0.69f, 1.00f);
|
||||||
|
c[ImGuiCol_TabDimmed] = ImVec4(0.12f, 0.12f, 0.13f, 1.00f);
|
||||||
|
c[ImGuiCol_TabDimmedSelected] = ImVec4(0.16f, 0.16f, 0.17f, 1.00f);
|
||||||
|
|
||||||
|
// Title bar
|
||||||
|
c[ImGuiCol_TitleBg] = ImVec4(0.10f, 0.10f, 0.11f, 1.00f);
|
||||||
|
c[ImGuiCol_TitleBgActive] = ImVec4(0.13f, 0.13f, 0.14f, 1.00f);
|
||||||
|
c[ImGuiCol_TitleBgCollapsed] = ImVec4(0.10f, 0.10f, 0.11f, 1.00f);
|
||||||
|
|
||||||
|
// Scrollbar
|
||||||
|
c[ImGuiCol_ScrollbarBg] = ImVec4(0.10f, 0.10f, 0.11f, 1.00f);
|
||||||
|
c[ImGuiCol_ScrollbarGrab] = ImVec4(0.24f, 0.24f, 0.26f, 1.00f);
|
||||||
|
c[ImGuiCol_ScrollbarGrabHovered]= ImVec4(0.30f, 0.30f, 0.33f, 1.00f);
|
||||||
|
c[ImGuiCol_ScrollbarGrabActive] = ImVec4(0.34f, 0.34f, 0.37f, 1.00f);
|
||||||
|
|
||||||
|
// Slider grab
|
||||||
|
c[ImGuiCol_SliderGrab] = ImVec4(0.34f, 0.54f, 0.69f, 1.00f);
|
||||||
|
c[ImGuiCol_SliderGrabActive] = ImVec4(0.40f, 0.60f, 0.75f, 1.00f);
|
||||||
|
|
||||||
|
// Checkmark, accent
|
||||||
|
c[ImGuiCol_CheckMark] = ImVec4(0.34f, 0.54f, 0.69f, 1.00f);
|
||||||
|
|
||||||
|
// Separator
|
||||||
|
c[ImGuiCol_Separator] = ImVec4(0.22f, 0.22f, 0.24f, 1.00f);
|
||||||
|
c[ImGuiCol_SeparatorHovered] = ImVec4(0.34f, 0.54f, 0.69f, 1.00f);
|
||||||
|
c[ImGuiCol_SeparatorActive] = ImVec4(0.34f, 0.54f, 0.69f, 1.00f);
|
||||||
|
|
||||||
|
// Resize grip
|
||||||
|
c[ImGuiCol_ResizeGrip] = ImVec4(0.22f, 0.22f, 0.24f, 0.50f);
|
||||||
|
c[ImGuiCol_ResizeGripHovered] = ImVec4(0.34f, 0.54f, 0.69f, 0.67f);
|
||||||
|
c[ImGuiCol_ResizeGripActive] = ImVec4(0.34f, 0.54f, 0.69f, 0.95f);
|
||||||
|
|
||||||
|
// Docking
|
||||||
|
c[ImGuiCol_DockingPreview] = ImVec4(0.34f, 0.54f, 0.69f, 0.70f);
|
||||||
|
c[ImGuiCol_DockingEmptyBg] = ImVec4(0.10f, 0.10f, 0.11f, 1.00f);
|
||||||
|
|
||||||
|
// Menu bar
|
||||||
|
c[ImGuiCol_MenuBarBg] = ImVec4(0.14f, 0.14f, 0.15f, 1.00f);
|
||||||
|
}
|
||||||
|
|
||||||
static void build_default_layout(ImGuiID dockspace_id)
|
static void build_default_layout(ImGuiID dockspace_id)
|
||||||
{
|
{
|
||||||
ImGui::DockBuilderRemoveNode(dockspace_id);
|
ImGui::DockBuilderRemoveNode(dockspace_id);
|
||||||
@@ -93,6 +197,7 @@ int main(int argc, char **argv)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
setup_theme();
|
||||||
setup_menus(window);
|
setup_menus(window);
|
||||||
|
|
||||||
int32_t last_w = w, last_h = h;
|
int32_t last_w = w, last_h = h;
|
||||||
|
|||||||
Reference in New Issue
Block a user