diff options
Diffstat (limited to 'native/src/element.rs')
-rw-r--r-- | native/src/element.rs | 122 |
1 files changed, 41 insertions, 81 deletions
diff --git a/native/src/element.rs b/native/src/element.rs index 791bf9cf..d4237fd0 100644 --- a/native/src/element.rs +++ b/native/src/element.rs @@ -13,18 +13,11 @@ use crate::{ /// [built-in widget]: widget/index.html#built-in-widgets /// [`Widget`]: widget/trait.Widget.html /// [`Element`]: struct.Element.html +#[allow(missing_debug_implementations)] pub struct Element<'a, Message, Renderer> { pub(crate) widget: Box<dyn Widget<Message, Renderer> + 'a>, } -impl<'a, Message, Renderer> std::fmt::Debug for Element<'a, Message, Renderer> { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("Element") - .field("widget", &self.widget) - .finish() - } -} - impl<'a, Message, Renderer> Element<'a, Message, Renderer> where Renderer: crate::Renderer, @@ -41,31 +34,6 @@ where } } - pub fn width(&self) -> Length { - self.widget.width() - } - - pub fn height(&self) -> Length { - self.widget.height() - } - - pub fn layout( - &self, - renderer: &Renderer, - limits: &layout::Limits, - ) -> layout::Node { - self.widget.layout(renderer, limits) - } - - pub fn draw( - &self, - renderer: &mut Renderer, - layout: Layout<'_>, - cursor_position: Point, - ) -> Renderer::Output { - self.widget.draw(renderer, layout, cursor_position) - } - /// Applies a transformation to the produced message of the [`Element`]. /// /// This method is useful when you want to decouple different parts of your @@ -127,37 +95,7 @@ where /// # } /// # /// # mod iced_wgpu { - /// # use iced_native::{ - /// # text, row, layout, Text, Size, Point, Rectangle, Layout, Row - /// # }; - /// # pub struct Renderer; - /// # - /// # impl iced_native::Renderer for Renderer { type Output = (); } - /// # - /// # impl iced_native::row::Renderer for Renderer { - /// # fn draw<Message>( - /// # &mut self, - /// # _column: &Row<'_, Message, Self>, - /// # _layout: Layout<'_>, - /// # _cursor_position: Point, - /// # ) {} - /// # } - /// # - /// # impl text::Renderer for Renderer { - /// # fn layout( - /// # &self, - /// # _text: &Text, - /// # _limits: &layout::Limits, - /// # ) -> layout::Node { - /// # layout::Node::new(Size::ZERO) - /// # } - /// # - /// # fn draw( - /// # &mut self, - /// # _text: &Text, - /// # _layout: Layout<'_>, - /// # ) {} - /// # } + /// # pub use iced_native::renderer::Null as Renderer; /// # } /// # /// # use counter::Counter; @@ -263,6 +201,45 @@ where } } + /// Returns the width of the [`Element`]. + /// + /// [`Element`]: struct.Element.html + pub fn width(&self) -> Length { + self.widget.width() + } + + /// Returns the height of the [`Element`]. + /// + /// [`Element`]: struct.Element.html + pub fn height(&self) -> Length { + self.widget.height() + } + + /// Computes the layout of the [`Element`] in the given [`Limits`]. + /// + /// [`Element`]: struct.Element.html + /// [`Limits`]: layout/struct.Limits.html + pub fn layout( + &self, + renderer: &Renderer, + limits: &layout::Limits, + ) -> layout::Node { + self.widget.layout(renderer, limits) + } + + /// Draws the [`Element`] and its children using the given [`Layout`]. + /// + /// [`Element`]: struct.Element.html + /// [`Layout`]: layout/struct.Layout.html + pub fn draw( + &self, + renderer: &mut Renderer, + layout: Layout<'_>, + cursor_position: Point, + ) -> Renderer::Output { + self.widget.draw(renderer, layout, cursor_position) + } + pub(crate) fn hash_layout(&self, state: &mut Hasher) { self.widget.hash_layout(state); } @@ -273,12 +250,6 @@ struct Map<'a, A, B, Renderer> { mapper: Box<dyn Fn(A) -> B>, } -impl<'a, A, B, Renderer> std::fmt::Debug for Map<'a, A, B, Renderer> { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("Map").field("widget", &self.widget).finish() - } -} - impl<'a, A, B, Renderer> Map<'a, A, B, Renderer> { pub fn new<F>( widget: Box<dyn Widget<A, Renderer> + 'a>, @@ -358,17 +329,6 @@ struct Explain<'a, Message, Renderer: crate::Renderer> { color: Color, } -impl<'a, Message, Renderer> std::fmt::Debug for Explain<'a, Message, Renderer> -where - Renderer: crate::Renderer, -{ - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("Explain") - .field("element", &self.element) - .finish() - } -} - impl<'a, Message, Renderer> Explain<'a, Message, Renderer> where Renderer: crate::Renderer, |