Make Theme::Custom fields opaque

This commit is contained in:
Héctor Ramón Jiménez 2022-11-03 03:21:26 +01:00
parent 09a531cd44
commit 9966c6f883
No known key found for this signature in database
GPG key ID: 140CC052C94F138E
2 changed files with 64 additions and 55 deletions

View file

@ -25,18 +25,19 @@ use iced_core::{Background, Color};
pub enum Theme {
Light,
Dark,
Custom {
palette: Box<Palette>,
extended: Box<Extended>,
}
Custom(Custom),
}
impl Theme {
pub fn custom(palette: Palette) -> Self {
Self::Custom(Custom::new(palette))
}
pub fn palette(self) -> Palette {
match self {
Self::Light => Palette::LIGHT,
Self::Dark => Palette::DARK,
Self::Custom { palette, .. } => *palette
Self::Custom(custom) => custom.palette,
}
}
@ -44,7 +45,7 @@ impl Theme {
match self {
Self::Light => &palette::EXTENDED_LIGHT,
Self::Dark => &palette::EXTENDED_DARK,
Self::Custom { extended, .. } => extended,
Self::Custom(custom) => &custom.extended,
}
}
}
@ -55,6 +56,21 @@ impl Default for Theme {
}
}
#[derive(Debug, Clone, PartialEq)]
pub struct Custom {
palette: Palette,
extended: Extended,
}
impl Custom {
pub fn new(palette: Palette) -> Self {
Self {
palette,
extended: Extended::generate(palette),
}
}
}
#[derive(Debug, Clone, Copy)]
pub enum Application {
Default,