use eframe::egui::{self, Color32};
pub const COLOR_SCANNING: Color32 = Color32::from_rgb(139, 92, 246); pub const COLOR_SCAN_COMPLETE: Color32 = Color32::from_rgb(34, 197, 94);
pub const GLOW_OUTER_BASE: Color32 = Color32::from_rgb(246, 92, 92); pub const GLOW_INNER_CORE: Color32 = Color32::from_rgb(253, 181, 181); pub const TREEMAP_DIR_FALLBACK: Color32 = Color32::from_gray(100);
pub const DELETION_BORDER: Color32 = Color32::from_rgb(220, 38, 38); pub const DELETION_WARNING: Color32 = Color32::from_rgb(239, 68, 68);
pub const INDENT_GUIDELINE: Color32 = Color32::from_gray(65);
pub const BG_PANEL_SLATE: Color32 = Color32::from_rgb(18, 20, 28);
pub const BG_WINDOW_SLATE: Color32 = Color32::from_rgb(26, 29, 38);
pub const STROKE_BORDER_SLATE: Color32 = Color32::from_rgb(38, 43, 56);
pub const EXT_RUST: Color32 = Color32::from_rgb(239, 68, 68); pub const EXT_TOML: Color32 = Color32::from_rgb(59, 130, 246); pub const EXT_GIT: Color32 = Color32::from_rgb(107, 114, 128); pub const EXT_JS_TS: Color32 = Color32::from_rgb(234, 179, 8); pub const EXT_CONFIG: Color32 = Color32::from_rgb(168, 85, 247); pub const EXT_WEB: Color32 = Color32::from_rgb(249, 115, 22); pub const EXT_PYTHON: Color32 = Color32::from_rgb(16, 185, 129); pub const EXT_CPP: Color32 = Color32::from_rgb(6, 182, 212); pub const EXT_COMPRESSED: Color32 = Color32::from_rgb(236, 72, 153); pub const EXT_AUDIO: Color32 = Color32::from_rgb(14, 165, 233); pub const EXT_VIDEO: Color32 = Color32::from_rgb(20, 184, 166); pub const EXT_IMAGE: Color32 = Color32::from_rgb(244, 63, 94); pub const EXT_NONE: Color32 = Color32::from_rgb(75, 85, 99);
#[must_use]
pub fn get_color_for_extension(ext: &str) -> egui::Color32 {
match ext {
"rs" => EXT_RUST,
"toml" => EXT_TOML,
"git" | "gitignore" => EXT_GIT,
"js" | "ts" => EXT_JS_TS,
"json" | "yaml" => EXT_CONFIG,
"html" | "css" => EXT_WEB,
"py" => EXT_PYTHON,
"c" | "cpp" | "h" => EXT_CPP,
"zip" | "tar" | "gz" => EXT_COMPRESSED,
"mp3" | "wav" | "flac" => EXT_AUDIO,
"mp4" | "mkv" | "avi" => EXT_VIDEO,
"png" | "jpg" | "jpeg" | "gif" => EXT_IMAGE,
super::arena::NO_EXTENSION => EXT_NONE,
_ => {
let mut hash: u32 = 5381;
for c in ext.bytes() {
hash = ((hash << 5).wrapping_add(hash)).wrapping_add(c as u32);
}
#[allow(clippy::cast_precision_loss)]
let hue = (hash % 360) as f32 / 360.0;
let color = egui::epaint::Hsva::new(hue, 0.75, 0.55, 1.0);
egui::Color32::from(color)
}
}
}