const std = @import("std"); const c = @import("ffi.zig").c; const log = std.log.scoped(.theme); pub fn loadTheme(colors: [*]c.ImVec4) void { log.info("loading theme", .{}); colors[c.ImGuiCol_ButtonHovered] = c.ImVec4{ .x = 0.7, .y = 0.49, .z = 0.9, .w = 1.0 }; colors[c.ImGuiCol_Button] = c.ImVec4{ .x = 0.33, .y = 0.14, .z = 0.51, .w = 1.0 }; colors[c.ImGuiCol_ChildBg] = c.ImVec4{ .x = 0.1, .y = 0.0, .z = 0.2, .w = 0.85 }; colors[c.ImGuiCol_FrameBg] = c.ImVec4{ .x = 0.45, .y = 0.2, .z = 0.69, .w = 1.0 }; colors[c.ImGuiCol_HeaderHovered] = c.ImVec4{ .x = 0.45, .y = 0.2, .z = 0.69, .w = 1.0 }; colors[c.ImGuiCol_Header] = c.ImVec4{ .x = 0.26, .y = 0.1, .z = 0.43, .w = 1.0 }; colors[c.ImGuiCol_TableHeaderBg] = c.ImVec4{ .x = 0.45, .y = 0.2, .z = 0.69, .w = 0.8 }; colors[c.ImGuiCol_TitleBgActive] = c.ImVec4{ .x = 0.33, .y = 0.14, .z = 0.51, .w = 1.0 }; colors[c.ImGuiCol_WindowBg] = c.ImVec4{ .x = 0.12, .y = 0.0, .z = 0.23, .w = 0.8 }; } pub fn loadFont() !?*c.ImFont { log.info("loading fonts", .{}); const fonts = [_][:0]const u8{ "/usr/share/fonts/TTF/IosevkaNerdFont-Regular.ttf", "/usr/share/fonts/noto/NotoSans-Regular.ttf", }; for (fonts) |font| { const found = if (std.fs.accessAbsolute(font, .{})) |_| true else |e| if (e == error.FileNotFound) false else return e; if (found) { log.info("using font {s}", .{font}); return c.ImFontAtlas_AddFontFromFileTTF( c.igGetIO().*.Fonts, font.ptr, 16, null, null, ); } } return null; }