use std::sync::atomic::{AtomicUsize, Ordering};
#[derive(Clone, Copy, PartialEq, Eq, Debug)]
pub enum ThemeMode {
Light,
Dark,
}
static THEME_INDEX: AtomicUsize = AtomicUsize::new(0);
pub fn theme_index() -> usize {
THEME_INDEX.load(Ordering::Relaxed)
}
pub fn init_theme_mode(mode: ThemeMode) {
THEME_INDEX.store(
if mode == ThemeMode::Dark { 1 } else { 0 },
Ordering::Relaxed,
);
}
pub fn set_theme(index: usize) {
THEME_INDEX.store(index, Ordering::Relaxed);
crate::platform::rerender();
}
pub fn cycle_theme(count: usize) {
if count == 0 {
return;
}
set_theme((theme_index() + 1) % count);
}