diff --git a/src/widget/canvas.rs b/src/widget/canvas.rs index 747c436..f60c6bf 100644 --- a/src/widget/canvas.rs +++ b/src/widget/canvas.rs @@ -154,44 +154,27 @@ impl Widget for CanvasWidget { viewport_transform = Some(Affine::translate((-30.0, 0.0))); } } - Event::MouseDown(mouse_event) => { + Event::PointerDown(pointer_event) => { toggle_eraser_event = true; - enable_temporary_erasing = false; //mouse_event.pointer_type == PointerType::Eraser; + enable_temporary_erasing = false; //pointer_event.pointer_type == PointerType::Eraser; } - Event::MouseMove(mouse_event) => { + Event::PointerMove(pointer_event) => { toggle_eraser_event = true; - enable_temporary_erasing = false; //mouse_event.pointer_type == PointerType::Eraser; + enable_temporary_erasing = false; //pointer_event.pointer_type == PointerType::Eraser; } - Event::MouseUp(mouse_event) => { + Event::PointerUp(pointer_event) => { toggle_eraser_event = true; - enable_temporary_erasing = false; //mouse_event.pointer_type == PointerType::Eraser; + enable_temporary_erasing = false; //pointer_event.pointer_type == PointerType::Eraser; } - Event::Wheel(mouse) => { + Event::Wheel(pointer) => { let transform = self.widget_to_viewport(); viewport_transform = Some( Affine::translate( - (mouse.wheel_delta.to_point()).to_vec2() - ) - ); - } - Event::GestureZoom { zoom, center } => { - let transform = self.widget_to_viewport(); - - let diff = (transform * *center).to_vec2() - - self.viewport.rect.center().to_vec2(); - viewport_transform = Some( - Affine::scale(1.0/(1.0 + zoom)) - ); - log::debug!("{:#?}", viewport_transform); - } - Event::GesturePan(vec2) => { - let transform = self.widget_to_viewport(); - viewport_transform = Some( - Affine::translate( - (vec2.to_point()).to_vec2() + (pointer.wheel_delta.to_point()).to_vec2() ) ); } + _ => {} } // TODO: the first eraser toggle is not handled diff --git a/src/widget/tool_ctx.rs b/src/widget/tool_ctx.rs index 3726fac..f3e2aee 100644 --- a/src/widget/tool_ctx.rs +++ b/src/widget/tool_ctx.rs @@ -19,7 +19,7 @@ use crate::canvas::{Canvas, CanvasElement}; use crate::history::VersionedCanvas; use druid::kurbo::BezPath; -use druid::{Affine, Data, Env, Event, EventCtx, MouseButton, MouseEvent, PaintCtx}; +use druid::{Affine, Data, Env, Event, EventCtx, PointerButton, PointerEvent, PaintCtx}; #[derive(Clone, Data)] pub enum CanvasToolState { @@ -46,9 +46,9 @@ impl CanvasToolParams { } } -fn pressed(mouse_event: &MouseEvent) -> bool { - mouse_event.buttons.contains(MouseButton::Left) - || mouse_event.button == MouseButton::Left +fn pressed(pointer_event: &PointerEvent) -> bool { + pointer_event.buttons.contains(PointerButton::Left) + || pointer_event.button == PointerButton::Left } impl CanvasToolCtx { @@ -82,13 +82,13 @@ impl CanvasToolCtx { _env: &Env, ) { match (&mut self.state, event) { - (CanvasToolState::Idle, Event::MouseDown(mouse_event)) if pressed(mouse_event) => { + (CanvasToolState::Idle, Event::PointerDown(pointer_event)) if pressed(pointer_event) => { self.state = CanvasToolState::Erasing; ctx.set_handled(); } - (CanvasToolState::Erasing, Event::MouseMove(mouse_event)) if pressed(mouse_event) => { + (CanvasToolState::Erasing, Event::PointerMove(pointer_event)) if pressed(pointer_event) => { let eraser_rect = - druid::Rect::from_center_size(transform * mouse_event.pos, (5.0, 5.0)); + druid::Rect::from_center_size(transform * pointer_event.pos, (5.0, 5.0)); let old_elements = vcanvas.get().elements(); let mut new_elements = old_elements.clone(); new_elements.retain(|elem| { @@ -107,7 +107,7 @@ impl CanvasToolCtx { } ctx.set_handled(); } - (CanvasToolState::Erasing, Event::MouseUp(mouse_event)) if pressed(mouse_event) => { + (CanvasToolState::Erasing, Event::PointerUp(pointer_event)) if pressed(pointer_event) => { self.state = CanvasToolState::Idle; ctx.set_handled(); } @@ -124,9 +124,9 @@ impl CanvasToolCtx { _env: &Env, ) { match (&mut self.state, event) { - (CanvasToolState::Idle, Event::MouseDown(mouse_event)) if pressed(mouse_event) => { + (CanvasToolState::Idle, Event::PointerDown(pointer_event)) if pressed(pointer_event) => { let mut kurbo_path = BezPath::new(); - kurbo_path.move_to((mouse_event.pos.x, mouse_event.pos.y)); + kurbo_path.move_to((pointer_event.pos.x, pointer_event.pos.y)); if let CanvasToolParams::Pen { thickness, color } = &self.initial_params { self.state = CanvasToolState::DrawingFreehand { pen_params: self.initial_params.clone(), @@ -144,15 +144,15 @@ impl CanvasToolCtx { ref mut current_path, .. }, - Event::MouseMove(mouse_event), - ) => if pressed(mouse_event) { + Event::PointerMove(pointer_event), + ) => if pressed(pointer_event) { if let CanvasElement::Freehand { ref mut path, .. } = current_path { path.kurbo_path - .line_to((mouse_event.pos.x, mouse_event.pos.y)); + .line_to((pointer_event.pos.x, pointer_event.pos.y)); } ctx.set_handled(); } - (CanvasToolState::DrawingFreehand { .. }, Event::MouseUp(mouse_event)) if pressed(mouse_event) => { + (CanvasToolState::DrawingFreehand { .. }, Event::PointerUp(pointer_event)) if pressed(pointer_event) => { vcanvas.update(move |canvas: &mut Canvas| { let current_state = std::mem::replace(&mut self.state, CanvasToolState::Idle); if let CanvasToolState::DrawingFreehand { current_path, .. } = current_state {