summaryrefslogtreecommitdiffstats
path: root/examples/sierpinski_triangle/src/main.rs
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector@hecrj.dev>2024-10-28 16:58:00 +0100
committerLibravatar Héctor Ramón Jiménez <hector@hecrj.dev>2024-11-05 23:52:58 +0100
commit920596ed6f44acf8d87d2135c1b8967bab23d5b9 (patch)
treeca3f673c01bf9abba79f6b5f172df189788d50de /examples/sierpinski_triangle/src/main.rs
parenta84b328dcc3e2f941f9595a2f8c3b1d061442722 (diff)
downloadiced-920596ed6f44acf8d87d2135c1b8967bab23d5b9.tar.gz
iced-920596ed6f44acf8d87d2135c1b8967bab23d5b9.tar.bz2
iced-920596ed6f44acf8d87d2135c1b8967bab23d5b9.zip
Implement `reactive-rendering` for `canvas`
Diffstat (limited to 'examples/sierpinski_triangle/src/main.rs')
-rw-r--r--examples/sierpinski_triangle/src/main.rs33
1 files changed, 14 insertions, 19 deletions
diff --git a/examples/sierpinski_triangle/src/main.rs b/examples/sierpinski_triangle/src/main.rs
index 99e7900a..d4d483f5 100644
--- a/examples/sierpinski_triangle/src/main.rs
+++ b/examples/sierpinski_triangle/src/main.rs
@@ -1,6 +1,5 @@
use iced::mouse;
-use iced::widget::canvas::event::{self, Event};
-use iced::widget::canvas::{self, Canvas, Geometry};
+use iced::widget::canvas::{self, Canvas, Event, Geometry};
use iced::widget::{column, row, slider, text};
use iced::{Center, Color, Fill, Point, Rectangle, Renderer, Size, Theme};
@@ -80,26 +79,22 @@ impl canvas::Program<Message> for SierpinskiGraph {
event: Event,
bounds: Rectangle,
cursor: mouse::Cursor,
- ) -> (event::Status, Option<Message>) {
- let Some(cursor_position) = cursor.position_in(bounds) else {
- return (event::Status::Ignored, None);
- };
+ ) -> Option<canvas::Action<Message>> {
+ let cursor_position = cursor.position_in(bounds)?;
match event {
- Event::Mouse(mouse_event) => {
- let message = match mouse_event {
- iced::mouse::Event::ButtonPressed(
- iced::mouse::Button::Left,
- ) => Some(Message::PointAdded(cursor_position)),
- iced::mouse::Event::ButtonPressed(
- iced::mouse::Button::Right,
- ) => Some(Message::PointRemoved),
- _ => None,
- };
- (event::Status::Captured, message)
- }
- _ => (event::Status::Ignored, None),
+ Event::Mouse(mouse::Event::ButtonPressed(button)) => match button {
+ mouse::Button::Left => Some(canvas::Action::publish(
+ Message::PointAdded(cursor_position),
+ )),
+ mouse::Button::Right => {
+ Some(canvas::Action::publish(Message::PointRemoved))
+ }
+ _ => None,
+ },
+ _ => None,
}
+ .map(canvas::Action::and_capture)
}
fn draw(