use yog_gfx::Color;
#[derive(Debug, Clone)]
pub struct BookTheme {
pub bg: Color,
pub page_bg: Color,
pub page_bg_right: Color,
pub text: Color,
pub title: Color,
pub nav: Color,
pub nav_selected: Color,
pub nav_selected_bg: Color,
pub border: Color,
pub nameplate: Color,
pub divider: Color,
}
const FRAME: Color = Color(0xFF_2A1A08);
const PARCHMENT: Color = Color(0xFF_F5E6C8);
const PARCHMENT_GOLDEN: Color = Color(0xFF_EECF9A);
const TEXT: Color = Color(0xFF_000000);
const HEADER: Color = Color(0xFF_333333);
const NAV: Color = Color(0xFF_5C4020);
const AMBER: Color = Color(0xFF_C87820);
const AMBER_TINT: Color = Color(0x50_C87820);
const SPINE: Color = Color(0xFF_5C3A10);
const NAMEPLATE: Color = Color(0xFF_FFDD98);
impl Default for BookTheme {
fn default() -> Self {
Self {
bg: FRAME,
page_bg: PARCHMENT,
page_bg_right: PARCHMENT_GOLDEN,
text: TEXT,
title: HEADER,
nav: NAV,
nav_selected: AMBER,
nav_selected_bg: AMBER_TINT,
border: SPINE,
nameplate: NAMEPLATE,
divider: HEADER,
}
}
}
const HASH: char = '#';
impl BookTheme {
pub fn with_nameplate(mut self, hex: &str) -> Self {
if let Some(c) = Color::parse(&format!("{HASH}{}", hex.trim_start_matches(HASH))) {
self.nameplate = c.with_alpha(u8::MAX);
}
self
}
}