iced_native/widget/
space.rs1use crate::layout;
3use crate::renderer;
4use crate::widget::Tree;
5use crate::{Element, Layout, Length, Point, Rectangle, Size, Widget};
6
7#[derive(Debug)]
11pub struct Space {
12 width: Length,
13 height: Length,
14}
15
16impl Space {
17 pub fn new(width: impl Into<Length>, height: impl Into<Length>) -> Self {
19 Space {
20 width: width.into(),
21 height: height.into(),
22 }
23 }
24
25 pub fn with_width(width: impl Into<Length>) -> Self {
27 Space {
28 width: width.into(),
29 height: Length::Shrink,
30 }
31 }
32
33 pub fn with_height(height: impl Into<Length>) -> Self {
35 Space {
36 width: Length::Shrink,
37 height: height.into(),
38 }
39 }
40}
41
42impl<Message, Renderer> Widget<Message, Renderer> for Space
43where
44 Renderer: crate::Renderer,
45{
46 fn width(&self) -> Length {
47 self.width
48 }
49
50 fn height(&self) -> Length {
51 self.height
52 }
53
54 fn layout(
55 &self,
56 _renderer: &Renderer,
57 limits: &layout::Limits,
58 ) -> layout::Node {
59 let limits = limits.width(self.width).height(self.height);
60
61 layout::Node::new(limits.resolve(Size::ZERO))
62 }
63
64 fn draw(
65 &self,
66 _state: &Tree,
67 _renderer: &mut Renderer,
68 _theme: &Renderer::Theme,
69 _style: &renderer::Style,
70 _layout: Layout<'_>,
71 _cursor_position: Point,
72 _viewport: &Rectangle,
73 ) {
74 }
75}
76
77impl<'a, Message, Renderer> From<Space> for Element<'a, Message, Renderer>
78where
79 Renderer: crate::Renderer,
80 Message: 'a,
81{
82 fn from(space: Space) -> Element<'a, Message, Renderer> {
83 Element::new(space)
84 }
85}