From 2303111e09d806ef2a652bddc2b73be6dccf6ae2 Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Sun, 10 Nov 2019 01:55:32 +0100 Subject: Draft new layout API --- wgpu/src/renderer/widget/button.rs | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) (limited to 'wgpu/src/renderer/widget/button.rs') diff --git a/wgpu/src/renderer/widget/button.rs b/wgpu/src/renderer/widget/button.rs index 0ac1c0a6..e8a97385 100644 --- a/wgpu/src/renderer/widget/button.rs +++ b/wgpu/src/renderer/widget/button.rs @@ -1,25 +1,27 @@ use crate::{Primitive, Renderer}; use iced_native::{ - button, Align, Background, Button, Layout, Length, MouseCursor, - Node, Point, Rectangle, Style, + button, layout, Background, Button, Layout, MouseCursor, Point, Rectangle, }; impl button::Renderer for Renderer { - fn node(&self, button: &Button) -> Node { - let style = Style::default() - .width(button.width) - .padding(button.padding) - .min_width(Length::Units(100)) - .align_self(button.align_self) - .align_items(Align::Stretch); - - Node::with_children(style, vec![button.content.node(self)]) + fn layout( + &self, + button: &Button, + limits: &layout::Limits, + ) -> Layout { + // TODO + Layout::new(Rectangle { + x: 0.0, + y: 0.0, + width: 0.0, + height: 0.0, + }) } fn draw( &mut self, button: &Button, - layout: Layout<'_>, + layout: &Layout, cursor_position: Point, ) -> Self::Output { let bounds = layout.bounds(); -- cgit From 0240c3981b716c82ecb3364945815335b420a63e Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Sun, 10 Nov 2019 06:05:20 +0100 Subject: Draft custom layout engine based on `druid` --- wgpu/src/renderer/widget/button.rs | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) (limited to 'wgpu/src/renderer/widget/button.rs') diff --git a/wgpu/src/renderer/widget/button.rs b/wgpu/src/renderer/widget/button.rs index e8a97385..3d5e42ba 100644 --- a/wgpu/src/renderer/widget/button.rs +++ b/wgpu/src/renderer/widget/button.rs @@ -1,6 +1,7 @@ use crate::{Primitive, Renderer}; use iced_native::{ - button, layout, Background, Button, Layout, MouseCursor, Point, Rectangle, + button, layout, Background, Button, Layout, Length, MouseCursor, Point, + Rectangle, }; impl button::Renderer for Renderer { @@ -8,20 +9,28 @@ impl button::Renderer for Renderer { &self, button: &Button, limits: &layout::Limits, - ) -> Layout { - // TODO - Layout::new(Rectangle { - x: 0.0, - y: 0.0, - width: 0.0, - height: 0.0, - }) + ) -> layout::Node { + let padding = f32::from(button.padding); + let limits = limits + .min_width(100) + .width(button.width) + .height(Length::Shrink) + .pad(padding); + + let mut content = button.content.layout(self, &limits); + + content.bounds.x = padding; + content.bounds.y = padding; + + let size = limits.resolve(content.size()).pad(padding); + + layout::Node::with_children(size, vec![content]) } fn draw( &mut self, button: &Button, - layout: &Layout, + layout: Layout<'_>, cursor_position: Point, ) -> Self::Output { let bounds = layout.bounds(); -- cgit