diff options
author | 2024-01-21 17:56:01 +0100 | |
---|---|---|
committer | 2024-01-21 17:56:01 +0100 | |
commit | 7a50e9e8fbb8d37e53a42c1dd5936b97463ead53 (patch) | |
tree | c0960018f287bcb2043a1752ae85ad0d45e00f21 /examples/loading_spinners | |
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 'examples/loading_spinners')
-rw-r--r-- | examples/loading_spinners/src/circular.rs | 17 | ||||
-rw-r--r-- | examples/loading_spinners/src/linear.rs | 47 |
2 files changed, 31 insertions, 33 deletions
diff --git a/examples/loading_spinners/src/circular.rs b/examples/loading_spinners/src/circular.rs index 2e119979..8598b20a 100644 --- a/examples/loading_spinners/src/circular.rs +++ b/examples/loading_spinners/src/circular.rs @@ -2,14 +2,15 @@ use iced::advanced::layout; use iced::advanced::renderer; use iced::advanced::widget::tree::{self, Tree}; -use iced::advanced::{Clipboard, Layout, Renderer, Shell, Widget}; +use iced::advanced::{self, Clipboard, Layout, Shell, Widget}; use iced::event; use iced::mouse; use iced::time::Instant; use iced::widget::canvas; use iced::window::{self, RedrawRequest}; use iced::{ - Background, Color, Element, Event, Length, Rectangle, Size, Vector, + Background, Color, Element, Event, Length, Rectangle, Renderer, Size, + Vector, }; use super::easing::{self, Easing}; @@ -230,7 +231,7 @@ struct State { cache: canvas::Cache, } -impl<'a, Message, Theme> Widget<Message, iced::Renderer<Theme>> +impl<'a, Message, Theme> Widget<Message, Theme, Renderer> for Circular<'a, Theme> where Message: 'a + Clone, @@ -254,7 +255,7 @@ where fn layout( &self, _tree: &mut Tree, - _renderer: &iced::Renderer<Theme>, + _renderer: &Renderer, limits: &layout::Limits, ) -> layout::Node { layout::atomic(limits, self.size, self.size) @@ -266,7 +267,7 @@ where event: Event, _layout: Layout<'_>, _cursor: mouse::Cursor, - _renderer: &iced::Renderer<Theme>, + _renderer: &Renderer, _clipboard: &mut dyn Clipboard, shell: &mut Shell<'_, Message>, _viewport: &Rectangle, @@ -290,13 +291,15 @@ where fn draw( &self, tree: &Tree, - renderer: &mut iced::Renderer<Theme>, + renderer: &mut Renderer, theme: &Theme, _style: &renderer::Style, layout: Layout<'_>, _cursor: mouse::Cursor, _viewport: &Rectangle, ) { + use advanced::Renderer as _; + let state = tree.state.downcast_ref::<State>(); let bounds = layout.bounds(); let custom_style = @@ -361,7 +364,7 @@ where } impl<'a, Message, Theme> From<Circular<'a, Theme>> - for Element<'a, Message, iced::Renderer<Theme>> + for Element<'a, Message, Theme, Renderer> where Message: Clone + 'a, Theme: StyleSheet + 'a, diff --git a/examples/loading_spinners/src/linear.rs b/examples/loading_spinners/src/linear.rs index 03aee9b1..ce375621 100644 --- a/examples/loading_spinners/src/linear.rs +++ b/examples/loading_spinners/src/linear.rs @@ -2,7 +2,7 @@ use iced::advanced::layout; use iced::advanced::renderer::{self, Quad}; use iced::advanced::widget::tree::{self, Tree}; -use iced::advanced::{Clipboard, Layout, Shell, Widget}; +use iced::advanced::{self, Clipboard, Layout, Shell, Widget}; use iced::event; use iced::mouse; use iced::time::Instant; @@ -14,29 +14,27 @@ use super::easing::{self, Easing}; use std::time::Duration; #[allow(missing_debug_implementations)] -pub struct Linear<'a, Renderer> +pub struct Linear<'a, Theme> where - Renderer: iced::advanced::Renderer, - Renderer::Theme: StyleSheet, + Theme: StyleSheet, { width: Length, height: Length, - style: <Renderer::Theme as StyleSheet>::Style, + style: Theme::Style, easing: &'a Easing, cycle_duration: Duration, } -impl<'a, Renderer> Linear<'a, Renderer> +impl<'a, Theme> Linear<'a, Theme> where - Renderer: iced::advanced::Renderer, - Renderer::Theme: StyleSheet, + Theme: StyleSheet, { /// Creates a new [`Linear`] with the given content. pub fn new() -> Self { Linear { width: Length::Fixed(100.0), height: Length::Fixed(4.0), - style: <Renderer::Theme as StyleSheet>::Style::default(), + style: Theme::Style::default(), easing: &easing::STANDARD, cycle_duration: Duration::from_millis(600), } @@ -55,11 +53,8 @@ where } /// Sets the style variant of this [`Linear`]. - 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 } @@ -76,10 +71,9 @@ where } } -impl<'a, Renderer> Default for Linear<'a, Renderer> +impl<'a, Theme> Default for Linear<'a, Theme> where - Renderer: iced::advanced::Renderer, - Renderer::Theme: StyleSheet, + Theme: StyleSheet, { fn default() -> Self { Self::new() @@ -151,11 +145,12 @@ impl State { } } -impl<'a, Message, Renderer> Widget<Message, Renderer> for Linear<'a, Renderer> +impl<'a, Message, Theme, Renderer> Widget<Message, Theme, Renderer> + for Linear<'a, Theme> where - Message: 'a + Clone, - Renderer: 'a + iced::advanced::Renderer, - Renderer::Theme: StyleSheet, + Message: Clone + 'a, + Theme: StyleSheet + 'a, + Renderer: advanced::Renderer + 'a, { fn tag(&self) -> tree::Tag { tree::Tag::of::<State>() @@ -207,7 +202,7 @@ where &self, tree: &Tree, renderer: &mut Renderer, - theme: &Renderer::Theme, + theme: &Theme, _style: &renderer::Style, layout: Layout<'_>, _cursor: mouse::Cursor, @@ -262,14 +257,14 @@ where } } -impl<'a, Message, Renderer> From<Linear<'a, Renderer>> - for Element<'a, Message, Renderer> +impl<'a, Message, Theme, Renderer> From<Linear<'a, Theme>> + for Element<'a, Message, Theme, Renderer> where Message: Clone + 'a, + Theme: StyleSheet + 'a, Renderer: iced::advanced::Renderer + 'a, - Renderer::Theme: StyleSheet, { - fn from(linear: Linear<'a, Renderer>) -> Self { + fn from(linear: Linear<'a, Theme>) -> Self { Self::new(linear) } } |