diff options
author | 2024-01-21 17:56:01 +0100 | |
---|---|---|
committer | 2024-01-21 17:56:01 +0100 | |
commit | 7a50e9e8fbb8d37e53a42c1dd5936b97463ead53 (patch) | |
tree | c0960018f287bcb2043a1752ae85ad0d45e00f21 /widget/src/svg.rs | |
parent | 545cc909c9f356dd733d273173694db9b8c28594 (diff) | |
download | iced-7a50e9e8fbb8d37e53a42c1dd5936b97463ead53.tar.gz iced-7a50e9e8fbb8d37e53a42c1dd5936b97463ead53.tar.bz2 iced-7a50e9e8fbb8d37e53a42c1dd5936b97463ead53.zip |
Convert `Renderer::Theme` to generic `Widget` type
Diffstat (limited to 'widget/src/svg.rs')
-rw-r--r-- | widget/src/svg.rs | 33 |
1 files changed, 14 insertions, 19 deletions
diff --git a/widget/src/svg.rs b/widget/src/svg.rs index 2357cf65..12ef3d92 100644 --- a/widget/src/svg.rs +++ b/widget/src/svg.rs @@ -20,22 +20,20 @@ pub use svg::Handle; /// [`Svg`] images can have a considerable rendering cost when resized, /// specially when they are complex. #[allow(missing_debug_implementations)] -pub struct Svg<Renderer = crate::Renderer> +pub struct Svg<Theme = crate::Theme> where - Renderer: svg::Renderer, - Renderer::Theme: StyleSheet, + Theme: StyleSheet, { handle: Handle, width: Length, height: Length, content_fit: ContentFit, - style: <Renderer::Theme as StyleSheet>::Style, + style: <Theme as StyleSheet>::Style, } -impl<Renderer> Svg<Renderer> +impl<Theme> Svg<Theme> where - Renderer: svg::Renderer, - Renderer::Theme: StyleSheet, + Theme: StyleSheet, { /// Creates a new [`Svg`] from the given [`Handle`]. pub fn new(handle: impl Into<Handle>) -> Self { @@ -82,19 +80,16 @@ where /// Sets the style variant of this [`Svg`]. #[must_use] - pub fn style( - mut self, - style: <Renderer::Theme as StyleSheet>::Style, - ) -> Self { - self.style = style; + pub fn style(mut self, style: impl Into<Theme::Style>) -> Self { + self.style = style.into(); self } } -impl<Message, Renderer> Widget<Message, Renderer> for Svg<Renderer> +impl<Message, Theme, Renderer> Widget<Message, Theme, Renderer> for Svg<Theme> where + Theme: iced_style::svg::StyleSheet, Renderer: svg::Renderer, - Renderer::Theme: iced_style::svg::StyleSheet, { fn size(&self) -> Size<Length> { Size { @@ -138,7 +133,7 @@ where &self, _state: &Tree, renderer: &mut Renderer, - theme: &Renderer::Theme, + theme: &Theme, _style: &renderer::Style, layout: Layout<'_>, cursor: mouse::Cursor, @@ -186,13 +181,13 @@ where } } -impl<'a, Message, Renderer> From<Svg<Renderer>> - for Element<'a, Message, Renderer> +impl<'a, Message, Theme, Renderer> From<Svg<Theme>> + for Element<'a, Message, Theme, Renderer> where + Theme: iced_style::svg::StyleSheet + 'a, Renderer: svg::Renderer + 'a, - Renderer::Theme: iced_style::svg::StyleSheet, { - fn from(icon: Svg<Renderer>) -> Element<'a, Message, Renderer> { + fn from(icon: Svg<Theme>) -> Element<'a, Message, Theme, Renderer> { Element::new(icon) } } |