summaryrefslogtreecommitdiffstats
path: root/style
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón <hector0193@gmail.com>2023-09-03 02:41:56 +0200
committerLibravatar GitHub <noreply@github.com>2023-09-03 02:41:56 +0200
commit3b0d1b1ed4226d53f63e39550a446c784d5f4199 (patch)
tree7fb038c86261b318f763f0fff752e15936c4d0cd /style
parent9b9b37e6f83b5e5a8811feb17b484c6b11fa3b8b (diff)
parent624d5c2c64a174ccdb5236c65ca49556ac3e13ce (diff)
downloadiced-3b0d1b1ed4226d53f63e39550a446c784d5f4199.tar.gz
iced-3b0d1b1ed4226d53f63e39550a446c784d5f4199.tar.bz2
iced-3b0d1b1ed4226d53f63e39550a446c784d5f4199.zip
Merge pull request #2067 from iced-rs/custom-extended-palette-generation
Introduce `theme::Custom::with_fn` to generate completely custom themes
Diffstat (limited to '')
-rw-r--r--style/src/theme.rs27
1 files changed, 22 insertions, 5 deletions
diff --git a/style/src/theme.rs b/style/src/theme.rs
index 64497181..893d7202 100644
--- a/style/src/theme.rs
+++ b/style/src/theme.rs
@@ -1,8 +1,7 @@
//! Use the built-in theme and styles.
pub mod palette;
-use self::palette::Extended;
-pub use self::palette::Palette;
+pub use palette::Palette;
use crate::application;
use crate::button;
@@ -40,7 +39,16 @@ pub enum Theme {
impl Theme {
/// Creates a new custom [`Theme`] from the given [`Palette`].
pub fn custom(palette: Palette) -> Self {
- Self::Custom(Box::new(Custom::new(palette)))
+ Self::custom_with_fn(palette, palette::Extended::generate)
+ }
+
+ /// Creates a new custom [`Theme`] from the given [`Palette`], with
+ /// a custom generator of a [`palette::Extended`].
+ pub fn custom_with_fn(
+ palette: Palette,
+ generate: impl FnOnce(Palette) -> palette::Extended,
+ ) -> Self {
+ Self::Custom(Box::new(Custom::with_fn(palette, generate)))
}
/// Returns the [`Palette`] of the [`Theme`].
@@ -66,15 +74,24 @@ impl Theme {
#[derive(Debug, Clone, Copy, PartialEq)]
pub struct Custom {
palette: Palette,
- extended: Extended,
+ extended: palette::Extended,
}
impl Custom {
/// Creates a [`Custom`] theme from the given [`Palette`].
pub fn new(palette: Palette) -> Self {
+ Self::with_fn(palette, palette::Extended::generate)
+ }
+
+ /// Creates a [`Custom`] theme from the given [`Palette`] with
+ /// a custom generator of a [`palette::Extended`].
+ pub fn with_fn(
+ palette: Palette,
+ generate: impl FnOnce(Palette) -> palette::Extended,
+ ) -> Self {
Self {
palette,
- extended: Extended::generate(palette),
+ extended: generate(palette),
}
}
}