summaryrefslogtreecommitdiffstats
path: root/native/src/element.rs
diff options
context:
space:
mode:
Diffstat (limited to 'native/src/element.rs')
-rw-r--r--native/src/element.rs122
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,