From da81ddecce1cc7b0c8a3561fd859cfa7354ea2cc Mon Sep 17 00:00:00 2001 From: Enrico Lumetti Date: Sun, 28 Feb 2021 15:31:59 +0100 Subject: [PATCH 01/11] Add Viewport up/down scroll --- src/main.rs | 45 +++++++++----- src/tool.rs | 1 - src/widget/canvas.rs | 130 +++++++++++++++++++++++++++++++---------- src/widget/tool_ctx.rs | 29 ++++++--- 4 files changed, 149 insertions(+), 56 deletions(-) diff --git a/src/main.rs b/src/main.rs index 8d2edf5..4200e22 100644 --- a/src/main.rs +++ b/src/main.rs @@ -26,7 +26,7 @@ use druid::widget::{ }; use druid::{ AppDelegate, AppLauncher, Color, Command, Data, DelegateCtx, Env, FileDialogOptions, FileSpec, - Handled, Lens, Target, WindowDesc, + Handled, Lens, Target, WidgetId, WindowDesc, }; use im::Vector; @@ -107,6 +107,8 @@ impl StilettoState { } fn build_ui() -> impl Widget { + let canvas_id = WidgetId::next(); + let history_buttons = Flex::row() .cross_axis_alignment(CrossAxisAlignment::Center) .with_child(Button::new("Undo").on_click( @@ -125,19 +127,27 @@ fn build_ui() -> impl Widget { let save_buttons = Flex::row() .cross_axis_alignment(CrossAxisAlignment::Center) - .with_child( - Button::new("Save").on_click(move |ctx, data: &mut StilettoState, _| { - if data.current_file_path.is_some() { - ctx.submit_command(Command::new(commands::SAVE_FILE, (), Target::Auto)); - } else { - ctx.submit_command(Command::new( - druid::commands::SHOW_SAVE_PANEL, - save_dialog_options_clone.clone(), - Target::Auto, - )) - } - }), - ) + .with_child(Button::new("Up").on_click( + move |ctx: &mut EventCtx, _data: &mut StilettoState, _env: &Env| { + ctx.submit_command(Command::new(CanvasWidget::SCROLL, -30.0, canvas_id)); + }, + )) + .with_child(Button::new("Down").on_click( + move |ctx: &mut EventCtx, _data: &mut StilettoState, _env: &Env| { + ctx.submit_command(Command::new(CanvasWidget::SCROLL, 30.0, canvas_id)); + }, + )) + .with_child(Button::new("Save").on_click(move |ctx, data: &mut StilettoState, _| { + if data.current_file_path.is_some() { + ctx.submit_command(Command::new(commands::SAVE_FILE, (), Target::Auto)); + } else { + ctx.submit_command(Command::new( + druid::commands::SHOW_SAVE_PANEL, + save_dialog_options_clone.clone(), + Target::Auto, + )) + } + })) .with_child(Button::new("Save As").on_click(move |ctx, _, _| { ctx.submit_command(Command::new( druid::commands::SHOW_SAVE_PANEL, @@ -183,7 +193,12 @@ fn build_ui() -> impl Widget { .cross_axis_alignment(CrossAxisAlignment::Center) .must_fill_main_axis(true) .with_child(SizedBox::new(Align::left(toolbar)).height(50.0)) - .with_flex_child((CanvasWidget).lens(StilettoState::canvas), 1.0) + .with_flex_child( + CanvasWidget::new() + .lens(StilettoState::canvas) + .with_id(canvas_id), + 1.0, + ) .controller(ToolSwitcher::new()) } diff --git a/src/tool.rs b/src/tool.rs index 2c57785..18b7a1a 100644 --- a/src/tool.rs +++ b/src/tool.rs @@ -27,4 +27,3 @@ pub enum CanvasToolType { Pen, Eraser, } - diff --git a/src/widget/canvas.rs b/src/widget/canvas.rs index f29cce4..94d65c0 100644 --- a/src/widget/canvas.rs +++ b/src/widget/canvas.rs @@ -21,8 +21,11 @@ use crate::canvas::Canvas; use crate::history::VersionedCanvas; use crate::DocumentSnapshot; +use druid::scroll_component::ScrollComponent; use druid::widget::prelude::*; -use druid::{Color, Data, Env, Event, PointerType}; +use druid::widget::Viewport; +use druid::{Affine, Color, Data, Env, Event, PointerType, Selector}; + #[derive(Clone, Data)] pub struct CanvasState { @@ -83,54 +86,102 @@ impl CanvasState { &mut self.tool_ctx } - pub fn handle_event(&mut self, mut ctx: &mut EventCtx, event: &Event, env: &Env) { + pub fn handle_event(&mut self, ctx: &mut EventCtx, event: &Event, transform: Affine, env: &Env) { self.tool_ctx - .handle_event(ctx, event, &mut self.versioned_canvas, env); + .handle_event(ctx, event, &mut self.versioned_canvas, transform, env); } } -pub struct CanvasWidget; +pub struct CanvasWidget { + viewport: Viewport, + scroll_component: ScrollComponent, +} + +impl CanvasWidget { + pub fn new() -> Self { + CanvasWidget { + viewport: Viewport { + content_size: Size::new(0.0, 0.0), + rect: druid::Rect::new(0.0, 0.0, 0.0, 0.0), + }, + scroll_component: ScrollComponent::new(), + } + } + + pub const SCROLL: Selector = Selector::new("scroll_canvas"); +} impl Widget for CanvasWidget { fn event(&mut self, ctx: &mut EventCtx, event: &Event, data: &mut CanvasState, env: &Env) { ctx.request_focus(); - let mut toggle_eraser_event = false; - let mut enable_temporary_erasing = false; - match event { - Event::MouseDown(mouse_event) => { - toggle_eraser_event = true; - enable_temporary_erasing = mouse_event.pointer_type == PointerType::Eraser; + + self.scroll_component + .event(&mut self.viewport, ctx, event, env); + if !ctx.is_handled() { + let mut scroll_amount = 0.0; + let mut toggle_eraser_event = false; + let mut enable_temporary_erasing = false; + match event { + Event::Command(cmd) => { + if let Some(value) = cmd.get(CanvasWidget::SCROLL) { + scroll_amount = *value; + } + } + Event::KeyDown(key_event) => { + if key_event.code == druid::Code::ArrowDown { + scroll_amount = 30.0; + } else if key_event.code == druid::Code::ArrowUp { + scroll_amount = -30.0; + } + } + Event::MouseDown(mouse_event) => { + toggle_eraser_event = true; + enable_temporary_erasing = mouse_event.pointer_type == PointerType::Eraser; + } + Event::MouseMove(mouse_event) => { + toggle_eraser_event = true; + enable_temporary_erasing = mouse_event.pointer_type == PointerType::Eraser; + } + Event::MouseUp(mouse_event) => { + toggle_eraser_event = true; + enable_temporary_erasing = mouse_event.pointer_type == PointerType::Eraser; + } + _ => {} } - Event::MouseMove(mouse_event) => { - toggle_eraser_event = true; - enable_temporary_erasing = mouse_event.pointer_type == PointerType::Eraser; - } - Event::MouseUp(mouse_event) => { - toggle_eraser_event = true; - enable_temporary_erasing = mouse_event.pointer_type == PointerType::Eraser; - } - _ => {} - } - // TODO: the first eraser toggle is not handled - if toggle_eraser_event && data.temporary_erasing != enable_temporary_erasing { - if enable_temporary_erasing { - ctx.submit_notification(crate::commands::PUSH_ERASER); + // TODO: the first eraser toggle is not handled + if toggle_eraser_event && data.temporary_erasing != enable_temporary_erasing { + if enable_temporary_erasing { + ctx.submit_notification(crate::commands::PUSH_ERASER); + } else { + ctx.submit_notification(crate::commands::POP_ERASER); + } + data.temporary_erasing = enable_temporary_erasing; } else { - ctx.submit_notification(crate::commands::POP_ERASER); + let transform = + Affine::translate((self.viewport.rect.x0, self.viewport.rect.y0)); + data.handle_event(ctx, event, transform, env); + } + if scroll_amount != 0.0 { + self.viewport.rect.y0 = 0.0_f64.max(self.viewport.rect.y0 + scroll_amount); + self.scroll_component + .reset_scrollbar_fade(|d| ctx.request_timer(d), env); + ctx.request_paint(); + ctx.set_handled(); } - data.temporary_erasing = enable_temporary_erasing; - } else { - data.handle_event(ctx, event, env); } + // TODO: replace this by own handling of Wheel event (must be able to extend content size) + self.scroll_component + .handle_scroll(&mut self.viewport, ctx, event, env); } fn lifecycle( &mut self, - _ctx: &mut LifeCycleCtx, - _event: &LifeCycle, + ctx: &mut LifeCycleCtx, + event: &LifeCycle, _data: &CanvasState, - _env: &Env, + env: &Env, ) { + self.scroll_component.lifecycle(ctx, event, env); } fn update( @@ -149,6 +200,7 @@ impl Widget for CanvasWidget { // ctx.request_paint_rect(e.bounding_box()); // } //} else { + ctx.request_paint(); //} } @@ -177,12 +229,28 @@ impl Widget for CanvasWidget { let size = ctx.size(); let rect = size.to_rect(); + ctx.clip(rect); ctx.fill(rect, &Color::WHITE); + + let page_content_size = data.versioned_canvas.get().content_size(); + self.viewport.rect = self.viewport.rect.with_size(size); + self.viewport.content_size = druid::Size::new( + self.viewport.rect.x1.max(page_content_size.width), + self.viewport.rect.y1.max(page_content_size.height), + ); + + ctx.save().unwrap(); + ctx.transform(Affine::translate(( + -self.viewport.rect.x0, + -self.viewport.rect.y0, + ))); for element in data.versioned_canvas.get().elements().iter() { element.draw(ctx); } + ctx.restore().unwrap(); if data.tool_ctx.needs_repaint() { data.tool_ctx.paint(ctx, env); } + self.scroll_component.draw_bars(ctx, &self.viewport, env); } } diff --git a/src/widget/tool_ctx.rs b/src/widget/tool_ctx.rs index 2dc95f1..3726fac 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::{Data, Env, Event, EventCtx, MouseButton, MouseEvent, PaintCtx}; +use druid::{Affine, Data, Env, Event, EventCtx, MouseButton, MouseEvent, PaintCtx}; #[derive(Clone, Data)] pub enum CanvasToolState { @@ -61,30 +61,34 @@ impl CanvasToolCtx { pub fn handle_event( &mut self, - ctx: &EventCtx, + ctx: &mut EventCtx, event: &Event, - mut vcanvas: &mut VersionedCanvas, + vcanvas: &mut VersionedCanvas, + transform: Affine, env: &Env, ) { match self.initial_params.tool_type() { - CanvasToolType::Pen => self.handle_pen_event(&ctx, &event, &mut vcanvas, &env), - CanvasToolType::Eraser => self.handle_erase_event(&ctx, &event, &mut vcanvas, &env), + CanvasToolType::Pen => self.handle_pen_event(ctx, event, vcanvas, transform, env), + CanvasToolType::Eraser => self.handle_erase_event(ctx, event, vcanvas, transform, env), } } pub fn handle_erase_event( &mut self, - _ctx: &EventCtx, + ctx: &mut EventCtx, event: &Event, vcanvas: &mut VersionedCanvas, + transform: Affine, _env: &Env, ) { match (&mut self.state, event) { (CanvasToolState::Idle, Event::MouseDown(mouse_event)) if pressed(mouse_event) => { self.state = CanvasToolState::Erasing; + ctx.set_handled(); } (CanvasToolState::Erasing, Event::MouseMove(mouse_event)) if pressed(mouse_event) => { - let eraser_rect = druid::Rect::from_center_size(mouse_event.pos, (5.0, 5.0)); + let eraser_rect = + druid::Rect::from_center_size(transform * mouse_event.pos, (5.0, 5.0)); let old_elements = vcanvas.get().elements(); let mut new_elements = old_elements.clone(); new_elements.retain(|elem| { @@ -101,9 +105,11 @@ impl CanvasToolCtx { *canvas = Canvas::new_with_elements(new_elements); }); } + ctx.set_handled(); } (CanvasToolState::Erasing, Event::MouseUp(mouse_event)) if pressed(mouse_event) => { self.state = CanvasToolState::Idle; + ctx.set_handled(); } _ => {} } @@ -111,9 +117,10 @@ impl CanvasToolCtx { pub fn handle_pen_event( &mut self, - _ctx: &EventCtx, + ctx: &mut EventCtx, event: &Event, vcanvas: &mut VersionedCanvas, + transform: Affine, _env: &Env, ) { match (&mut self.state, event) { @@ -130,6 +137,7 @@ impl CanvasToolCtx { }, }; } + ctx.set_handled(); } ( CanvasToolState::DrawingFreehand { @@ -142,6 +150,7 @@ impl CanvasToolCtx { path.kurbo_path .line_to((mouse_event.pos.x, mouse_event.pos.y)); } + ctx.set_handled(); } (CanvasToolState::DrawingFreehand { .. }, Event::MouseUp(mouse_event)) if pressed(mouse_event) => { vcanvas.update(move |canvas: &mut Canvas| { @@ -149,10 +158,11 @@ impl CanvasToolCtx { if let CanvasToolState::DrawingFreehand { current_path, .. } = current_state { if let CanvasElement::Freehand { mut path, - mut thickness, + thickness, stroke_color, } = current_path { + path.kurbo_path.apply_affine(transform); canvas.add_element(CanvasElement::Freehand { path, thickness, @@ -161,6 +171,7 @@ impl CanvasToolCtx { } } }); + ctx.set_handled(); } _ => {} } -- 2.39.5 From 4d1ecf921e998b482ecc6567aa8ee2afd9d900f6 Mon Sep 17 00:00:00 2001 From: Enrico Lumetti Date: Tue, 30 Mar 2021 13:53:17 +0200 Subject: [PATCH 02/11] WIP touch --- Cargo.lock | 3 -- Cargo.toml | 4 +- src/main.rs | 4 +- src/widget/canvas.rs | 100 ++++++++++++++++++++++++++++++++++--------- 4 files changed, 84 insertions(+), 27 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 8b0da48..c102f73 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -370,7 +370,6 @@ checksum = "212d0f5754cb6769937f4501cc0e67f4f4483c8d2c3e1e922ee9edbe4ab4c7c0" [[package]] name = "druid" version = "0.7.0" -source = "git+https://github.com/doppioandante/druid?branch=v0.7.0_stiletto#2cbb14456fb1813e673d2151626630d2c4db68bf" dependencies = [ "console_log", "druid-derive", @@ -393,7 +392,6 @@ dependencies = [ [[package]] name = "druid-derive" version = "0.4.0" -source = "git+https://github.com/doppioandante/druid?branch=v0.7.0_stiletto#2cbb14456fb1813e673d2151626630d2c4db68bf" dependencies = [ "proc-macro2", "quote", @@ -403,7 +401,6 @@ dependencies = [ [[package]] name = "druid-shell" version = "0.7.0" -source = "git+https://github.com/doppioandante/druid?branch=v0.7.0_stiletto#2cbb14456fb1813e673d2151626630d2c4db68bf" dependencies = [ "anyhow", "bitflags", diff --git a/Cargo.toml b/Cargo.toml index 60cc5ae..5496228 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -27,6 +27,6 @@ version = "0.13.2" features = ["v3_22"] [patch.crates-io] -druid = { git = "https://github.com/doppioandante/druid", branch = "v0.7.0_stiletto", features = ["im", "svg"] } -#druid = { path = "../druid/druid/", features = ["im", "svg"] } +#druid = { git = "https://github.com/doppioandante/druid", branch = "v0.7.0_stiletto", features = ["im", "svg"] } +druid = { path = "../druid/druid/", features = ["im", "svg"] } diff --git a/src/main.rs b/src/main.rs index 4200e22..5c34604 100644 --- a/src/main.rs +++ b/src/main.rs @@ -24,9 +24,10 @@ use druid::widget::prelude::*; use druid::widget::{ Align, Button, Controller, CrossAxisAlignment, Flex, List, SizedBox, WidgetExt, }; +use druid::gesture::GestureController; use druid::{ AppDelegate, AppLauncher, Color, Command, Data, DelegateCtx, Env, FileDialogOptions, FileSpec, - Handled, Lens, Target, WidgetId, WindowDesc, + Handled, Lens, PointerEventController, PointerEventPolicy, Target, WidgetId, WindowDesc, }; use im::Vector; @@ -200,6 +201,7 @@ fn build_ui() -> impl Widget { 1.0, ) .controller(ToolSwitcher::new()) + .controller(GestureController::new()) } struct ToolSwitcher { diff --git a/src/widget/canvas.rs b/src/widget/canvas.rs index 94d65c0..747c436 100644 --- a/src/widget/canvas.rs +++ b/src/widget/canvas.rs @@ -24,6 +24,7 @@ use crate::DocumentSnapshot; use druid::scroll_component::ScrollComponent; use druid::widget::prelude::*; use druid::widget::Viewport; +use druid::kurbo::Point; use druid::{Affine, Color, Data, Env, Event, PointerType, Selector}; @@ -95,6 +96,7 @@ impl CanvasState { pub struct CanvasWidget { viewport: Viewport, scroll_component: ScrollComponent, + widget_size: Size, } impl CanvasWidget { @@ -104,10 +106,24 @@ impl CanvasWidget { content_size: Size::new(0.0, 0.0), rect: druid::Rect::new(0.0, 0.0, 0.0, 0.0), }, + widget_size: Size::new(0.0, 0.0), scroll_component: ScrollComponent::new(), } } + fn widget_to_viewport(&self) -> Affine { + let viewport_rect_size = self.viewport.rect.size(); + if !viewport_rect_size.is_empty() && !self.widget_size.is_empty() { + let scale_x = viewport_rect_size.width / self.widget_size.width; + let scale_y = viewport_rect_size.height / self.widget_size.height; + Affine::translate(self.viewport.rect.origin().to_vec2()) + * Affine::scale_non_uniform(scale_x, scale_y) + } else { + Affine::scale(1.0) // identity + } + + } + pub const SCROLL: Selector = Selector::new("scroll_canvas"); } @@ -118,33 +134,63 @@ impl Widget for CanvasWidget { self.scroll_component .event(&mut self.viewport, ctx, event, env); if !ctx.is_handled() { - let mut scroll_amount = 0.0; + let mut viewport_transform: Option = None; let mut toggle_eraser_event = false; let mut enable_temporary_erasing = false; match event { Event::Command(cmd) => { if let Some(value) = cmd.get(CanvasWidget::SCROLL) { - scroll_amount = *value; + viewport_transform = Some(Affine::translate((0.0, *value))); } } Event::KeyDown(key_event) => { if key_event.code == druid::Code::ArrowDown { - scroll_amount = 30.0; + viewport_transform = Some(Affine::translate((0.0, 30.0))); } else if key_event.code == druid::Code::ArrowUp { - scroll_amount = -30.0; + viewport_transform = Some(Affine::translate((0.0, -30.0))); + } else if key_event.code == druid::Code::ArrowRight { + viewport_transform = Some(Affine::translate((30.0, 0.0))); + } else if key_event.code == druid::Code::ArrowLeft { + viewport_transform = Some(Affine::translate((-30.0, 0.0))); } } Event::MouseDown(mouse_event) => { toggle_eraser_event = true; - enable_temporary_erasing = mouse_event.pointer_type == PointerType::Eraser; + enable_temporary_erasing = false; //mouse_event.pointer_type == PointerType::Eraser; } Event::MouseMove(mouse_event) => { toggle_eraser_event = true; - enable_temporary_erasing = mouse_event.pointer_type == PointerType::Eraser; + enable_temporary_erasing = false; //mouse_event.pointer_type == PointerType::Eraser; } Event::MouseUp(mouse_event) => { toggle_eraser_event = true; - enable_temporary_erasing = mouse_event.pointer_type == PointerType::Eraser; + enable_temporary_erasing = false; //mouse_event.pointer_type == PointerType::Eraser; + } + Event::Wheel(mouse) => { + 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() + ) + ); } _ => {} } @@ -157,21 +203,25 @@ impl Widget for CanvasWidget { } data.temporary_erasing = enable_temporary_erasing; } else { - let transform = - Affine::translate((self.viewport.rect.x0, self.viewport.rect.y0)); - data.handle_event(ctx, event, transform, env); + data.handle_event(ctx, event, self.widget_to_viewport(), env); } - if scroll_amount != 0.0 { - self.viewport.rect.y0 = 0.0_f64.max(self.viewport.rect.y0 + scroll_amount); + if let Some(transform) = viewport_transform { + let mut new_rect = transform.transform_rect_bbox(self.viewport.rect); + if new_rect.x0 <= 0f64 { + new_rect.x1 -= new_rect.x0; + new_rect.x0 = 0f64; + } + if new_rect.y0 <= 0f64 { + new_rect.y1 -= new_rect.y0; + new_rect.y0 = 0f64; + } + self.viewport.rect = new_rect; self.scroll_component .reset_scrollbar_fade(|d| ctx.request_timer(d), env); ctx.request_paint(); ctx.set_handled(); } } - // TODO: replace this by own handling of Wheel event (must be able to extend content size) - self.scroll_component - .handle_scroll(&mut self.viewport, ctx, event, env); } fn lifecycle( @@ -233,24 +283,32 @@ impl Widget for CanvasWidget { ctx.fill(rect, &Color::WHITE); let page_content_size = data.versioned_canvas.get().content_size(); - self.viewport.rect = self.viewport.rect.with_size(size); + let transform = self.widget_to_viewport(); + self.viewport.rect = + transform.transform_rect_bbox(rect) + .with_origin(self.viewport.rect.origin()); + self.viewport.content_size = druid::Size::new( self.viewport.rect.x1.max(page_content_size.width), self.viewport.rect.y1.max(page_content_size.height), ); + //log::debug!("{:#?}", &self.viewport); ctx.save().unwrap(); - ctx.transform(Affine::translate(( - -self.viewport.rect.x0, - -self.viewport.rect.y0, - ))); + ctx.transform(transform.inverse()); for element in data.versioned_canvas.get().elements().iter() { element.draw(ctx); } ctx.restore().unwrap(); + + self.scroll_component.draw_bars(ctx, &self.viewport, env); + + // tools take care of the transform themselves if data.tool_ctx.needs_repaint() { data.tool_ctx.paint(ctx, env); } - self.scroll_component.draw_bars(ctx, &self.viewport, env); + + // update current widget size + self.widget_size = size; } } -- 2.39.5 From 24ddfcd0a6207f23df3de6eeeba9ec7e2c9f5144 Mon Sep 17 00:00:00 2001 From: Enrico Lumetti Date: Fri, 23 Jul 2021 00:11:51 +0200 Subject: [PATCH 03/11] WIP (druid) --- src/main.rs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/main.rs b/src/main.rs index 5c34604..9fadd1f 100644 --- a/src/main.rs +++ b/src/main.rs @@ -24,10 +24,10 @@ use druid::widget::prelude::*; use druid::widget::{ Align, Button, Controller, CrossAxisAlignment, Flex, List, SizedBox, WidgetExt, }; -use druid::gesture::GestureController; +use druid::gesture::DruidGestureRecognizer; use druid::{ AppDelegate, AppLauncher, Color, Command, Data, DelegateCtx, Env, FileDialogOptions, FileSpec, - Handled, Lens, PointerEventController, PointerEventPolicy, Target, WidgetId, WindowDesc, + Handled, Lens, PointerEventPolicy, Target, WidgetId, WindowDesc, }; use im::Vector; @@ -39,6 +39,8 @@ use stiletto::DocumentSnapshot; pub fn main() { let window = WindowDesc::new(build_ui) + .set_pointer_event_policy(PointerEventPolicy::UseMixedApi) + .set_gesture_recognizer(Box::new(DruidGestureRecognizer::new())) .window_size((1024.0, 1400.0)) .title(|data: &StilettoState, _env: &Env| { let doc_name = if let Some(path) = &data.current_file_path { @@ -201,7 +203,6 @@ fn build_ui() -> impl Widget { 1.0, ) .controller(ToolSwitcher::new()) - .controller(GestureController::new()) } struct ToolSwitcher { -- 2.39.5 From bf1a5199bc260f5a55cb53b9b8f8a149e0e6aa37 Mon Sep 17 00:00:00 2001 From: Enrico Lumetti Date: Mon, 4 Oct 2021 15:26:56 +0200 Subject: [PATCH 04/11] Update Cargo.lock --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c102f73..fc504c2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1041,9 +1041,9 @@ checksum = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" [[package]] name = "memchr" -version = "2.3.4" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ee1c47aaa256ecabcaea351eae4a9b01ef39ed810004e298d2511ed284b1525" +checksum = "b16bd47d9e329435e309c58469fe0791c2d0d1ba96ec0954152a5ae2b04387dc" [[package]] name = "memmap2" -- 2.39.5 From e51f6c431c1a418d6bc8e64726695b072dde77fc Mon Sep 17 00:00:00 2001 From: Enrico Lumetti Date: Mon, 4 Oct 2021 15:53:19 +0200 Subject: [PATCH 05/11] Update to experimental PointerEvent PR --- Cargo.lock | 737 ++++++++++++++++++++++++++--------------------------- Cargo.toml | 3 +- 2 files changed, 369 insertions(+), 371 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index fc504c2..41acd97 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,16 +1,31 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. [[package]] -name = "adler" -version = "0.2.3" +name = "Inflector" +version = "0.11.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee2a4ec343196209d6594e19543ae87a39f96d5534d7174822a3ad825dd6ed7e" +checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "ansi_term" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" +dependencies = [ + "winapi", +] [[package]] name = "anyhow" -version = "1.0.34" +version = "1.0.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf8dcb5b4bbaa28653b647d8c77bd4ed40183b48882e130c1f1ffb73de069fd7" +checksum = "61604a8f862e1d5c3229fdd78f8b02c68dcf73a4c4b05fd636d12240aaa242c1" [[package]] name = "arrayvec" @@ -81,9 +96,9 @@ checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" [[package]] name = "bitflags" -version = "1.2.1" +version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitmaps" @@ -102,21 +117,15 @@ checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" [[package]] name = "bumpalo" -version = "3.4.0" +version = "3.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e8c087f005730276d1096a652e92a8bacee2e2472bcc9715a74d2bec38b5820" +checksum = "d9df67f7bf9ef8498769f994239c45613ef0c5899415fb58e9add412d2c1a538" [[package]] name = "bytemuck" -version = "1.5.1" +version = "1.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bed57e2090563b83ba8f83366628ce535a7584c9afa4c9fc0612a03925c6df58" - -[[package]] -name = "byteorder" -version = "1.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08c48aae112d48ed9f069b33538ea9e3e90aa263cfa3d1c24309612b1f7472de" +checksum = "72957246c41db82b8ef88a5486143830adeb8227ef9837740bdec67724cf2c5b" [[package]] name = "cairo-rs" @@ -146,9 +155,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.65" +version = "1.0.70" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95752358c8f7552394baf48cd82695b345628ad3f170d607de3ca03b8dacca15" +checksum = "d26a6ce4b6a484fa3edb70f7efa6fc430fd2b87285fe8b84304fd0936faa0dc0" [[package]] name = "cfg-if" @@ -164,9 +173,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "clap" -version = "3.0.0-beta.2" +version = "3.0.0-beta.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bd1061998a501ee7d4b6d449020df3266ca3124b941ec56cf2005c3779ca142" +checksum = "fcd70aa5597dbc42f7217a543f9ef2768b2ef823ba29036072d30e1d88e98406" dependencies = [ "atty", "bitflags", @@ -177,15 +186,14 @@ dependencies = [ "strsim", "termcolor", "textwrap", - "unicode-width", "vec_map", ] [[package]] name = "clap_derive" -version = "3.0.0-beta.2" +version = "3.0.0-beta.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "370f715b81112975b1b69db93e0b56ea4cd4e5002ac43b2da8474106a54096a1" +checksum = "0b5bb0d655624a0b8770d1c178fb8ffcb1f91cc722cb08f451e3dc72465421ac" dependencies = [ "heck", "proc-macro-error", @@ -194,15 +202,6 @@ dependencies = [ "syn", ] -[[package]] -name = "cmake" -version = "0.1.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb6210b637171dfba4cda12e579ac6dc73f5165ad56133e5d72ef3131f320855" -dependencies = [ - "cc", -] - [[package]] name = "cocoa" version = "0.24.0" @@ -212,8 +211,8 @@ dependencies = [ "bitflags", "block", "cocoa-foundation", - "core-foundation 0.9.1", - "core-graphics 0.22.2", + "core-foundation", + "core-graphics", "foreign-types", "libc", "objc", @@ -227,7 +226,7 @@ checksum = "7ade49b65d560ca58c403a479bb396592b155c0185eada742ee323d1d68d6318" dependencies = [ "bitflags", "block", - "core-foundation 0.9.1", + "core-foundation", "core-graphics-types", "foreign-types", "libc", @@ -235,30 +234,20 @@ dependencies = [ ] [[package]] -name = "console_log" -version = "0.2.0" +name = "console_error_panic_hook" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "501a375961cef1a0d44767200e66e4a559283097e91d0730b1d75dfb2f8a1494" +checksum = "b8d976903543e0c48546a91908f21588a680a8c8f984df9a5d69feccb2b2a211" dependencies = [ - "log", - "web-sys", + "cfg-if 0.1.10", + "wasm-bindgen", ] [[package]] name = "const_fn" -version = "0.4.3" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c478836e029dcef17fb47c89023448c64f781a046e0300e257ad8225ae59afab" - -[[package]] -name = "core-foundation" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57d24c7a13c43e870e37c1556b74555437870a04514f7685f5b354e090567171" -dependencies = [ - "core-foundation-sys 0.7.0", - "libc", -] +checksum = "f92cfa0fd5690b3cf8c1ef2cabbd9b7ef22fa53cf5e1f92b05103f6d5d1cf6e7" [[package]] name = "core-foundation" @@ -266,34 +255,16 @@ version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0a89e2ae426ea83155dccf10c0fa6b1463ef6d5fcb44cee0b224a408fa640a62" dependencies = [ - "core-foundation-sys 0.8.2", + "core-foundation-sys", "libc", ] -[[package]] -name = "core-foundation-sys" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3a71ab494c0b5b860bdc8407ae08978052417070c2ced38573a9157ad75b8ac" - [[package]] name = "core-foundation-sys" version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ea221b5284a47e40033bf9b66f35f984ec0ea2931eb03505246cd27a963f981b" -[[package]] -name = "core-graphics" -version = "0.19.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3889374e6ea6ab25dba90bb5d96202f61108058361f6dc72e8b03e6f8bbe923" -dependencies = [ - "bitflags", - "core-foundation 0.7.0", - "foreign-types", - "libc", -] - [[package]] name = "core-graphics" version = "0.22.2" @@ -301,7 +272,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "269f35f69b542b80e736a20a89a05215c0ce80c2c03c514abb2e318b78379d86" dependencies = [ "bitflags", - "core-foundation 0.9.1", + "core-foundation", "core-graphics-types", "foreign-types", "libc", @@ -314,19 +285,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3a68b68b3446082644c91ac778bf50cd4104bfb002b5a6a7c44cca5a2c70788b" dependencies = [ "bitflags", - "core-foundation 0.9.1", - "foreign-types", - "libc", -] - -[[package]] -name = "core-text" -version = "15.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "131b3fd1f8bd5db9f2b398fa4fdb6008c64afc04d447c306ac2c7e98fba2a61d" -dependencies = [ - "core-foundation 0.7.0", - "core-graphics 0.19.2", + "core-foundation", "foreign-types", "libc", ] @@ -337,8 +296,8 @@ version = "19.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "99d74ada66e07c1cefa18f8abfba765b486f250de2e4a999e5727fc0dd4b4a25" dependencies = [ - "core-foundation 0.9.1", - "core-graphics 0.22.2", + "core-foundation", + "core-graphics", "foreign-types", "libc", ] @@ -370,28 +329,30 @@ checksum = "212d0f5754cb6769937f4501cc0e67f4f4483c8d2c3e1e922ee9edbe4ab4c7c0" [[package]] name = "druid" version = "0.7.0" +source = "git+https://github.com/jneem/druid?branch=pointer#01e245dc7b30111892cc7db56ac85207ae114009" dependencies = [ - "console_log", + "console_error_panic_hook", "druid-derive", "druid-shell", "fluent-bundle", "fluent-langneg", "fluent-syntax", "fnv", - "harfbuzz-sys", "im", "instant", - "log", - "simple_logger", + "tracing", + "tracing-subscriber", + "tracing-wasm", "unic-langid", "unicode-segmentation", "usvg", - "xi-unicode 0.3.0", + "xi-unicode", ] [[package]] name = "druid-derive" version = "0.4.0" +source = "git+https://github.com/jneem/druid?branch=pointer#01e245dc7b30111892cc7db56ac85207ae114009" dependencies = [ "proc-macro2", "quote", @@ -401,6 +362,7 @@ dependencies = [ [[package]] name = "druid-shell" version = "0.7.0" +source = "git+https://github.com/jneem/druid?branch=pointer#01e245dc7b30111892cc7db56ac85207ae114009" dependencies = [ "anyhow", "bitflags", @@ -408,7 +370,7 @@ dependencies = [ "cairo-rs", "cfg-if 1.0.0", "cocoa", - "core-graphics 0.22.2", + "core-graphics", "foreign-types", "gdk", "gdk-pixbuf", @@ -423,11 +385,11 @@ dependencies = [ "keyboard-types", "kurbo", "lazy_static", - "log", "objc", "piet-common", "scopeguard", "time", + "tracing", "wasm-bindgen", "web-sys", "winapi", @@ -454,9 +416,9 @@ checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" [[package]] name = "flate2" -version = "1.0.19" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7411863d55df97a419aa64cb4d2f167103ea9d767e2c54a1868b7ac3f6b47129" +checksum = "1e6988e897c1c9c485f43b47a529cef42fde0547f9d8d41a7062518f1d8fc53f" dependencies = [ "cfg-if 1.0.0", "crc32fast", @@ -472,15 +434,16 @@ checksum = "75224bec9bfe1a65e2d34132933f2de7fe79900c96a0174307554244ece8150e" [[package]] name = "fluent-bundle" -version = "0.12.0" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01a094d494ab2ed06077e9a95f4e47f446c376de95f6c93045dd88c499bfcd70" +checksum = "8acf044eeb4872d9dbf2667541fbf461f5965c57e343878ad0fb24b5793fa007" dependencies = [ "fluent-langneg", "fluent-syntax", "intl-memoizer", "intl_pluralrules", - "rental", + "ouroboros", + "rustc-hash", "smallvec", "unic-langid", ] @@ -496,9 +459,12 @@ dependencies = [ [[package]] name = "fluent-syntax" -version = "0.9.3" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac0f7e83d14cccbf26e165d8881dcac5891af0d85a88543c09dd72ebd31d91ba" +checksum = "c0abed97648395c902868fee9026de96483933faa54ea3b40d652f7dfe61ca78" +dependencies = [ + "thiserror", +] [[package]] name = "fnv" @@ -508,14 +474,13 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fontdb" -version = "0.3.0" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccfec742e7db963305c1d8fde9edef949b47b01e1664dae127489928633fbea8" +checksum = "e58903f4f8d5b58c7d300908e4ebe5289c1bfdf5587964330f12023b8ff17fd1" dependencies = [ "log", "memmap2", - "ttf-parser", - "uuid", + "ttf-parser 0.12.3", ] [[package]] @@ -533,32 +498,11 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" -[[package]] -name = "freetype" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b73222ab32d9ad65fe0e1c3258da8d614fd47cf19fce92b09eb520060c5c5ad5" -dependencies = [ - "freetype-sys", - "libc", -] - -[[package]] -name = "freetype-sys" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d48ac0ce366dd47a115ec8e598d7c51b4a974fc52ded5e53a56b31f55f34f3ea" -dependencies = [ - "cmake", - "libc", - "pkg-config", -] - [[package]] name = "futures" -version = "0.3.13" +version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f55667319111d593ba876406af7c409c0ebb44dc4be6132a783ccf163ea14c1" +checksum = "a12aa0eb539080d55c3f2d45a67c3b58b6b0773c1a3ca2dfec66d58c97fd66ca" dependencies = [ "futures-channel", "futures-core", @@ -571,9 +515,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.13" +version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c2dd2df839b57db9ab69c2c9d8f3e8c81984781937fe2807dc6dcf3b2ad2939" +checksum = "5da6ba8c3bb3c165d3c7319fc1cc8304facf1fb8db99c5de877183c08a273888" dependencies = [ "futures-core", "futures-sink", @@ -581,15 +525,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.13" +version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15496a72fabf0e62bdc3df11a59a3787429221dd0710ba8ef163d6f7a9112c94" +checksum = "88d1c26957f23603395cd326b0ffe64124b818f4449552f960d815cfba83a53d" [[package]] name = "futures-executor" -version = "0.3.13" +version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "891a4b7b96d84d5940084b2a37632dd65deeae662c114ceaa2c879629c9c0ad1" +checksum = "45025be030969d763025784f7f355043dc6bc74093e4ecc5000ca4dc50d8745c" dependencies = [ "futures-core", "futures-task", @@ -598,16 +542,17 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.13" +version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71c2c65c57704c32f5241c1223167c2c3294fd34ac020c807ddbe6db287ba59" +checksum = "522de2a0fe3e380f1bc577ba0474108faf3f6b18321dbf60b3b9c39a75073377" [[package]] name = "futures-macro" -version = "0.3.13" +version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea405816a5139fb39af82c2beb921d52143f556038378d6db21183a5c37fbfb7" +checksum = "18e4a4b95cea4b4ccbcf1c5675ca7c4ee4e9e75eb79944d07defde18068f79bb" dependencies = [ + "autocfg", "proc-macro-hack", "proc-macro2", "quote", @@ -616,22 +561,23 @@ dependencies = [ [[package]] name = "futures-sink" -version = "0.3.13" +version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85754d98985841b7d4f5e8e6fbfa4a4ac847916893ec511a2917ccd8525b8bb3" +checksum = "36ea153c13024fe480590b3e3d4cad89a0cfacecc24577b68f86c6ced9c2bc11" [[package]] name = "futures-task" -version = "0.3.13" +version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa189ef211c15ee602667a6fcfe1c1fd9e07d42250d2156382820fba33c9df80" +checksum = "1d3d00f4eddb73e498a54394f228cd55853bdf059259e8e7bc6e69d408892e99" [[package]] name = "futures-util" -version = "0.3.13" +version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1812c7ab8aedf8d6f2701a43e1243acdbcc2b36ab26e2ad421eb99ac963d96d1" +checksum = "36568465210a3a6ee45e1f165136d68671471a501e632e9a98d96872222b5481" dependencies = [ + "autocfg", "futures-channel", "futures-core", "futures-io", @@ -646,15 +592,6 @@ dependencies = [ "slab", ] -[[package]] -name = "fxhash" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" -dependencies = [ - "byteorder", -] - [[package]] name = "gdk" version = "0.13.2" @@ -720,17 +657,6 @@ dependencies = [ "system-deps", ] -[[package]] -name = "getrandom" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9495705279e7140bf035dde1f6e750c162df8b625267cd52cc44e0b156732c8" -dependencies = [ - "cfg-if 1.0.0", - "libc", - "wasi", -] - [[package]] name = "gio" version = "0.9.1" @@ -867,40 +793,26 @@ dependencies = [ "system-deps", ] -[[package]] -name = "harfbuzz-sys" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "845f3e65ec4e30b0b1b6e1c055900871f3776d3492cc76744e3fc5943a6129a9" -dependencies = [ - "cc", - "core-graphics 0.19.2", - "core-text 15.0.0", - "foreign-types", - "freetype", - "pkg-config", -] - [[package]] name = "hashbrown" -version = "0.9.1" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7afe4a420e3fe79967a00898cc1f4db7c8a49a9333a29f8a4bd76a253d5cd04" +checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" [[package]] name = "heck" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87cbf45460356b7deeb5e3415b5563308c0a9b057c85e12b06ad551f98d0a6ac" +checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" dependencies = [ "unicode-segmentation", ] [[package]] name = "hermit-abi" -version = "0.1.17" +version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aca5565f760fb5b220e499d72710ed156fdb74e631659e99377d9ebfbd13ae8" +checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" dependencies = [ "libc", ] @@ -921,9 +833,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "1.6.2" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "824845a0bf897a9042383849b02c1bc219c2383772efcd5c6f9766fa4b81aef3" +checksum = "bc633605454125dec4b66843673f01c7df2b89479b32e0ed634e43a91cff62a5" dependencies = [ "autocfg", "hashbrown", @@ -931,9 +843,9 @@ dependencies = [ [[package]] name = "instant" -version = "0.1.9" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61124eeebbd69b8190558df225adf7e4caafce0d743919e5d6b19652314ec5ec" +checksum = "716d3d89f35ac6a34fd0eed635395f4c3b76fa889338a4632e5231a8684216bd" dependencies = [ "cfg-if 1.0.0", "js-sys", @@ -943,9 +855,9 @@ dependencies = [ [[package]] name = "intl-memoizer" -version = "0.5.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a0ed58ba6089d49f8a9a7d5e16fc9b9e2019cdf40ef270f3d465fa244d9630b" +checksum = "c310433e4a310918d6ed9243542a6b83ec1183df95dff8f23f87bb88a264a66f" dependencies = [ "type-map", "unic-langid", @@ -953,9 +865,9 @@ dependencies = [ [[package]] name = "intl_pluralrules" -version = "7.0.0" +version = "7.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c271cdb1f12a9feb3a017619c3ee681f971f270f6757341d6abe1f9f7a98bc3" +checksum = "b18f988384267d7066cc2be425e6faf352900652c046b6971d2e228d3b1c5ecf" dependencies = [ "tinystr", "unic-langid", @@ -972,15 +884,15 @@ dependencies = [ [[package]] name = "itoa" -version = "0.4.6" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc6f3ad7b9d11a0c00842ff8de1b60ee58661048eb8049ed33c73594f359d7e6" +checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" [[package]] name = "js-sys" -version = "0.3.45" +version = "0.3.55" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca059e81d9486668f12d455a4ea6daa600bd408134cd17e3d3fb5a32d1f016f8" +checksum = "7cc9ffccd38c451a86bf13657df244e9c3f37493cce8e5e21e940963777acc84" dependencies = [ "wasm-bindgen", ] @@ -996,9 +908,9 @@ dependencies = [ [[package]] name = "kurbo" -version = "0.7.1" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16cb54cd28cb3d2e964d9444ca185676a94fd9b7cce5f02b22c717947ed8e9a2" +checksum = "e30b1df631d23875f230ed3ddd1a88c231f269a04b2044eb6ca87e763b5f4c42" dependencies = [ "arrayvec", ] @@ -1011,17 +923,17 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.80" +version = "0.2.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d58d1b70b004888f764dfbf6a26a3b0342a1632d33968e4a179d8011c760614" +checksum = "dd8f7255a17a627354f321ef0055d63b898c6fb27eff628af4d1b66b7331edf6" [[package]] name = "log" -version = "0.4.11" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fabed175da42fed1fa0746b0ea71f412aa9d35e76e95e59b192c64b9dc2bf8b" +checksum = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710" dependencies = [ - "cfg-if 0.1.10", + "cfg-if 1.0.0", ] [[package]] @@ -1035,30 +947,30 @@ dependencies = [ [[package]] name = "matches" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" +checksum = "a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f" [[package]] name = "memchr" -version = "2.4.0" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b16bd47d9e329435e309c58469fe0791c2d0d1ba96ec0954152a5ae2b04387dc" +checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a" [[package]] name = "memmap2" -version = "0.1.0" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b70ca2a6103ac8b665dc150b142ef0e4e89df640c9e6cf295d189c3caebe5a" +checksum = "723e3ebdcdc5c023db1df315364573789f8857c11b631a2fdfad7c00f5c046b4" dependencies = [ "libc", ] [[package]] name = "miniz_oxide" -version = "0.4.3" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f2d26ec3309788e423cfbf68ad1800f061638098d76a83681af979dc4eda19d" +checksum = "a92518e98c078586bc6c934028adcca4c92a53d6a958196de835170a01d84e4b" dependencies = [ "adler", "autocfg", @@ -1075,15 +987,38 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.5.2" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13bd41f508810a131401606d54ac32a467c97172d74ba7662562ebba5ad07fa0" +checksum = "692fcb63b64b1758029e0a96ee63e049ce8c5948587f2f7208df04625e5f6b56" [[package]] name = "os_str_bytes" -version = "2.4.0" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afb2e1c3ee07430c2cf76151675e583e0f19985fa6efae47d6848a3e2c824f85" +checksum = "6acbef58a60fe69ab50510a55bc8cdd4d6cf2283d27ad338f54cb52747a9cf2d" + +[[package]] +name = "ouroboros" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbeff60e3e37407a80ead3e9458145b456e978c4068cddbfea6afb48572962ca" +dependencies = [ + "ouroboros_macro", + "stable_deref_trait", +] + +[[package]] +name = "ouroboros_macro" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03f2cb802b5bdfdf52f1ffa0b54ce105e4d346e91990dd571f86c91321ad49e2" +dependencies = [ + "Inflector", + "proc-macro-error", + "proc-macro2", + "quote", + "syn", +] [[package]] name = "pango" @@ -1113,16 +1048,47 @@ dependencies = [ ] [[package]] -name = "pico-args" -version = "0.3.4" +name = "pangocairo" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28b9b4df73455c861d7cbf8be42f01d3b373ed7f02e378d55fa84eafc6f638b1" +checksum = "00f5ae67a05a5e023f09f64e9a71c845274d4b82dedee237b70425811885e883" +dependencies = [ + "bitflags", + "cairo-rs", + "cairo-sys-rs", + "glib", + "glib-sys", + "gobject-sys", + "libc", + "pango", + "pango-sys", + "pangocairo-sys", +] + +[[package]] +name = "pangocairo-sys" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94ccc97f698c2f0233b84e5ca676893a1e676785b60eec700b9c0e6dcd0feb98" +dependencies = [ + "cairo-sys-rs", + "glib-sys", + "libc", + "pango-sys", + "system-deps", +] + +[[package]] +name = "pico-args" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db8bcd96cb740d03149cbad5518db9fd87126a10ab519c011893b1754134c468" [[package]] name = "piet" -version = "0.3.1" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb9f6fc8efb51e16882094fbfcd4b931f59773be4176f2512c6248e081a1b41f" +checksum = "31bf73f4f995c6ae50f709ff3635e466d1e42d814a84099ea0f90da9dd0f0b69" dependencies = [ "kurbo", "unic-bidi", @@ -1130,26 +1096,30 @@ dependencies = [ [[package]] name = "piet-cairo" -version = "0.3.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91834682e7b19ae26cebc0f3ad83a36d4ae2e4f95b85f2c93a34873f38319d29" +checksum = "b14ba5c00133cd03bdde578a3fc47c73e3be17972ed5415979c53d9243742965" dependencies = [ "cairo-rs", + "glib", + "pango", + "pango-sys", + "pangocairo", "piet", "unicode-segmentation", - "xi-unicode 0.2.1", + "xi-unicode", ] [[package]] name = "piet-common" -version = "0.3.2" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77cbcec97e9c07c2a95bfa0d6c475fe2e22ae436e5209f9b7e03685c472c3976" +checksum = "a9bcfb0c224fde5812208021d890933f5865e22e4f7d705f02d85cf5142008fd" dependencies = [ "cairo-rs", "cairo-sys-rs", "cfg-if 1.0.0", - "core-graphics 0.22.2", + "core-graphics", "piet", "piet-cairo", "piet-coregraphics", @@ -1161,23 +1131,23 @@ dependencies = [ [[package]] name = "piet-coregraphics" -version = "0.3.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5af1ce12cf0a1dc7f894f6f90ba62467d685a39b7f1d235516c8688f98e92d18" +checksum = "c6b44202edec899277f68642ec385283cae20bb5f49b12d8b5aa0f77823cd5a6" dependencies = [ - "core-foundation 0.9.1", - "core-foundation-sys 0.8.2", - "core-graphics 0.22.2", - "core-text 19.2.0", + "core-foundation", + "core-foundation-sys", + "core-graphics", + "core-text", "foreign-types", "piet", ] [[package]] name = "piet-direct2d" -version = "0.3.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "019643fceb3667f79d1ed38101218cbabbfeb55c95f1a918b678e32042928418" +checksum = "21e69ce1fc6754dff7ab40a11253beb04d204435a6812e8119eab22645a1e26e" dependencies = [ "associative-cache", "dwrote", @@ -1189,23 +1159,23 @@ dependencies = [ [[package]] name = "piet-web" -version = "0.3.1" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "051dd0e8856c9837af0204f72b11636c8afba271a458eb877c887580208fa0ab" +checksum = "c7da97e80b02b6f9c8d8c611ff555df2c10d408767a15da292791a5bd4198f12" dependencies = [ "js-sys", "piet", "unicode-segmentation", "wasm-bindgen", "web-sys", - "xi-unicode 0.3.0", + "xi-unicode", ] [[package]] name = "pin-project-lite" -version = "0.2.4" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "439697af366c49a6d0a010c56a0d97685bc140ce0d377b13a2ea2aa42d64a827" +checksum = "8d31d11c69a6b52a174b42bdc0c30e5e11670f90788b2c471c31c1d17d449443" [[package]] name = "pin-utils" @@ -1215,9 +1185,9 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "pkg-config" -version = "0.3.19" +version = "0.3.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3831453b3449ceb48b6d9c7ad7c96d5ea673e9b470a1dc578c2ce6521230884c" +checksum = "7c9b1041b4387893b91ee6746cddfc28516aff326a3519fb2adf820932c5e6cb" [[package]] name = "proc-macro-crate" @@ -1260,24 +1230,24 @@ checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5" [[package]] name = "proc-macro-nested" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eba180dafb9038b050a4c280019bbedf9f2467b61e5d892dcad585bb57aadc5a" +checksum = "bc881b2c22681370c6a780e47af9840ef841837bc98118431d4e1868bd0c1086" [[package]] name = "proc-macro2" -version = "1.0.24" +version = "1.0.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e0704ee1a7e00d7bb417d0770ea303c1bccbabf0ef1667dae92b5967f5f8a71" +checksum = "b9f5105d4fdaab20335ca9565e106a5d9b82b6219b5ba735731124ac6711d23d" dependencies = [ "unicode-xid", ] [[package]] name = "quote" -version = "1.0.7" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa563d17ecb180e500da1cfd2b028310ac758de548efdd203e18f283af693f37" +checksum = "c3d0b9745dc2debf507c8422de05d7226cc1f0644216dfdfead988f9b1ab32a7" dependencies = [ "proc-macro2", ] @@ -1303,36 +1273,21 @@ version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "be9e29cb19c8fe84169fcb07f8f11e66bc9e6e0280efd4715c54818296f8a4a8" -[[package]] -name = "rental" -version = "0.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8545debe98b2b139fb04cad8618b530e9b07c152d99a5de83c860b877d67847f" -dependencies = [ - "rental-impl", - "stable_deref_trait", -] - -[[package]] -name = "rental-impl" -version = "0.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "475e68978dc5b743f2f40d8e0a8fdc83f1c5e78cbf4b8fa5e74e73beebc340de" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "roxmltree" -version = "0.13.1" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbf7d7b1ea646d380d0e8153158063a6da7efe30ddbf3184042848e3f8a6f671" +checksum = "921904a62e410e37e215c40381b7117f830d9d89ba60ab5236170541dd25646b" dependencies = [ "xmlparser", ] +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + [[package]] name = "rustc_version" version = "0.2.3" @@ -1351,7 +1306,7 @@ dependencies = [ "bitflags", "bytemuck", "smallvec", - "ttf-parser", + "ttf-parser 0.9.0", "unicode-bidi-mirroring", "unicode-ccc", "unicode-general-category", @@ -1387,9 +1342,9 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "serde" -version = "1.0.117" +version = "1.0.130" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b88fa983de7720629c9387e9f517353ed404164b1e482c970a90c1a4aaf7dc1a" +checksum = "f12d06de37cf59146fbdecab66aa99f9fe4f78722e3607577a5375d66bd0c913" dependencies = [ "serde_derive", ] @@ -1405,9 +1360,9 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.117" +version = "1.0.130" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbd1ae72adb44aab48f325a02444a5fc079349a8d804c1fc922aed3f7454c74e" +checksum = "d7bc1a1ab1961464eae040d96713baa5a724a8152c1222492465b54322ec508b" dependencies = [ "proc-macro2", "quote", @@ -1416,9 +1371,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.59" +version = "1.0.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcac07dbffa1c65e7f816ab9eba78eb142c6d44410f4eeba1e26e4f5dfa56b95" +checksum = "0f690853975602e1bfe1ccbf50504d67174e3bcf340f23b5ea9992e0587a52d8" dependencies = [ "itoa", "ryu", @@ -1432,21 +1387,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2579985fda508104f7587689507983eadd6a6e84dd35d6d115361f530916fa0d" [[package]] -name = "simple_logger" -version = "1.11.0" +name = "sharded-slab" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd57f17c093ead1d4a1499dc9acaafdd71240908d64775465543b8d9a9f1d198" +checksum = "740223c51853f3145fe7c90360d2d4232f2b62e3449489c207eccde818979982" dependencies = [ - "atty", - "log", - "winapi", + "lazy_static", ] [[package]] name = "simplecss" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "596554e63596d556a0dbd681416342ca61c75f1a45203201e7e77d3fa2fa9014" +checksum = "a11be7c62927d9427e9f40f3444d5499d868648e2edbc4e2116de69e7ec0e89d" dependencies = [ "log", ] @@ -1459,9 +1412,9 @@ checksum = "0b8de496cf83d4ed58b6be86c3a275b8602f6ffe98d3024a869e124147a9a3ac" [[package]] name = "sized-chunks" -version = "0.6.2" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ec31ceca5644fa6d444cc77548b88b67f46db6f7c71683b0f9336e671830d2f" +checksum = "16d69225bde7a69b235da73377861095455d298f2b970996eec25ddbb42b3d1e" dependencies = [ "bitmaps", "typenum", @@ -1469,15 +1422,15 @@ dependencies = [ [[package]] name = "slab" -version = "0.4.2" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" +checksum = "c307a32c1c5c437f38c7fd45d753050587732ba8628319fbdf12a7e289ccc590" [[package]] name = "smallvec" -version = "1.5.0" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7acad6f34eb9e8a259d3283d1e8c1d34d7415943d4895f65cc73813c7396fc85" +checksum = "1ecab6c735a6bb4139c0caafd0cc3635748bbb3acf4550e8138122099251f309" [[package]] name = "stable_deref_trait" @@ -1487,9 +1440,9 @@ checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" [[package]] name = "standback" -version = "0.2.13" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf906c8b8fc3f6ecd1046e01da1d8ddec83e48c8b08b84dcc02b585a6bedf5a8" +checksum = "e113fb6f3de07a243d434a56ec6f186dfd51cb08448239fe7bcae73f87ff28ff" dependencies = [ "version_check", ] @@ -1595,9 +1548,9 @@ dependencies = [ [[package]] name = "syn" -version = "1.0.50" +version = "1.0.78" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "443b4178719c5a851e1bde36ce12da21d74a0e60b4d982ec3385a933c812f0f6" +checksum = "a4eac2e6c19f5c3abc0c229bea31ff0b9b091c7b14990e8924b92902a303a0c0" dependencies = [ "proc-macro2", "quote", @@ -1630,27 +1583,27 @@ dependencies = [ [[package]] name = "textwrap" -version = "0.12.1" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "203008d98caf094106cfaba70acfed15e18ed3ddb7d94e49baec153a2b462789" +checksum = "0066c8d12af8b5acd21e00547c3797fde4e8677254a7ee429176ccebbe93dd80" dependencies = [ "unicode-width", ] [[package]] name = "thiserror" -version = "1.0.24" +version = "1.0.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0f4a65597094d4483ddaed134f409b2cb7c1beccf25201a9f73c719254fa98e" +checksum = "602eca064b2d83369e2b2f34b09c70b605402801927c65c11071ac911d299b88" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.24" +version = "1.0.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7765189610d8241a44529806d6fd1f2e0a08734313a35d5b3a556f92b381f3c0" +checksum = "bad553cc2c78e8de258400763a647e80e6d1b31ee237275d756f6836d204494c" dependencies = [ "proc-macro2", "quote", @@ -1658,10 +1611,19 @@ dependencies = [ ] [[package]] -name = "time" -version = "0.2.23" +name = "thread_local" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcdaeea317915d59b2b4cd3b5efcd156c309108664277793f5351700c02ce98b" +checksum = "8018d24e04c95ac8790716a5987d0fec4f8b27249ffa0f7d33f1369bdfb88cbd" +dependencies = [ + "once_cell", +] + +[[package]] +name = "time" +version = "0.2.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4752a97f8eebd6854ff91f1c1824cd6160626ac4bd44287f7f4ea2035a02a242" dependencies = [ "const_fn", "libc", @@ -1684,9 +1646,9 @@ dependencies = [ [[package]] name = "time-macros-impl" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5c3be1edfad6027c69f5491cf4cb310d1a71ecd6af742788c6ff8bced86b8fa" +checksum = "fd3c141a1b43194f3f56a1411225df8646c55781d5f26db825b3d98507eb482f" dependencies = [ "proc-macro-hack", "proc-macro2", @@ -1710,6 +1672,61 @@ dependencies = [ "serde", ] +[[package]] +name = "tracing" +version = "0.1.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84f96e095c0c82419687c20ddf5cb3eadb61f4e1405923c9dc8e53a1adacbda8" +dependencies = [ + "cfg-if 1.0.0", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4f915eb6abf914599c200260efced9203504c4c37380af10cdf3b7d36970650" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tracing-core" +version = "0.1.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f4ed65637b8390770814083d20756f87bfa2c21bf2f110babdc5438351746e4" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "tracing-subscriber" +version = "0.2.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdd0568dbfe3baf7048b7908d2b32bca0d81cd56bec6d2a8f894b01d74f86be3" +dependencies = [ + "ansi_term", + "sharded-slab", + "thread_local", + "tracing-core", +] + +[[package]] +name = "tracing-wasm" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ae741706df70547fca8715f74a8569677666e7be3454313af70f6e158034485" +dependencies = [ + "tracing", + "tracing-subscriber", + "wasm-bindgen", +] + [[package]] name = "ttf-parser" version = "0.9.0" @@ -1717,19 +1734,25 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "62ddb402ac6c2af6f7a2844243887631c4e94b51585b229fcfddb43958cd55ca" [[package]] -name = "type-map" -version = "0.3.0" +name = "ttf-parser" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d2741b1474c327d95c1f1e3b0a2c3977c8e128409c572a33af2914e7d636717" +checksum = "7ae2f58a822f08abdaf668897e96a5656fe72f5a9ce66422423e8849384872e6" + +[[package]] +name = "type-map" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6d3364c5e96cb2ad1603037ab253ddd34d7fb72a58bdddf4b7350760fc69a46" dependencies = [ - "fxhash", + "rustc-hash", ] [[package]] name = "typenum" -version = "1.12.0" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "373c8a200f9e67a0c95e62a4f52fbf80c23b4381c05a17845531982fa99e6b33" +checksum = "b63708a265f51345575b27fe43f9500ad611579e764c79edbc2037b1121959ec" [[package]] name = "unic-bidi" @@ -1802,12 +1825,9 @@ dependencies = [ [[package]] name = "unicode-bidi" -version = "0.3.4" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5" -dependencies = [ - "matches", -] +checksum = "246f4c42e67e7a4e3c6106ff716a5d067d4132a642840b242e357e468a2a0085" [[package]] name = "unicode-bidi-mirroring" @@ -1817,9 +1837,9 @@ checksum = "56d12260fb92d52f9008be7e4bca09f584780eb2266dc8fecc6a192bec561694" [[package]] name = "unicode-ccc" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28ae07c514c335bbd0251147bb1de333e28ebc8f57d792014f919ed212d119f6" +checksum = "cc2520efa644f8268dce4dcd3050eaa7fc044fca03961e9998ac7e2e92b77cf1" [[package]] name = "unicode-general-category" @@ -1829,15 +1849,15 @@ checksum = "7f9af028e052a610d99e066b33304625dea9613170a2563314490a4e6ec5cf7f" [[package]] name = "unicode-script" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79bf4d5fc96546fdb73f9827097810bbda93b11a6770ff3a54e1f445d4135787" +checksum = "098ec66172ce21cd55f8bcc786ee209dd20e04eff70acfca30cb79924d173ae9" [[package]] name = "unicode-segmentation" -version = "1.7.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db8716a166f290ff49dabc18b44aa407cb7c6dbe1aa0971b44b8a24b0ca35aae" +checksum = "8895849a949e7845e06bd6dc1aa51731a103c42707010a5b591c0038fb73385b" [[package]] name = "unicode-vo" @@ -1847,21 +1867,21 @@ checksum = "b1d386ff53b415b7fe27b50bb44679e2cc4660272694b7b6f3326d8480823a94" [[package]] name = "unicode-width" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9337591893a19b88d8d87f2cec1e73fad5cdfd10e5a6f349f498ad6ea2ffb1e3" +checksum = "3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973" [[package]] name = "unicode-xid" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564" +checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" [[package]] name = "usvg" -version = "0.12.0" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05a7ff57fca79848360bd2c00072a8029543cf554fe49c4d0af247271434702e" +checksum = "ef8352f317d8f9a918ba5154797fb2a93e2730244041cf7d5be35148266adfa5" dependencies = [ "base64", "data-url", @@ -1877,7 +1897,7 @@ dependencies = [ "simplecss", "siphasher", "svgtypes", - "ttf-parser", + "ttf-parser 0.12.3", "unicode-bidi", "unicode-script", "unicode-vo", @@ -1886,18 +1906,9 @@ dependencies = [ [[package]] name = "utf16_lit" -version = "1.0.1" +version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "403231d2fb8f0f55daf24cd03571f4fc1bb856e0fa98c1832bbae3f6ff7e7a07" - -[[package]] -name = "uuid" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" -dependencies = [ - "getrandom", -] +checksum = "14706d2a800ee8ff38c1d3edb873cd616971ea59eb7c0d046bb44ef59b06a1ae" [[package]] name = "vec_map" @@ -1913,31 +1924,25 @@ checksum = "d63556a25bae6ea31b52e640d7c41d1ab27faba4ccb600013837a3d0b3994ca1" [[package]] name = "version_check" -version = "0.9.2" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5a972e5669d67ba988ce3dc826706fb0a8b01471c088cb0b6110b805cc36aed" - -[[package]] -name = "wasi" -version = "0.10.2+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6" +checksum = "5fecdca9a5291cc2b8dcf7dc02453fee791a280f3743cb0905f8822ae463b3fe" [[package]] name = "wasm-bindgen" -version = "0.2.68" +version = "0.2.78" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ac64ead5ea5f05873d7c12b545865ca2b8d28adfc50a49b84770a3a97265d42" +checksum = "632f73e236b219150ea279196e54e610f5dbafa5d61786303d4da54f84e47fce" dependencies = [ - "cfg-if 0.1.10", + "cfg-if 1.0.0", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.68" +version = "0.2.78" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f22b422e2a757c35a73774860af8e112bff612ce6cb604224e8e47641a9e4f68" +checksum = "a317bf8f9fba2476b4b2c85ef4c4af8ff39c3c7f0cdfeed4f82c34a880aa837b" dependencies = [ "bumpalo", "lazy_static", @@ -1950,9 +1955,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.68" +version = "0.2.78" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b13312a745c08c469f0b292dd2fcd6411dba5f7160f593da6ef69b64e407038" +checksum = "d56146e7c495528bf6587663bea13a8eb588d39b36b679d83972e1a2dbbdacf9" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -1960,9 +1965,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.68" +version = "0.2.78" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f249f06ef7ee334cc3b8ff031bfc11ec99d00f34d86da7498396dc1e3b1498fe" +checksum = "7803e0eea25835f8abdc585cd3021b3deb11543c6fe226dcd30b228857c5c5ab" dependencies = [ "proc-macro2", "quote", @@ -1973,15 +1978,15 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.68" +version = "0.2.78" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d649a3145108d7d3fbcde896a468d1bd636791823c9921135218ad89be08307" +checksum = "0237232789cf037d5480773fe568aac745bfe2afbc11a863e97901780a6b47cc" [[package]] name = "web-sys" -version = "0.3.45" +version = "0.3.55" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bf6ef87ad7ae8008e15a355ce696bed26012b7caa21605188cfd8214ab51e2d" +checksum = "38eb105f1c59d9eaa6b5cdc92b859d85b926e82cb2e0945cd0c9259faa6fe9fb" dependencies = [ "js-sys", "wasm-bindgen", @@ -2027,12 +2032,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "xi-unicode" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e71b85d8b1b8bfaf4b5c834187554d201a8cd621c2bbfa33efd41a3ecabd48b2" - [[package]] name = "xi-unicode" version = "0.3.0" diff --git a/Cargo.toml b/Cargo.toml index 5496228..afe4d14 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -27,6 +27,5 @@ version = "0.13.2" features = ["v3_22"] [patch.crates-io] -#druid = { git = "https://github.com/doppioandante/druid", branch = "v0.7.0_stiletto", features = ["im", "svg"] } -druid = { path = "../druid/druid/", features = ["im", "svg"] } +druid = { git = "https://github.com/jneem/druid", branch = "pointer", features = ["im", "svg"] } -- 2.39.5 From bcfc5a55ad7376f975e00b6d27063789ad37d04f Mon Sep 17 00:00:00 2001 From: Enrico Lumetti Date: Mon, 4 Oct 2021 15:56:51 +0200 Subject: [PATCH 06/11] Fix Mouse->Pointer --- src/widget/canvas.rs | 35 +++++++++-------------------------- src/widget/tool_ctx.rs | 28 ++++++++++++++-------------- 2 files changed, 23 insertions(+), 40 deletions(-) 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 { -- 2.39.5 From f79b0d21e7e86edb226a949f9c4daec93850b5f4 Mon Sep 17 00:00:00 2001 From: Enrico Lumetti Date: Mon, 4 Oct 2021 16:16:19 +0200 Subject: [PATCH 07/11] Fix viewport.rect to view_size + view_origin --- src/widget/canvas.rs | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/src/widget/canvas.rs b/src/widget/canvas.rs index f60c6bf..40f2b35 100644 --- a/src/widget/canvas.rs +++ b/src/widget/canvas.rs @@ -104,7 +104,8 @@ impl CanvasWidget { CanvasWidget { viewport: Viewport { content_size: Size::new(0.0, 0.0), - rect: druid::Rect::new(0.0, 0.0, 0.0, 0.0), + view_origin: Point::new(0.0, 0.0), + view_size: Size::new(0.0, 0.0), }, widget_size: Size::new(0.0, 0.0), scroll_component: ScrollComponent::new(), @@ -112,11 +113,10 @@ impl CanvasWidget { } fn widget_to_viewport(&self) -> Affine { - let viewport_rect_size = self.viewport.rect.size(); - if !viewport_rect_size.is_empty() && !self.widget_size.is_empty() { - let scale_x = viewport_rect_size.width / self.widget_size.width; - let scale_y = viewport_rect_size.height / self.widget_size.height; - Affine::translate(self.viewport.rect.origin().to_vec2()) + if !self.viewport.view_size.is_empty() && !self.widget_size.is_empty() { + let scale_x = self.viewport.view_size.width / self.widget_size.width; + let scale_y = self.viewport.view_size.height / self.widget_size.height; + Affine::translate(self.viewport.view_origin.to_vec2()) * Affine::scale_non_uniform(scale_x, scale_y) } else { Affine::scale(1.0) // identity @@ -189,7 +189,7 @@ impl Widget for CanvasWidget { data.handle_event(ctx, event, self.widget_to_viewport(), env); } if let Some(transform) = viewport_transform { - let mut new_rect = transform.transform_rect_bbox(self.viewport.rect); + let mut new_rect = transform.transform_rect_bbox(self.viewport.view_rect()); if new_rect.x0 <= 0f64 { new_rect.x1 -= new_rect.x0; new_rect.x0 = 0f64; @@ -198,7 +198,7 @@ impl Widget for CanvasWidget { new_rect.y1 -= new_rect.y0; new_rect.y0 = 0f64; } - self.viewport.rect = new_rect; + self.viewport.view_origin = new_rect.origin(); self.scroll_component .reset_scrollbar_fade(|d| ctx.request_timer(d), env); ctx.request_paint(); @@ -267,13 +267,14 @@ impl Widget for CanvasWidget { let page_content_size = data.versioned_canvas.get().content_size(); let transform = self.widget_to_viewport(); - self.viewport.rect = - transform.transform_rect_bbox(rect) - .with_origin(self.viewport.rect.origin()); + //self.viewport.rect = + // transform.transform_rect_bbox(rect) + // .with_origin(self.viewport.rect.origin()); + self.viewport.view_size = transform.transform_rect_bbox(rect).size(); self.viewport.content_size = druid::Size::new( - self.viewport.rect.x1.max(page_content_size.width), - self.viewport.rect.y1.max(page_content_size.height), + self.viewport.view_rect().x1.max(page_content_size.width), + self.viewport.view_rect().y1.max(page_content_size.height), ); //log::debug!("{:#?}", &self.viewport); -- 2.39.5 From fd9a8a3685235b045614689f2e24a58a682f6414 Mon Sep 17 00:00:00 2001 From: Enrico Lumetti Date: Mon, 4 Oct 2021 18:45:47 +0200 Subject: [PATCH 08/11] Fix serde --- src/canvas.rs | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/src/canvas.rs b/src/canvas.rs index b33abe3..8e7fdbb 100644 --- a/src/canvas.rs +++ b/src/canvas.rs @@ -16,6 +16,7 @@ use std::vec::Vec; +use druid::Color; use im::{vector, Vector}; use serde::de::{Deserializer, SeqAccess, Visitor}; @@ -27,12 +28,6 @@ pub struct Path { pub kurbo_path: druid::kurbo::BezPath, } -#[derive(Serialize, Deserialize)] -#[serde(remote = "druid::Color")] -enum ColorDef { - Rgba32(u32), -} - struct Interval { start_pos: f64, end_pos: f64, @@ -86,11 +81,24 @@ pub enum CanvasElement { Freehand { path: Path, thickness: f64, - #[serde(with = "ColorDef")] + #[serde(serialize_with = "serialize_color", deserialize_with = "deserialize_color")] stroke_color: druid::Color, }, } +fn serialize_color(c: &druid::Color, ser: S) -> Result + where S: Serializer +{ + ser.serialize_u32(c.as_rgba_u32()) +} + +fn deserialize_color<'de, D>(de: D) -> Result + where D: Deserializer<'de> +{ + let c = u32::deserialize(de)?; + Ok(druid::Color::from_rgba32_u32(c)) +} + impl CanvasElement { pub fn bounding_box(&self) -> druid::Rect { match self { -- 2.39.5 From c46a2bd66a68e72f39fcb725e39c6fd2a75e91db Mon Sep 17 00:00:00 2001 From: Enrico Lumetti Date: Mon, 4 Oct 2021 18:48:34 +0200 Subject: [PATCH 09/11] Fix build --- src/main.rs | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/main.rs b/src/main.rs index 9fadd1f..5501ba2 100644 --- a/src/main.rs +++ b/src/main.rs @@ -24,10 +24,9 @@ use druid::widget::prelude::*; use druid::widget::{ Align, Button, Controller, CrossAxisAlignment, Flex, List, SizedBox, WidgetExt, }; -use druid::gesture::DruidGestureRecognizer; use druid::{ AppDelegate, AppLauncher, Color, Command, Data, DelegateCtx, Env, FileDialogOptions, FileSpec, - Handled, Lens, PointerEventPolicy, Target, WidgetId, WindowDesc, + Handled, Lens, Target, WidgetId, WindowDesc, }; use im::Vector; @@ -38,9 +37,7 @@ use stiletto::widget::{build_simple_tool_widget, CanvasState, CanvasToolIconStat use stiletto::DocumentSnapshot; pub fn main() { - let window = WindowDesc::new(build_ui) - .set_pointer_event_policy(PointerEventPolicy::UseMixedApi) - .set_gesture_recognizer(Box::new(DruidGestureRecognizer::new())) + let window = WindowDesc::new(build_ui()) .window_size((1024.0, 1400.0)) .title(|data: &StilettoState, _env: &Env| { let doc_name = if let Some(path) = &data.current_file_path { -- 2.39.5 From cb8bc30a150cc798db2d28f4d9b65924fdc6641f Mon Sep 17 00:00:00 2001 From: Enrico Lumetti Date: Thu, 31 Mar 2022 12:09:17 +0200 Subject: [PATCH 10/11] Update to latest pointer event branch --- Cargo.lock | 775 +++++++++++++++------------------------- Cargo.toml | 13 +- src/bin/stlt_migrate.rs | 40 ++- src/canvas.rs | 27 +- src/lib.rs | 2 +- src/main.rs | 31 +- src/migration.rs | 19 +- src/tool.rs | 2 +- src/widget/canvas.rs | 38 +- src/widget/mod.rs | 2 +- src/widget/tool_ctx.rs | 55 +-- 11 files changed, 422 insertions(+), 582 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 41acd97..5378339 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,10 +1,6 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -[[package]] -name = "Inflector" -version = "0.11.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" +version = 3 [[package]] name = "adler" @@ -23,15 +19,15 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.44" +version = "1.0.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61604a8f862e1d5c3229fdd78f8b02c68dcf73a4c4b05fd636d12240aaa242c1" +checksum = "4361135be9122e0870de935d7c439aef945b9f9ddd4199a553b5270b49c82a27" [[package]] name = "arrayvec" -version = "0.5.2" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" +checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6" [[package]] name = "associative-cache" @@ -41,23 +37,21 @@ checksum = "46016233fc1bb55c23b856fe556b7db6ccd05119a0a392e04f0b3b7c79058f16" [[package]] name = "atk" -version = "0.9.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "812b4911e210bd51b24596244523c856ca749e6223c50a7fbbba3f89ee37c426" +checksum = "a83b21d2aa75e464db56225e1bda2dd5993311ba1095acaa8fa03d1ae67026ba" dependencies = [ "atk-sys", "bitflags", "glib", - "glib-sys", - "gobject-sys", "libc", ] [[package]] name = "atk-sys" -version = "0.10.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f530e4af131d94cc4fa15c5c9d0348f0ef28bac64ba660b6b2a1cf2605dedfce" +checksum = "badcf670157c84bb8b1cf6b5f70b650fed78da2033c9eed84c4e49b11cbe83ea" dependencies = [ "glib-sys", "gobject-sys", @@ -78,15 +72,9 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.0.1" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" - -[[package]] -name = "base-x" -version = "0.2.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4521f3e3d031370679b3b140beb36dfe4801b09ac77e30c61941f97df3ef28b" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "base64" @@ -117,36 +105,34 @@ checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" [[package]] name = "bumpalo" -version = "3.7.1" +version = "3.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9df67f7bf9ef8498769f994239c45613ef0c5899415fb58e9add412d2c1a538" +checksum = "a4a45a46ab1f2412e53d3a0ade76ffad2025804294569aae387231a0cd6e0899" [[package]] name = "bytemuck" -version = "1.7.2" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72957246c41db82b8ef88a5486143830adeb8227ef9837740bdec67724cf2c5b" +checksum = "ee1e0e2125faccb856bf10b0a9dfa89c4c718d05ef85580dfefbdf1c422ef801" [[package]] name = "cairo-rs" -version = "0.9.1" +version = "0.14.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5c0f2e047e8ca53d0ff249c54ae047931d7a6ebe05d00af73e0ffeb6e34bdb8" +checksum = "33b5725979db0c586d98abad2193cdb612dd40ef95cd26bd99851bf93b3cb482" dependencies = [ "bitflags", "cairo-sys-rs", "glib", - "glib-sys", - "gobject-sys", "libc", "thiserror", ] [[package]] name = "cairo-sys-rs" -version = "0.10.0" +version = "0.14.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ed2639b9ad5f1d6efa76de95558e11339e7318426d84ac4890b86c03e828ca7" +checksum = "b448b876970834fda82ba3aeaccadbd760206b75388fc5c1b02f1e343b697570" dependencies = [ "glib-sys", "libc", @@ -154,16 +140,13 @@ dependencies = [ ] [[package]] -name = "cc" -version = "1.0.70" +name = "cfg-expr" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d26a6ce4b6a484fa3edb70f7efa6fc430fd2b87285fe8b84304fd0936faa0dc0" - -[[package]] -name = "cfg-if" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" +checksum = "b412e83326147c2bb881f8b40edfbf9905b9b8abaebd0e47ca190ba62fda8f0e" +dependencies = [ + "smallvec", +] [[package]] name = "cfg-if" @@ -173,33 +156,17 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "clap" -version = "3.0.0-beta.4" +version = "3.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcd70aa5597dbc42f7217a543f9ef2768b2ef823ba29036072d30e1d88e98406" +checksum = "d8c93436c21e4698bacadf42917db28b23017027a4deccb35dbe47a7e7840123" dependencies = [ "atty", "bitflags", - "clap_derive", "indexmap", - "lazy_static", "os_str_bytes", "strsim", "termcolor", "textwrap", - "vec_map", -] - -[[package]] -name = "clap_derive" -version = "3.0.0-beta.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b5bb0d655624a0b8770d1c178fb8ffcb1f91cc722cb08f451e3dc72465421ac" -dependencies = [ - "heck", - "proc-macro-error", - "proc-macro2", - "quote", - "syn", ] [[package]] @@ -235,25 +202,19 @@ dependencies = [ [[package]] name = "console_error_panic_hook" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8d976903543e0c48546a91908f21588a680a8c8f984df9a5d69feccb2b2a211" +checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc" dependencies = [ - "cfg-if 0.1.10", + "cfg-if", "wasm-bindgen", ] -[[package]] -name = "const_fn" -version = "0.4.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f92cfa0fd5690b3cf8c1ef2cabbd9b7ef22fa53cf5e1f92b05103f6d5d1cf6e7" - [[package]] name = "core-foundation" -version = "0.9.1" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a89e2ae426ea83155dccf10c0fa6b1463ef6d5fcb44cee0b224a408fa640a62" +checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" dependencies = [ "core-foundation-sys", "libc", @@ -261,15 +222,15 @@ dependencies = [ [[package]] name = "core-foundation-sys" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea221b5284a47e40033bf9b66f35f984ec0ea2931eb03505246cd27a963f981b" +checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" [[package]] name = "core-graphics" -version = "0.22.2" +version = "0.22.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "269f35f69b542b80e736a20a89a05215c0ce80c2c03c514abb2e318b78379d86" +checksum = "2581bbab3b8ffc6fcbd550bf46c355135d16e9ff2a6ea032ad6b9bf1d7efe4fb" dependencies = [ "bitflags", "core-foundation", @@ -304,32 +265,25 @@ dependencies = [ [[package]] name = "crc32fast" -version = "1.2.1" +version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81156fece84ab6a9f2afdb109ce3ae577e42b1228441eded99bd77f627953b1a" +checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", ] [[package]] name = "data-url" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d33fe99ccedd6e84bc035f1931bb2e6be79739d6242bd895e7311c886c50dc9c" +checksum = "3a30bfce702bcfa94e906ef82421f2c0e61c076ad76030c16ee5d2e9a32fe193" dependencies = [ "matches", ] -[[package]] -name = "discard" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "212d0f5754cb6769937f4501cc0e67f4f4483c8d2c3e1e922ee9edbe4ab4c7c0" - [[package]] name = "druid" version = "0.7.0" -source = "git+https://github.com/jneem/druid?branch=pointer#01e245dc7b30111892cc7db56ac85207ae114009" dependencies = [ "console_error_panic_hook", "druid-derive", @@ -352,7 +306,6 @@ dependencies = [ [[package]] name = "druid-derive" version = "0.4.0" -source = "git+https://github.com/jneem/druid?branch=pointer#01e245dc7b30111892cc7db56ac85207ae114009" dependencies = [ "proc-macro2", "quote", @@ -362,21 +315,16 @@ dependencies = [ [[package]] name = "druid-shell" version = "0.7.0" -source = "git+https://github.com/jneem/druid?branch=pointer#01e245dc7b30111892cc7db56ac85207ae114009" dependencies = [ "anyhow", "bitflags", "block", "cairo-rs", - "cfg-if 1.0.0", + "cfg-if", "cocoa", "core-graphics", "foreign-types", - "gdk", - "gdk-pixbuf", "gdk-sys", - "gio", - "glib", "glib-sys", "gtk", "gtk-sys", @@ -414,13 +362,23 @@ version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" +[[package]] +name = "field-offset" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e1c54951450cbd39f3dbcf1005ac413b49487dabf18a720ad2383eccfeffb92" +dependencies = [ + "memoffset", + "rustc_version", +] + [[package]] name = "flate2" version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e6988e897c1c9c485f43b47a529cef42fde0547f9d8d41a7062518f1d8fc53f" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "crc32fast", "libc", "miniz_oxide", @@ -434,16 +392,16 @@ checksum = "75224bec9bfe1a65e2d34132933f2de7fe79900c96a0174307554244ece8150e" [[package]] name = "fluent-bundle" -version = "0.15.1" +version = "0.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8acf044eeb4872d9dbf2667541fbf461f5965c57e343878ad0fb24b5793fa007" +checksum = "e242c601dec9711505f6d5bbff5bedd4b61b2469f2e8bb8e57ee7c9747a87ffd" dependencies = [ "fluent-langneg", "fluent-syntax", "intl-memoizer", "intl_pluralrules", - "ouroboros", "rustc-hash", + "self_cell", "smallvec", "unic-langid", ] @@ -498,42 +456,26 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" -[[package]] -name = "futures" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a12aa0eb539080d55c3f2d45a67c3b58b6b0773c1a3ca2dfec66d58c97fd66ca" -dependencies = [ - "futures-channel", - "futures-core", - "futures-executor", - "futures-io", - "futures-sink", - "futures-task", - "futures-util", -] - [[package]] name = "futures-channel" -version = "0.3.17" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5da6ba8c3bb3c165d3c7319fc1cc8304facf1fb8db99c5de877183c08a273888" +checksum = "c3083ce4b914124575708913bca19bfe887522d6e2e6d0952943f5eac4a74010" dependencies = [ "futures-core", - "futures-sink", ] [[package]] name = "futures-core" -version = "0.3.17" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88d1c26957f23603395cd326b0ffe64124b818f4449552f960d815cfba83a53d" +checksum = "0c09fd04b7e4073ac7156a9539b57a484a8ea920f79c7c675d05d289ab6110d3" [[package]] name = "futures-executor" -version = "0.3.17" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45025be030969d763025784f7f355043dc6bc74093e4ecc5000ca4dc50d8745c" +checksum = "9420b90cfa29e327d0429f19be13e7ddb68fa1cccb09d65e5706b8c7a749b8a6" dependencies = [ "futures-core", "futures-task", @@ -542,96 +484,62 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.17" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "522de2a0fe3e380f1bc577ba0474108faf3f6b18321dbf60b3b9c39a75073377" - -[[package]] -name = "futures-macro" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18e4a4b95cea4b4ccbcf1c5675ca7c4ee4e9e75eb79944d07defde18068f79bb" -dependencies = [ - "autocfg", - "proc-macro-hack", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "futures-sink" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36ea153c13024fe480590b3e3d4cad89a0cfacecc24577b68f86c6ced9c2bc11" +checksum = "fc4045962a5a5e935ee2fdedaa4e08284547402885ab326734432bed5d12966b" [[package]] name = "futures-task" -version = "0.3.17" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d3d00f4eddb73e498a54394f228cd55853bdf059259e8e7bc6e69d408892e99" +checksum = "57c66a976bf5909d801bbef33416c41372779507e7a6b3a5e25e4749c58f776a" [[package]] name = "futures-util" -version = "0.3.17" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36568465210a3a6ee45e1f165136d68671471a501e632e9a98d96872222b5481" +checksum = "d8b7abd5d659d9b90c8cba917f6ec750a74e2dc23902ef9cd4cc8c8b22e6036a" dependencies = [ - "autocfg", - "futures-channel", "futures-core", - "futures-io", - "futures-macro", - "futures-sink", "futures-task", - "memchr", "pin-project-lite", "pin-utils", - "proc-macro-hack", - "proc-macro-nested", "slab", ] [[package]] name = "gdk" -version = "0.13.2" +version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db00839b2a68a7a10af3fa28dfb3febaba3a20c3a9ac2425a33b7df1f84a6b7d" +checksum = "b9d749dcfc00d8de0d7c3a289e04a04293eb5ba3d8a4e64d64911d481fa9933b" dependencies = [ "bitflags", "cairo-rs", - "cairo-sys-rs", "gdk-pixbuf", "gdk-sys", "gio", - "gio-sys", "glib", - "glib-sys", - "gobject-sys", "libc", "pango", ] [[package]] name = "gdk-pixbuf" -version = "0.9.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f6dae3cb99dd49b758b88f0132f8d401108e63ae8edd45f432d42cdff99998a" +checksum = "534192cb8f01daeb8fab2c8d4baa8f9aae5b7a39130525779f5c2608e235b10f" dependencies = [ "gdk-pixbuf-sys", "gio", - "gio-sys", "glib", - "glib-sys", - "gobject-sys", "libc", ] [[package]] name = "gdk-pixbuf-sys" -version = "0.10.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3bfe468a7f43e97b8d193a762b6c5cf67a7d36cacbc0b9291dbcae24bfea1e8f" +checksum = "f097c0704201fbc8f69c1762dc58c6947c8bb188b8ed0bc7e65259f1894fe590" dependencies = [ "gio-sys", "glib-sys", @@ -642,9 +550,9 @@ dependencies = [ [[package]] name = "gdk-sys" -version = "0.10.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a9653cfc500fd268015b1ac055ddbc3df7a5c9ea3f4ccef147b3957bd140d69" +checksum = "0e091b3d3d6696949ac3b3fb3c62090e5bfd7bd6850bef5c3c5ea701de1b1f1e" dependencies = [ "cairo-sys-rs", "gdk-pixbuf-sys", @@ -659,20 +567,16 @@ dependencies = [ [[package]] name = "gio" -version = "0.9.1" +version = "0.14.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fb60242bfff700772dae5d9e3a1f7aa2e4ebccf18b89662a16acb2822568561" +checksum = "711c3632b3ebd095578a9c091418d10fed492da9443f58ebc8f45efbeb215cb0" dependencies = [ "bitflags", - "futures", "futures-channel", "futures-core", "futures-io", - "futures-util", "gio-sys", "glib", - "glib-sys", - "gobject-sys", "libc", "once_cell", "thiserror", @@ -680,9 +584,9 @@ dependencies = [ [[package]] name = "gio-sys" -version = "0.10.1" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e24fb752f8f5d2cf6bbc2c606fd2bc989c81c5e2fe321ab974d54f8b6344eac" +checksum = "c0a41df66e57fcc287c4bcf74fc26b884f31901ea9792ec75607289b456f48fa" dependencies = [ "glib-sys", "gobject-sys", @@ -693,32 +597,31 @@ dependencies = [ [[package]] name = "glib" -version = "0.10.3" +version = "0.14.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c685013b7515e668f1b57a165b009d4d28cb139a8a989bbd699c10dad29d0c5" +checksum = "7c515f1e62bf151ef6635f528d05b02c11506de986e43b34a5c920ef0b3796a4" dependencies = [ "bitflags", "futures-channel", "futures-core", "futures-executor", "futures-task", - "futures-util", "glib-macros", "glib-sys", "gobject-sys", "libc", "once_cell", + "smallvec", ] [[package]] name = "glib-macros" -version = "0.10.1" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41486a26d1366a8032b160b59065a59fb528530a46a49f627e7048fb8c064039" +checksum = "2aad66361f66796bfc73f530c51ef123970eb895ffba991a234fcf7bea89e518" dependencies = [ "anyhow", "heck", - "itertools", "proc-macro-crate", "proc-macro-error", "proc-macro2", @@ -728,9 +631,9 @@ dependencies = [ [[package]] name = "glib-sys" -version = "0.10.1" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7e9b997a66e9a23d073f2b1abb4dbfc3925e0b8952f67efd8d9b6e168e4cdc1" +checksum = "1c1d60554a212445e2a858e42a0e48cece1bd57b311a19a9468f70376cf554ae" dependencies = [ "libc", "system-deps", @@ -738,9 +641,9 @@ dependencies = [ [[package]] name = "gobject-sys" -version = "0.10.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "952133b60c318a62bf82ee75b93acc7e84028a093e06b9e27981c2b6fe68218c" +checksum = "aa92cae29759dae34ab5921d73fff5ad54b3d794ab842c117e36cafc7994c3f5" dependencies = [ "glib-sys", "libc", @@ -749,37 +652,32 @@ dependencies = [ [[package]] name = "gtk" -version = "0.9.2" +version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f022f2054072b3af07666341984562c8e626a79daa8be27b955d12d06a5ad6a" +checksum = "2eb51122dd3317e9327ec1e4faa151d1fa0d95664cd8fb8dcfacf4d4d29ac70c" dependencies = [ "atk", "bitflags", "cairo-rs", - "cairo-sys-rs", - "cc", + "field-offset", + "futures-channel", "gdk", "gdk-pixbuf", - "gdk-pixbuf-sys", - "gdk-sys", "gio", - "gio-sys", "glib", - "glib-sys", - "gobject-sys", "gtk-sys", + "gtk3-macros", "libc", "once_cell", "pango", - "pango-sys", "pkg-config", ] [[package]] name = "gtk-sys" -version = "0.10.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89acda6f084863307d948ba64a4b1ef674e8527dddab147ee4cdcc194c880457" +checksum = "8c14c8d3da0545785a7c5a120345b3abb534010fb8ae0f2ef3f47c027fba303e" dependencies = [ "atk-sys", "cairo-sys-rs", @@ -793,6 +691,21 @@ dependencies = [ "system-deps", ] +[[package]] +name = "gtk3-macros" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21de1da96dc117443fb03c2e270b2d34b7de98d0a79a19bbb689476173745b79" +dependencies = [ + "anyhow", + "heck", + "proc-macro-crate", + "proc-macro-error", + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "hashbrown" version = "0.11.2" @@ -833,9 +746,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "1.7.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc633605454125dec4b66843673f01c7df2b89479b32e0ed634e43a91cff62a5" +checksum = "0f647032dfaa1f8b6dc29bd3edb7bbef4861b8b8007ebb118d6db284fd59f6ee" dependencies = [ "autocfg", "hashbrown", @@ -843,11 +756,11 @@ dependencies = [ [[package]] name = "instant" -version = "0.1.11" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "716d3d89f35ac6a34fd0eed635395f4c3b76fa889338a4632e5231a8684216bd" +checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "js-sys", "wasm-bindgen", "web-sys", @@ -875,42 +788,42 @@ dependencies = [ [[package]] name = "itertools" -version = "0.9.0" +version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54b" +checksum = "a9a9d19fa1e79b6215ff29b9d6880b706147f16e9b1dbb1e4e5947b5b02bc5e3" dependencies = [ "either", ] [[package]] name = "itoa" -version = "0.4.8" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" +checksum = "1aab8fc367588b89dcee83ab0fd66b72b50b72fa1904d7095045ace2b0c81c35" [[package]] name = "js-sys" -version = "0.3.55" +version = "0.3.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cc9ffccd38c451a86bf13657df244e9c3f37493cce8e5e21e940963777acc84" +checksum = "a38fc24e30fd564ce974c02bf1d337caddff65be6cc4735a1f7eab22a7440f04" dependencies = [ "wasm-bindgen", ] [[package]] name = "keyboard-types" -version = "0.5.0" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a989afac88279b0482f402d234b5fbd405bf1ad051308595b58de4e6de22346b" +checksum = "0b7668b7cff6a51fe61cdde64cd27c8a220786f399501b57ebe36f7d8112fd68" dependencies = [ "bitflags", ] [[package]] name = "kurbo" -version = "0.8.1" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e30b1df631d23875f230ed3ddd1a88c231f269a04b2044eb6ca87e763b5f4c42" +checksum = "7a53776d271cfb873b17c618af0298445c88afc52837f3e948fa3fafd131f449" dependencies = [ "arrayvec", ] @@ -923,17 +836,17 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.103" +version = "0.2.121" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd8f7255a17a627354f321ef0055d63b898c6fb27eff628af4d1b66b7331edf6" +checksum = "efaa7b300f3b5fe8eb6bf21ce3895e1751d9665086af2d64b42f19701015ff4f" [[package]] name = "log" -version = "0.4.14" +version = "0.4.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710" +checksum = "6389c490849ff5bc16be905ae24bc913a9c8892e19b2341dbc175e14c341c2b8" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", ] [[package]] @@ -966,6 +879,15 @@ dependencies = [ "libc", ] +[[package]] +name = "memoffset" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" +dependencies = [ + "autocfg", +] + [[package]] name = "miniz_oxide" version = "0.4.4" @@ -976,6 +898,15 @@ dependencies = [ "autocfg", ] +[[package]] +name = "num_threads" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aba1801fb138d8e85e11d0fc70baf4fe1cdfffda7c6cd34a854905df588e5ed0" +dependencies = [ + "libc", +] + [[package]] name = "objc" version = "0.2.7" @@ -987,49 +918,27 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.8.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "692fcb63b64b1758029e0a96ee63e049ce8c5948587f2f7208df04625e5f6b56" +checksum = "87f3e037eac156d1775da914196f0f37741a274155e34a0b7e427c35d2a2ecb9" [[package]] name = "os_str_bytes" -version = "3.1.0" +version = "6.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6acbef58a60fe69ab50510a55bc8cdd4d6cf2283d27ad338f54cb52747a9cf2d" - -[[package]] -name = "ouroboros" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbeff60e3e37407a80ead3e9458145b456e978c4068cddbfea6afb48572962ca" +checksum = "8e22443d1643a904602595ba1cd8f7d896afe56d26712531c5ff73a15b2fbf64" dependencies = [ - "ouroboros_macro", - "stable_deref_trait", -] - -[[package]] -name = "ouroboros_macro" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03f2cb802b5bdfdf52f1ffa0b54ce105e4d346e91990dd571f86c91321ad49e2" -dependencies = [ - "Inflector", - "proc-macro-error", - "proc-macro2", - "quote", - "syn", + "memchr", ] [[package]] name = "pango" -version = "0.9.1" +version = "0.14.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9937068580bebd8ced19975938573803273ccbcbd598c58d4906efd4ac87c438" +checksum = "546fd59801e5ca735af82839007edd226fe7d3bb06433ec48072be4439c28581" dependencies = [ "bitflags", "glib", - "glib-sys", - "gobject-sys", "libc", "once_cell", "pango-sys", @@ -1037,9 +946,9 @@ dependencies = [ [[package]] name = "pango-sys" -version = "0.10.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24d2650c8b62d116c020abd0cea26a4ed96526afda89b1c4ea567131fdefc890" +checksum = "2367099ca5e761546ba1d501955079f097caa186bb53ce0f718dca99ac1942fe" dependencies = [ "glib-sys", "gobject-sys", @@ -1049,27 +958,23 @@ dependencies = [ [[package]] name = "pangocairo" -version = "0.10.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00f5ae67a05a5e023f09f64e9a71c845274d4b82dedee237b70425811885e883" +checksum = "f03ac1e8d456f8f436168aeac41201f0bf49d1dc6c8d01bfb04de2cca25df631" dependencies = [ "bitflags", "cairo-rs", - "cairo-sys-rs", "glib", - "glib-sys", - "gobject-sys", "libc", "pango", - "pango-sys", "pangocairo-sys", ] [[package]] name = "pangocairo-sys" -version = "0.11.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94ccc97f698c2f0233b84e5ca676893a1e676785b60eec700b9c0e6dcd0feb98" +checksum = "f3b9b679ad5c8503e3e533ce06e1619d033274b246e977a6fa1655a6c6ef2b51" dependencies = [ "cairo-sys-rs", "glib-sys", @@ -1078,6 +983,15 @@ dependencies = [ "system-deps", ] +[[package]] +name = "pest" +version = "2.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10f4872ae94d7b90ae48754df22fd42ad52ce740b8f370b03da4835417403e53" +dependencies = [ + "ucd-trie", +] + [[package]] name = "pico-args" version = "0.4.2" @@ -1086,9 +1000,9 @@ checksum = "db8bcd96cb740d03149cbad5518db9fd87126a10ab519c011893b1754134c468" [[package]] name = "piet" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31bf73f4f995c6ae50f709ff3635e466d1e42d814a84099ea0f90da9dd0f0b69" +checksum = "c14a2944b6da638045428a9a7901b77bea62bf430d2b9d4d7146acce96e14a15" dependencies = [ "kurbo", "unic-bidi", @@ -1096,9 +1010,9 @@ dependencies = [ [[package]] name = "piet-cairo" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b14ba5c00133cd03bdde578a3fc47c73e3be17972ed5415979c53d9243742965" +checksum = "aecdd587016b022cbe2ee290d7641a362337b244adf1bfe156a35d85855a5221" dependencies = [ "cairo-rs", "glib", @@ -1112,13 +1026,13 @@ dependencies = [ [[package]] name = "piet-common" -version = "0.4.1" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9bcfb0c224fde5812208021d890933f5865e22e4f7d705f02d85cf5142008fd" +checksum = "c5b2fc8550e18e3ea1dd552f48291acc31996712dccfeb15404977f6350abf63" dependencies = [ "cairo-rs", "cairo-sys-rs", - "cfg-if 1.0.0", + "cfg-if", "core-graphics", "piet", "piet-cairo", @@ -1131,9 +1045,9 @@ dependencies = [ [[package]] name = "piet-coregraphics" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6b44202edec899277f68642ec385283cae20bb5f49b12d8b5aa0f77823cd5a6" +checksum = "803509526b882838db55ae8f6cae276a08aca6b64819c8f371fe9505d37e9d72" dependencies = [ "core-foundation", "core-foundation-sys", @@ -1145,9 +1059,9 @@ dependencies = [ [[package]] name = "piet-direct2d" -version = "0.4.1" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21e69ce1fc6754dff7ab40a11253beb04d204435a6812e8119eab22645a1e26e" +checksum = "46e2d4f9108976e6166d3de76afa238ab837ba5d5f52fd2a3f2e2c959be2b9a4" dependencies = [ "associative-cache", "dwrote", @@ -1159,9 +1073,9 @@ dependencies = [ [[package]] name = "piet-web" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7da97e80b02b6f9c8d8c611ff555df2c10d408767a15da292791a5bd4198f12" +checksum = "81bee71a4d0c2b00e51807d381a6ced49c792f0b0a2e42135f9f4547111bf2bb" dependencies = [ "js-sys", "piet", @@ -1173,9 +1087,9 @@ dependencies = [ [[package]] name = "pin-project-lite" -version = "0.2.7" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d31d11c69a6b52a174b42bdc0c30e5e11670f90788b2c471c31c1d17d449443" +checksum = "e280fbe77cc62c91527259e9442153f4688736748d24660126286329742b4c6c" [[package]] name = "pin-utils" @@ -1185,16 +1099,17 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "pkg-config" -version = "0.3.20" +version = "0.3.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c9b1041b4387893b91ee6746cddfc28516aff326a3519fb2adf820932c5e6cb" +checksum = "1df8c4ec4b0627e53bdf214615ad287367e482558cf84b109250b37464dc03ae" [[package]] name = "proc-macro-crate" -version = "0.1.5" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" +checksum = "e17d47ce914bf4de440332250b0edd23ce48c005f59fab39d3335866b114f11a" dependencies = [ + "thiserror", "toml", ] @@ -1222,32 +1137,20 @@ dependencies = [ "version_check", ] -[[package]] -name = "proc-macro-hack" -version = "0.5.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5" - -[[package]] -name = "proc-macro-nested" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc881b2c22681370c6a780e47af9840ef841837bc98118431d4e1868bd0c1086" - [[package]] name = "proc-macro2" -version = "1.0.29" +version = "1.0.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9f5105d4fdaab20335ca9565e106a5d9b82b6219b5ba735731124ac6711d23d" +checksum = "c7342d5883fbccae1cc37a2353b09c87c9b0f3afd73f5fb9bba687a1f733b029" dependencies = [ "unicode-xid", ] [[package]] name = "quote" -version = "1.0.9" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3d0b9745dc2debf507c8422de05d7226cc1f0644216dfdfead988f9b1ab32a7" +checksum = "632d02bff7f874a36f33ea8bb416cd484b90cc66c1194b1a1110d067a7013f58" dependencies = [ "proc-macro2", ] @@ -1290,9 +1193,9 @@ checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" [[package]] name = "rustc_version" -version = "0.2.3" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" +checksum = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee" dependencies = [ "semver", ] @@ -1315,9 +1218,9 @@ dependencies = [ [[package]] name = "ryu" -version = "1.0.5" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e" +checksum = "73b4b750c782965c211b42f022f59af1fbceabdd026623714f104152f1ec149f" [[package]] name = "scopeguard" @@ -1326,25 +1229,34 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" [[package]] -name = "semver" -version = "0.9.0" +name = "self_cell" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" +checksum = "1ef965a420fe14fdac7dd018862966a4c14094f900e1650bbc71ddd7d580c8af" + +[[package]] +name = "semver" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" dependencies = [ "semver-parser", ] [[package]] name = "semver-parser" -version = "0.7.0" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" +checksum = "00b0bef5b7f9e0df16536d3961cfb6e84331c065b4066afb39768d0e319411f7" +dependencies = [ + "pest", +] [[package]] name = "serde" -version = "1.0.130" +version = "1.0.136" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f12d06de37cf59146fbdecab66aa99f9fe4f78722e3607577a5375d66bd0c913" +checksum = "ce31e24b01e1e524df96f1c2fdd054405f8d7376249a5110886fb4b658484789" dependencies = [ "serde_derive", ] @@ -1360,9 +1272,9 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.130" +version = "1.0.136" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7bc1a1ab1961464eae040d96713baa5a724a8152c1222492465b54322ec508b" +checksum = "08597e7152fcd306f41838ed3e37be9eaeed2b61c42e2117266a554fab4662f9" dependencies = [ "proc-macro2", "quote", @@ -1371,26 +1283,20 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.68" +version = "1.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f690853975602e1bfe1ccbf50504d67174e3bcf340f23b5ea9992e0587a52d8" +checksum = "8e8d9fa5c3b304765ce1fd9c4c8a3de2c8db365a5b91be52f186efc675681d95" dependencies = [ "itoa", "ryu", "serde", ] -[[package]] -name = "sha1" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2579985fda508104f7587689507983eadd6a6e84dd35d6d115361f530916fa0d" - [[package]] name = "sharded-slab" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "740223c51853f3145fe7c90360d2d4232f2b62e3449489c207eccde818979982" +checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31" dependencies = [ "lazy_static", ] @@ -1422,79 +1328,15 @@ dependencies = [ [[package]] name = "slab" -version = "0.4.4" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c307a32c1c5c437f38c7fd45d753050587732ba8628319fbdf12a7e289ccc590" +checksum = "9def91fd1e018fe007022791f865d0ccc9b3a0d5001e01aabb8b40e46000afb5" [[package]] name = "smallvec" -version = "1.7.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ecab6c735a6bb4139c0caafd0cc3635748bbb3acf4550e8138122099251f309" - -[[package]] -name = "stable_deref_trait" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" - -[[package]] -name = "standback" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e113fb6f3de07a243d434a56ec6f186dfd51cb08448239fe7bcae73f87ff28ff" -dependencies = [ - "version_check", -] - -[[package]] -name = "stdweb" -version = "0.4.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d022496b16281348b52d0e30ae99e01a73d737b2f45d38fed4edf79f9325a1d5" -dependencies = [ - "discard", - "rustc_version", - "stdweb-derive", - "stdweb-internal-macros", - "stdweb-internal-runtime", - "wasm-bindgen", -] - -[[package]] -name = "stdweb-derive" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c87a60a40fccc84bef0652345bbbbbe20a605bf5d0ce81719fc476f5c03b50ef" -dependencies = [ - "proc-macro2", - "quote", - "serde", - "serde_derive", - "syn", -] - -[[package]] -name = "stdweb-internal-macros" -version = "0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58fa5ff6ad0d98d1ffa8cb115892b6e69d67799f6763e162a1c9db421dc22e11" -dependencies = [ - "base-x", - "proc-macro2", - "quote", - "serde", - "serde_derive", - "serde_json", - "sha1", - "syn", -] - -[[package]] -name = "stdweb-internal-runtime" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "213701ba3370744dcd1a12960caa4843b3d68b4d1c0a5d575e0d65b2ee9d16c0" +checksum = "f2dd574626839106c320a323308629dcb1acfc96e32a8cba364ddc61ac23ee83" [[package]] name = "stiletto" @@ -1520,15 +1362,15 @@ checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" [[package]] name = "strum" -version = "0.18.0" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57bd81eb48f4c437cadc685403cad539345bf703d78e63707418431cecd4522b" +checksum = "aaf86bbcfd1fa9670b7a129f64fc0c9fcbbfe4f1bc4210e9e98fe71ffc12cde2" [[package]] name = "strum_macros" -version = "0.18.0" +version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87c85aa3f8ea653bfd3ddf25f7ee357ee4d204731f6aa9ad04002306f6e2774c" +checksum = "d06aaeeee809dbc59eb4556183dd927df67db1540de5be8d3ec0b6636358a5ec" dependencies = [ "heck", "proc-macro2", @@ -1548,9 +1390,9 @@ dependencies = [ [[package]] name = "syn" -version = "1.0.78" +version = "1.0.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4eac2e6c19f5c3abc0c229bea31ff0b9b091c7b14990e8924b92902a303a0c0" +checksum = "704df27628939572cd88d33f171cd6f896f4eaca85252c6e0a72d8d8287ee86f" dependencies = [ "proc-macro2", "quote", @@ -1559,11 +1401,14 @@ dependencies = [ [[package]] name = "system-deps" -version = "1.3.2" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f3ecc17269a19353b3558b313bba738b25d82993e30d62a18406a24aba4649b" +checksum = "480c269f870722b3b08d2f13053ce0c2ab722839f472863c3e2d61ff3a1c2fa6" dependencies = [ + "anyhow", + "cfg-expr", "heck", + "itertools", "pkg-config", "strum", "strum_macros", @@ -1574,36 +1419,33 @@ dependencies = [ [[package]] name = "termcolor" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dfed899f0eb03f32ee8c6a0aabdb8a7949659e3466561fc0adf54e26d88c5f4" +checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755" dependencies = [ "winapi-util", ] [[package]] name = "textwrap" -version = "0.14.2" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0066c8d12af8b5acd21e00547c3797fde4e8677254a7ee429176ccebbe93dd80" -dependencies = [ - "unicode-width", -] +checksum = "b1141d4d61095b28419e22cb0bbf02755f5e54e0526f97f1e3d1d160e60885fb" [[package]] name = "thiserror" -version = "1.0.29" +version = "1.0.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "602eca064b2d83369e2b2f34b09c70b605402801927c65c11071ac911d299b88" +checksum = "854babe52e4df1653706b98fcfc05843010039b406875930a70e4d9644e5c417" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.29" +version = "1.0.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bad553cc2c78e8de258400763a647e80e6d1b31ee237275d756f6836d204494c" +checksum = "aa32fd3f627f367fe16f893e2597ae3c05020f8bba2666a4e6ea73d377e5714b" dependencies = [ "proc-macro2", "quote", @@ -1612,49 +1454,21 @@ dependencies = [ [[package]] name = "thread_local" -version = "1.1.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8018d24e04c95ac8790716a5987d0fec4f8b27249ffa0f7d33f1369bdfb88cbd" +checksum = "5516c27b78311c50bf42c071425c560ac799b11c30b31f87e3081965fe5e0180" dependencies = [ "once_cell", ] [[package]] name = "time" -version = "0.2.27" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4752a97f8eebd6854ff91f1c1824cd6160626ac4bd44287f7f4ea2035a02a242" +checksum = "c2702e08a7a860f005826c6815dcac101b19b5eb330c27fe4a5928fec1d20ddd" dependencies = [ - "const_fn", "libc", - "standback", - "stdweb", - "time-macros", - "version_check", - "winapi", -] - -[[package]] -name = "time-macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "957e9c6e26f12cb6d0dd7fc776bb67a706312e7299aed74c8dd5b17ebb27e2f1" -dependencies = [ - "proc-macro-hack", - "time-macros-impl", -] - -[[package]] -name = "time-macros-impl" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd3c141a1b43194f3f56a1411225df8646c55781d5f26db825b3d98507eb482f" -dependencies = [ - "proc-macro-hack", - "proc-macro2", - "quote", - "standback", - "syn", + "num_threads", ] [[package]] @@ -1674,11 +1488,11 @@ dependencies = [ [[package]] name = "tracing" -version = "0.1.28" +version = "0.1.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84f96e095c0c82419687c20ddf5cb3eadb61f4e1405923c9dc8e53a1adacbda8" +checksum = "4a1bdf54a7c28a2bbf701e1d2233f6c77f473486b94bee4f9678da5a148dca7f" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "pin-project-lite", "tracing-attributes", "tracing-core", @@ -1686,9 +1500,9 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.17" +version = "0.1.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4f915eb6abf914599c200260efced9203504c4c37380af10cdf3b7d36970650" +checksum = "2e65ce065b4b5c53e73bb28912318cb8c9e9ad3921f1d669eb0e68b4c8143a2b" dependencies = [ "proc-macro2", "quote", @@ -1697,18 +1511,19 @@ dependencies = [ [[package]] name = "tracing-core" -version = "0.1.21" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f4ed65637b8390770814083d20756f87bfa2c21bf2f110babdc5438351746e4" +checksum = "aa31669fa42c09c34d94d8165dd2012e8ff3c66aca50f3bb226b68f216f2706c" dependencies = [ "lazy_static", + "valuable", ] [[package]] name = "tracing-subscriber" -version = "0.2.24" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdd0568dbfe3baf7048b7908d2b32bca0d81cd56bec6d2a8f894b01d74f86be3" +checksum = "9e0ab7bdc962035a87fba73f3acca9b8a8d0034c2e6f60b84aeaaddddc155dce" dependencies = [ "ansi_term", "sharded-slab", @@ -1718,9 +1533,9 @@ dependencies = [ [[package]] name = "tracing-wasm" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ae741706df70547fca8715f74a8569677666e7be3454313af70f6e158034485" +checksum = "4575c663a174420fa2d78f4108ff68f65bf2fbb7dd89f33749b6e826b3626e07" dependencies = [ "tracing", "tracing-subscriber", @@ -1750,9 +1565,15 @@ dependencies = [ [[package]] name = "typenum" -version = "1.14.0" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b63708a265f51345575b27fe43f9500ad611579e764c79edbc2037b1121959ec" +checksum = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987" + +[[package]] +name = "ucd-trie" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56dee185309b50d1f11bfedef0fe6d036842e3fb77413abef29f8f8d1c5d4c1c" [[package]] name = "unic-bidi" @@ -1825,9 +1646,9 @@ dependencies = [ [[package]] name = "unicode-bidi" -version = "0.3.6" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "246f4c42e67e7a4e3c6106ff716a5d067d4132a642840b242e357e468a2a0085" +checksum = "1a01404663e3db436ed2746d9fefef640d868edae3cceb81c3b8d5732fda678f" [[package]] name = "unicode-bidi-mirroring" @@ -1849,15 +1670,15 @@ checksum = "7f9af028e052a610d99e066b33304625dea9613170a2563314490a4e6ec5cf7f" [[package]] name = "unicode-script" -version = "0.5.3" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "098ec66172ce21cd55f8bcc786ee209dd20e04eff70acfca30cb79924d173ae9" +checksum = "58dd944fd05f2f0b5c674917aea8a4df6af84f2d8de3fe8d988b95d28fb8fb09" [[package]] name = "unicode-segmentation" -version = "1.8.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8895849a949e7845e06bd6dc1aa51731a103c42707010a5b591c0038fb73385b" +checksum = "7e8820f5d777f6224dc4be3632222971ac30164d4a258d595640799554ebfd99" [[package]] name = "unicode-vo" @@ -1865,12 +1686,6 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b1d386ff53b415b7fe27b50bb44679e2cc4660272694b7b6f3326d8480823a94" -[[package]] -name = "unicode-width" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973" - [[package]] name = "unicode-xid" version = "0.2.2" @@ -1911,38 +1726,38 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "14706d2a800ee8ff38c1d3edb873cd616971ea59eb7c0d046bb44ef59b06a1ae" [[package]] -name = "vec_map" -version = "0.8.2" +name = "valuable" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" +checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" [[package]] name = "version-compare" -version = "0.0.10" +version = "0.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d63556a25bae6ea31b52e640d7c41d1ab27faba4ccb600013837a3d0b3994ca1" +checksum = "1c18c859eead79d8b95d09e4678566e8d70105c4e7b251f707a03df32442661b" [[package]] name = "version_check" -version = "0.9.3" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fecdca9a5291cc2b8dcf7dc02453fee791a280f3743cb0905f8822ae463b3fe" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" [[package]] name = "wasm-bindgen" -version = "0.2.78" +version = "0.2.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "632f73e236b219150ea279196e54e610f5dbafa5d61786303d4da54f84e47fce" +checksum = "25f1af7423d8588a3d840681122e72e6a24ddbcb3f0ec385cac0d12d24256c06" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.78" +version = "0.2.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a317bf8f9fba2476b4b2c85ef4c4af8ff39c3c7f0cdfeed4f82c34a880aa837b" +checksum = "8b21c0df030f5a177f3cba22e9bc4322695ec43e7257d865302900290bcdedca" dependencies = [ "bumpalo", "lazy_static", @@ -1955,9 +1770,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.78" +version = "0.2.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d56146e7c495528bf6587663bea13a8eb588d39b36b679d83972e1a2dbbdacf9" +checksum = "2f4203d69e40a52ee523b2529a773d5ffc1dc0071801c87b3d270b471b80ed01" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -1965,9 +1780,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.78" +version = "0.2.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7803e0eea25835f8abdc585cd3021b3deb11543c6fe226dcd30b228857c5c5ab" +checksum = "bfa8a30d46208db204854cadbb5d4baf5fcf8071ba5bf48190c3e59937962ebc" dependencies = [ "proc-macro2", "quote", @@ -1978,15 +1793,15 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.78" +version = "0.2.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0237232789cf037d5480773fe568aac745bfe2afbc11a863e97901780a6b47cc" +checksum = "3d958d035c4438e28c70e4321a2911302f10135ce78a9c7834c0cab4123d06a2" [[package]] name = "web-sys" -version = "0.3.55" +version = "0.3.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38eb105f1c59d9eaa6b5cdc92b859d85b926e82cb2e0945cd0c9259faa6fe9fb" +checksum = "c060b319f29dd25724f09a2ba1418f142f539b2be99fbf4d2d5a8f7330afb8eb" dependencies = [ "js-sys", "wasm-bindgen", diff --git a/Cargo.toml b/Cargo.toml index afe4d14..2ce496f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -7,25 +7,26 @@ default-run = "stiletto" [dependencies] log = "0.4" -druid = { version = "0.7.0", features = ["im", "svg"] } +druid = { version = "0.7", features = ["im", "svg"] } im = { version = "*" } serde = { version = "1.0", features = ["derive"] } serde_bare = "0.3.0" serde_json = "1.0" -clap = "3.0.0-beta.2" +clap = "3.1" [target.'cfg(target_os="linux")'.dependencies.gtk] -version = "0.9.2" +version = "0.14" features = ["v3_22"] [target.'cfg(target_os="linux")'.dependencies.gio] -version = "0.9.1" +version = "0.14" features = ["v2_56"] [target.'cfg(target_os="linux")'.dependencies.gdk] -version = "0.13.2" +version = "0.14" features = ["v3_22"] [patch.crates-io] -druid = { git = "https://github.com/jneem/druid", branch = "pointer", features = ["im", "svg"] } +#druid = { git = "https://github.com/jneem/druid", branch = "pointer", features = ["im", "svg"] } +druid = { path= "../druid/druid/" } diff --git a/src/bin/stlt_migrate.rs b/src/bin/stlt_migrate.rs index e3694f6..67fe490 100644 --- a/src/bin/stlt_migrate.rs +++ b/src/bin/stlt_migrate.rs @@ -14,35 +14,39 @@ // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see . -use clap::{Arg, App}; +use clap::{Arg, Command}; use stiletto::migration::open_stiletto_document; use std::fs::File; use std::path::PathBuf; fn main() { - let matches = App::new("Stiletto Migration CLI") + let matches = Command::new("Stiletto Migration CLI") .version("0.1.0") .author("Stiletto Authors") .about("Migrate a stlt file to the latest version") - .arg(Arg::new("INPUT") - .about("Sets the input file to use") - .required(true) - .index(1)) - .arg(Arg::new("OUTPUT") - .about("Sets the output file to use") - .required(true) - .index(2)) + .arg( + Arg::new("INPUT") + .help("Sets the input file to use") + .required(true) + .index(1), + ) + .arg( + Arg::new("OUTPUT") + .help("Sets the output file to use") + .required(true) + .index(2), + ) .get_matches(); - let input_path = matches.value_of("INPUT").unwrap(); - let output_path = matches.value_of("OUTPUT").unwrap(); + let input_path = matches.value_of("INPUT").unwrap(); + let output_path = matches.value_of("OUTPUT").unwrap(); - let out_file = File::create(&output_path).expect("Cannot create output fle"); + let out_file = File::create(&output_path).expect("Cannot create output fle"); - let result = open_stiletto_document(&PathBuf::from(&input_path)); - if let Ok(document) = result { - let snapshot = document.migrate_to_latest(); - snapshot.to_writer(out_file); - } + let result = open_stiletto_document(&PathBuf::from(&input_path)); + if let Ok(document) = result { + let snapshot = document.migrate_to_latest(); + snapshot.to_writer(out_file); + } } diff --git a/src/canvas.rs b/src/canvas.rs index 8e7fdbb..edbdf57 100644 --- a/src/canvas.rs +++ b/src/canvas.rs @@ -16,7 +16,6 @@ use std::vec::Vec; -use druid::Color; use im::{vector, Vector}; use serde::de::{Deserializer, SeqAccess, Visitor}; @@ -81,19 +80,24 @@ pub enum CanvasElement { Freehand { path: Path, thickness: f64, - #[serde(serialize_with = "serialize_color", deserialize_with = "deserialize_color")] + #[serde( + serialize_with = "serialize_color", + deserialize_with = "deserialize_color" + )] stroke_color: druid::Color, }, } fn serialize_color(c: &druid::Color, ser: S) -> Result - where S: Serializer +where + S: Serializer, { ser.serialize_u32(c.as_rgba_u32()) } fn deserialize_color<'de, D>(de: D) -> Result - where D: Deserializer<'de> +where + D: Deserializer<'de>, { let c = u32::deserialize(de)?; Ok(druid::Color::from_rgba32_u32(c)) @@ -201,11 +205,16 @@ impl Serialize for Path { { use druid::kurbo::PathEl; - serializer.collect_seq(self.kurbo_path.iter().filter_map(|path_el| match path_el { - PathEl::MoveTo(pt) => Some(Into::<(f64, f64)>::into(pt)), - PathEl::LineTo(pt) => Some(Into::<(f64, f64)>::into(pt)), - _ => None, - }).collect::>()) + serializer.collect_seq( + self.kurbo_path + .iter() + .filter_map(|path_el| match path_el { + PathEl::MoveTo(pt) => Some(Into::<(f64, f64)>::into(pt)), + PathEl::LineTo(pt) => Some(Into::<(f64, f64)>::into(pt)), + _ => None, + }) + .collect::>(), + ) } } diff --git a/src/lib.rs b/src/lib.rs index 0b239c2..fb1d005 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -19,9 +19,9 @@ use std::vec::Vec; pub mod canvas; pub mod history; +pub mod migration; pub mod tool; pub mod widget; -pub mod migration; pub mod commands { use druid::Selector; diff --git a/src/main.rs b/src/main.rs index 5501ba2..8acb068 100644 --- a/src/main.rs +++ b/src/main.rs @@ -32,7 +32,7 @@ use druid::{ use im::Vector; use stiletto::tool::CanvasToolParams; -use stiletto::widget::tool_ctx::{CanvasToolCtx}; +use stiletto::widget::tool_ctx::CanvasToolCtx; use stiletto::widget::{build_simple_tool_widget, CanvasState, CanvasToolIconState, CanvasWidget}; use stiletto::DocumentSnapshot; @@ -77,7 +77,7 @@ pub fn main() { current_file_path: None, }; AppLauncher::with_window(window) - .use_simple_logger() + .log_to_console() .delegate(Delegate) .launch(canvas_data) .expect("launch failed"); @@ -137,17 +137,19 @@ fn build_ui() -> impl Widget { ctx.submit_command(Command::new(CanvasWidget::SCROLL, 30.0, canvas_id)); }, )) - .with_child(Button::new("Save").on_click(move |ctx, data: &mut StilettoState, _| { - if data.current_file_path.is_some() { - ctx.submit_command(Command::new(commands::SAVE_FILE, (), Target::Auto)); - } else { - ctx.submit_command(Command::new( - druid::commands::SHOW_SAVE_PANEL, - save_dialog_options_clone.clone(), - Target::Auto, - )) - } - })) + .with_child( + Button::new("Save").on_click(move |ctx, data: &mut StilettoState, _| { + if data.current_file_path.is_some() { + ctx.submit_command(Command::new(commands::SAVE_FILE, (), Target::Auto)); + } else { + ctx.submit_command(Command::new( + druid::commands::SHOW_SAVE_PANEL, + save_dialog_options_clone.clone(), + Target::Auto, + )) + } + }), + ) .with_child(Button::new("Save As").on_click(move |ctx, _, _| { ctx.submit_command(Command::new( druid::commands::SHOW_SAVE_PANEL, @@ -274,8 +276,7 @@ impl AppDelegate for Delegate { let res_file = File::create(&path_buf); if let Ok(f) = res_file { - let write_res = - data.canvas.get_document_snapshot().to_writer(f); + let write_res = data.canvas.get_document_snapshot().to_writer(f); if write_res.is_err() { warn!("Error while saving: {:?}", write_res.err()); } else { diff --git a/src/migration.rs b/src/migration.rs index 2120a25..9fd92f9 100644 --- a/src/migration.rs +++ b/src/migration.rs @@ -47,7 +47,9 @@ impl StilettoDocument { pub fn migrate_to_next(self) -> StilettoDocument { match self { - StilettoDocument::DocumentSnapshot0_1(snapshot) => StilettoDocument::DocumentSnapshot0_2(snapshot) , + StilettoDocument::DocumentSnapshot0_1(snapshot) => { + StilettoDocument::DocumentSnapshot0_2(snapshot) + } StilettoDocument::DocumentSnapshot0_2(_) => self, } } @@ -60,12 +62,11 @@ impl StilettoDocument { assert!(matches!(self, StilettoDocument::DocumentSnapshot0_2(_))); match self { StilettoDocument::DocumentSnapshot0_2(snapshot) => snapshot, - _ => panic!("Wrong Document Snapshot Version") + _ => panic!("Wrong Document Snapshot Version"), } } } - impl fmt::Display for MigrationError { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { match &self { @@ -74,10 +75,11 @@ impl fmt::Display for MigrationError { MigrationError::IoError(e) => e.fmt(f), MigrationError::UnexpectedVersion(major, minor, e_major, e_minor) => { write!( - f, "Unexpected version ({}, {}): was expecting ({}, {})", + f, + "Unexpected version ({}, {}): was expecting ({}, {})", major, minor, e_major, e_minor ) - }, + } } } } @@ -114,12 +116,12 @@ impl From for MigrationError { fn open_0_1(path: &PathBuf) -> Result { let f = File::open(path)?; let document_snapshot: DocumentSnapshot = serde_json::from_reader(f)?; - if document_snapshot.format_version_major != 0 || - document_snapshot.format_version_minor != 1 { + if document_snapshot.format_version_major != 0 || document_snapshot.format_version_minor != 1 { Err(MigrationError::UnexpectedVersion( document_snapshot.format_version_major, document_snapshot.format_version_minor, - 0, 1 + 0, + 1, )) } else { Ok(StilettoDocument::DocumentSnapshot0_1(document_snapshot)) @@ -139,4 +141,3 @@ pub fn open_stiletto_document(path: &PathBuf) -> Result = Selector::new("scroll_canvas"); @@ -154,25 +158,23 @@ impl Widget for CanvasWidget { viewport_transform = Some(Affine::translate((-30.0, 0.0))); } } - Event::PointerDown(pointer_event) => { + Event::MouseDown(pointer_event) => { toggle_eraser_event = true; - enable_temporary_erasing = false; //pointer_event.pointer_type == PointerType::Eraser; + enable_temporary_erasing = pointer_event.pointer_type == PointerType::Eraser; } - Event::PointerMove(pointer_event) => { + Event::MouseMove(pointer_event) => { toggle_eraser_event = true; - enable_temporary_erasing = false; //pointer_event.pointer_type == PointerType::Eraser; + enable_temporary_erasing = pointer_event.pointer_type == PointerType::Eraser; } - Event::PointerUp(pointer_event) => { + Event::MouseUp(pointer_event) => { toggle_eraser_event = true; - enable_temporary_erasing = false; //pointer_event.pointer_type == PointerType::Eraser; + enable_temporary_erasing = pointer_event.pointer_type == PointerType::Eraser; } Event::Wheel(pointer) => { let transform = self.widget_to_viewport(); - viewport_transform = Some( - Affine::translate( - (pointer.wheel_delta.to_point()).to_vec2() - ) - ); + viewport_transform = Some(Affine::translate( + (pointer.wheel_delta.to_point()).to_vec2(), + )); } _ => {} @@ -188,7 +190,7 @@ impl Widget for CanvasWidget { } else { data.handle_event(ctx, event, self.widget_to_viewport(), env); } - if let Some(transform) = viewport_transform { + if let Some(transform) = viewport_transform { let mut new_rect = transform.transform_rect_bbox(self.viewport.view_rect()); if new_rect.x0 <= 0f64 { new_rect.x1 -= new_rect.x0; diff --git a/src/widget/mod.rs b/src/widget/mod.rs index fbca189..bd51d31 100644 --- a/src/widget/mod.rs +++ b/src/widget/mod.rs @@ -1,6 +1,6 @@ pub mod canvas; -pub mod tool_icon; pub mod tool_ctx; +pub mod tool_icon; pub use canvas::*; pub use tool_icon::*; diff --git a/src/widget/tool_ctx.rs b/src/widget/tool_ctx.rs index f3e2aee..af26d46 100644 --- a/src/widget/tool_ctx.rs +++ b/src/widget/tool_ctx.rs @@ -14,14 +14,14 @@ // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see . -use crate::tool::{CanvasToolParams, CanvasToolType}; use crate::canvas::{Canvas, CanvasElement}; use crate::history::VersionedCanvas; +use crate::tool::{CanvasToolParams, CanvasToolType}; use druid::kurbo::BezPath; -use druid::{Affine, Data, Env, Event, EventCtx, PointerButton, PointerEvent, PaintCtx}; +use druid::{Affine, Data, Env, Event, EventCtx, PaintCtx, PointerButton, PointerEvent}; -#[derive(Clone, Data)] +#[derive(Clone, Data, Debug)] pub enum CanvasToolState { Idle, DrawingFreehand { @@ -47,6 +47,11 @@ impl CanvasToolParams { } fn pressed(pointer_event: &PointerEvent) -> bool { + dbg!(&pointer_event); + dbg!( + pointer_event.buttons.contains(PointerButton::Left) + || pointer_event.button == PointerButton::Left + ); pointer_event.buttons.contains(PointerButton::Left) || pointer_event.button == PointerButton::Left } @@ -82,11 +87,11 @@ impl CanvasToolCtx { _env: &Env, ) { match (&mut self.state, event) { - (CanvasToolState::Idle, Event::PointerDown(pointer_event)) if pressed(pointer_event) => { + (CanvasToolState::Idle, Event::MouseDown(pointer_event)) if pressed(pointer_event) => { self.state = CanvasToolState::Erasing; ctx.set_handled(); } - (CanvasToolState::Erasing, Event::PointerMove(pointer_event)) if pressed(pointer_event) => { + (CanvasToolState::Erasing, Event::MouseMove(pointer_event)) => { let eraser_rect = druid::Rect::from_center_size(transform * pointer_event.pos, (5.0, 5.0)); let old_elements = vcanvas.get().elements(); @@ -107,7 +112,7 @@ impl CanvasToolCtx { } ctx.set_handled(); } - (CanvasToolState::Erasing, Event::PointerUp(pointer_event)) if pressed(pointer_event) => { + (CanvasToolState::Erasing, Event::MouseUp(pointer_event)) if pressed(pointer_event) => { self.state = CanvasToolState::Idle; ctx.set_handled(); } @@ -124,7 +129,7 @@ impl CanvasToolCtx { _env: &Env, ) { match (&mut self.state, event) { - (CanvasToolState::Idle, Event::PointerDown(pointer_event)) if pressed(pointer_event) => { + (CanvasToolState::Idle, Event::MouseDown(pointer_event)) if pressed(pointer_event) => { let mut kurbo_path = BezPath::new(); kurbo_path.move_to((pointer_event.pos.x, pointer_event.pos.y)); if let CanvasToolParams::Pen { thickness, color } = &self.initial_params { @@ -144,31 +149,33 @@ impl CanvasToolCtx { ref mut current_path, .. }, - Event::PointerMove(pointer_event), - ) => if pressed(pointer_event) { - if let CanvasElement::Freehand { ref mut path, .. } = current_path { - path.kurbo_path - .line_to((pointer_event.pos.x, pointer_event.pos.y)); - } + Event::MouseMove(pointer_event), + ) => { + // TODO(enrico): investigate why mouse move doesn't carry buttons anymore + //if pressed(pointer_event) { + let CanvasElement::Freehand { ref mut path, .. } = current_path; + path.kurbo_path + .line_to((pointer_event.pos.x, pointer_event.pos.y)); ctx.set_handled(); + //} } - (CanvasToolState::DrawingFreehand { .. }, Event::PointerUp(pointer_event)) if pressed(pointer_event) => { + (CanvasToolState::DrawingFreehand { .. }, Event::MouseUp(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 { - if let CanvasElement::Freehand { + let CanvasElement::Freehand { mut path, thickness, stroke_color, - } = current_path - { - path.kurbo_path.apply_affine(transform); - canvas.add_element(CanvasElement::Freehand { - path, - thickness, - stroke_color, - }); - } + } = current_path; + path.kurbo_path.apply_affine(transform); + canvas.add_element(CanvasElement::Freehand { + path, + thickness, + stroke_color, + }); } }); ctx.set_handled(); -- 2.39.5 From ca3aadc50d9103458928e33910c13c283bc553b6 Mon Sep 17 00:00:00 2001 From: Enrico Lumetti Date: Thu, 31 Mar 2022 12:52:07 +0200 Subject: [PATCH 11/11] Update remote branch --- Cargo.lock | 3 +++ Cargo.toml | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 5378339..be8b781 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -284,6 +284,7 @@ dependencies = [ [[package]] name = "druid" version = "0.7.0" +source = "git+https://github.com/doppioandante/druid?branch=pointer_event_rebase#4699b893d3c2689e4ba73cfbf283c2f203868efb" dependencies = [ "console_error_panic_hook", "druid-derive", @@ -306,6 +307,7 @@ dependencies = [ [[package]] name = "druid-derive" version = "0.4.0" +source = "git+https://github.com/doppioandante/druid?branch=pointer_event_rebase#4699b893d3c2689e4ba73cfbf283c2f203868efb" dependencies = [ "proc-macro2", "quote", @@ -315,6 +317,7 @@ dependencies = [ [[package]] name = "druid-shell" version = "0.7.0" +source = "git+https://github.com/doppioandante/druid?branch=pointer_event_rebase#4699b893d3c2689e4ba73cfbf283c2f203868efb" dependencies = [ "anyhow", "bitflags", diff --git a/Cargo.toml b/Cargo.toml index 2ce496f..1fe1a93 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -27,6 +27,6 @@ version = "0.14" features = ["v3_22"] [patch.crates-io] -#druid = { git = "https://github.com/jneem/druid", branch = "pointer", features = ["im", "svg"] } -druid = { path= "../druid/druid/" } +druid = { git = "https://github.com/doppioandante/druid", branch = "pointer_event_rebase", features = ["im", "svg"] } +#druid = { path= "../druid/druid/" } -- 2.39.5