diff options
author | 2022-11-16 17:42:41 +0100 | |
---|---|---|
committer | 2022-12-06 03:59:53 +0100 | |
commit | 75ae0de9bdd3376b6e537bf59030059c926114ee (patch) | |
tree | f9b701705ccce1ef0bb391f04dc1db8af18dcf09 /style/src/theme.rs | |
parent | 0249640213120e039462f5fc12c677f15ecbc7cc (diff) | |
download | iced-75ae0de9bdd3376b6e537bf59030059c926114ee.tar.gz iced-75ae0de9bdd3376b6e537bf59030059c926114ee.tar.bz2 iced-75ae0de9bdd3376b6e537bf59030059c926114ee.zip |
feat: SVG styling with icon fill color
Diffstat (limited to '')
-rw-r--r-- | style/src/theme.rs | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/style/src/theme.rs b/style/src/theme.rs index dde0df5d..d825b086 100644 --- a/style/src/theme.rs +++ b/style/src/theme.rs @@ -16,6 +16,7 @@ use crate::radio; use crate::rule; use crate::scrollable; use crate::slider; +use crate::svg; use crate::text; use crate::text_input; use crate::toggler; @@ -797,6 +798,29 @@ impl From<fn(&Theme) -> rule::Appearance> for Rule { } } +/** + * SVG + */ +#[derive(Default, Clone, Copy)] +pub enum Svg { + /// No filtering to the rendered SVG. + #[default] + Default, + /// Apply custom filtering to the SVG. + Custom(fn(&Theme) -> svg::Appearance), +} + +impl svg::StyleSheet for Theme { + type Style = Svg; + + fn appearance(&self, style: Self::Style) -> svg::Appearance { + match style { + Svg::Default => Default::default(), + Svg::Custom(appearance) => appearance(self), + } + } +} + impl rule::StyleSheet for Theme { type Style = Rule; |