From a7d11944039a1b5ea5b72256e8d15367d99e6010 Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Sat, 5 Oct 2019 03:56:18 +0200 Subject: Add `Renderer` and `Primitive` concepts --- native/src/widget/column.rs | 34 +++++++++++++++------------------- 1 file changed, 15 insertions(+), 19 deletions(-) (limited to 'native/src/widget/column.rs') diff --git a/native/src/widget/column.rs b/native/src/widget/column.rs index 9da2e161..6228d711 100644 --- a/native/src/widget/column.rs +++ b/native/src/widget/column.rs @@ -1,8 +1,6 @@ use std::hash::Hash; -use crate::{ - Element, Event, Hasher, Layout, MouseCursor, Node, Point, Style, Widget, -}; +use crate::{Element, Event, Hasher, Layout, Node, Point, Style, Widget}; /// A container that distributes its contents vertically. pub type Column<'a, Message, Renderer> = @@ -10,6 +8,8 @@ pub type Column<'a, Message, Renderer> = impl<'a, Message, Renderer> Widget for Column<'a, Message, Renderer> +where + Renderer: self::Renderer, { fn node(&self, renderer: &mut Renderer) -> Node { let mut children: Vec = self @@ -70,21 +70,8 @@ impl<'a, Message, Renderer> Widget renderer: &mut Renderer, layout: Layout<'_>, cursor_position: Point, - ) -> MouseCursor { - let mut cursor = MouseCursor::OutOfBounds; - - self.children.iter().zip(layout.children()).for_each( - |(child, layout)| { - let new_cursor = - child.widget.draw(renderer, layout, cursor_position); - - if new_cursor != MouseCursor::OutOfBounds { - cursor = new_cursor; - } - }, - ); - - cursor + ) -> Renderer::Primitive { + renderer.draw(&self, layout, cursor_position) } fn hash_layout(&self, state: &mut Hasher) { @@ -104,10 +91,19 @@ impl<'a, Message, Renderer> Widget } } +pub trait Renderer: crate::Renderer + Sized { + fn draw( + &mut self, + row: &Column<'_, Message, Self>, + layout: Layout<'_>, + cursor_position: Point, + ) -> Self::Primitive; +} + impl<'a, Message, Renderer> From> for Element<'a, Message, Renderer> where - Renderer: 'a, + Renderer: 'a + self::Renderer, Message: 'static, { fn from( -- cgit From 10e10e5e06841574425d2633f1c2916733f7b4ff Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Tue, 8 Oct 2019 03:13:41 +0200 Subject: Make `iced_core::Button` customizable Now it supports: - Any kind of content - Custom border radius - Custom background --- native/src/widget/column.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'native/src/widget/column.rs') diff --git a/native/src/widget/column.rs b/native/src/widget/column.rs index 6228d711..7e10e662 100644 --- a/native/src/widget/column.rs +++ b/native/src/widget/column.rs @@ -11,7 +11,7 @@ impl<'a, Message, Renderer> Widget where Renderer: self::Renderer, { - fn node(&self, renderer: &mut Renderer) -> Node { + fn node(&self, renderer: &Renderer) -> Node { let mut children: Vec = self .children .iter() -- cgit From 8846a239cf14edd464b1d09f6d6d57ad9b5c9fc7 Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Fri, 11 Oct 2019 22:15:39 +0200 Subject: Rename `Renderer::Primitive` to `Renderer::Output` --- native/src/widget/column.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'native/src/widget/column.rs') diff --git a/native/src/widget/column.rs b/native/src/widget/column.rs index 7e10e662..7995cf5d 100644 --- a/native/src/widget/column.rs +++ b/native/src/widget/column.rs @@ -70,7 +70,7 @@ where renderer: &mut Renderer, layout: Layout<'_>, cursor_position: Point, - ) -> Renderer::Primitive { + ) -> Renderer::Output { renderer.draw(&self, layout, cursor_position) } @@ -97,7 +97,7 @@ pub trait Renderer: crate::Renderer + Sized { row: &Column<'_, Message, Self>, layout: Layout<'_>, cursor_position: Point, - ) -> Self::Primitive; + ) -> Self::Output; } impl<'a, Message, Renderer> From> -- cgit