diff --git a/Cargo.lock b/Cargo.lock index c66b409..9b3b49d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -419,9 +419,9 @@ dependencies = [ [[package]] name = "lyon_geom" -version = "0.17.4" +version = "0.17.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1e79ed83352715656b6e73bd9c1b54736f22d0c6ad9b1809ad20d585b943f4a" +checksum = "fe153a6ce93cb97c85ba47a007fd437079bbff5592b9c0f77195973b8b169d69" dependencies = [ "arrayvec", "euclid", diff --git a/lib/Cargo.toml b/lib/Cargo.toml index 356e65f..565ffdf 100644 --- a/lib/Cargo.toml +++ b/lib/Cargo.toml @@ -9,7 +9,7 @@ license = "MIT" [dependencies] g-code = "0.3.1" -lyon_geom = ">= 0.17.2" +lyon_geom = ">= 0.17.5" euclid = "0.22" log = "0" uom = "0.31.0" diff --git a/lib/src/arc.rs b/lib/src/arc.rs index 5a61d93..95fd490 100644 --- a/lib/src/arc.rs +++ b/lib/src/arc.rs @@ -1,6 +1,6 @@ use euclid::Angle; use lyon_geom::{ - Arc, ArcFlags, CubicBezierSegment, Line, LineSegment, Point, Scalar, SvgArc, Transform, Vector, + ArcFlags, CubicBezierSegment, Line, LineSegment, Point, Scalar, SvgArc, Transform, Vector, }; pub enum ArcOrLineSegment { @@ -176,9 +176,9 @@ where vec![ArcOrLineSegment::Arc(svg_arc)] } else { let (left, right) = self_arc.split(S::HALF); - let mut acc = FlattenWithArcs::flattened(&to_svg_arc(left), tolerance); + let mut acc = FlattenWithArcs::flattened(&left.to_svg_arc(), tolerance); acc.append(&mut FlattenWithArcs::flattened( - &to_svg_arc(right), + &right.to_svg_arc(), tolerance, )); acc @@ -186,23 +186,6 @@ where } } -/// Sanity holdover until https://github.com/nical/lyon/pull/693 is merged -pub fn to_svg_arc(arc: Arc) -> SvgArc { - let from = arc.sample(S::ZERO); - let to = arc.sample(S::ONE); - let flags = ArcFlags { - sweep: arc.sweep_angle.get() >= S::ZERO, - large_arc: S::abs(arc.sweep_angle.get()) >= S::PI(), - }; - SvgArc { - from, - to, - radii: arc.radii, - x_rotation: arc.x_rotation, - flags, - } -} - pub trait Transformed { fn transformed(&self, transform: &Transform) -> Self; } diff --git a/lib/src/turtle.rs b/lib/src/turtle.rs index 61094f8..0759449 100644 --- a/lib/src/turtle.rs +++ b/lib/src/turtle.rs @@ -1,4 +1,4 @@ -use crate::arc::{to_svg_arc, ArcOrLineSegment, FlattenWithArcs, Transformed}; +use crate::arc::{ArcOrLineSegment, FlattenWithArcs, Transformed}; use crate::machine::Machine; use g_code::{command, emit::Token}; use lyon_geom::euclid::{default::Transform2D, Angle}; @@ -109,9 +109,9 @@ impl<'input> Turtle<'input> { .into_token_vec(), (true, _) => { let (left, right) = svg_arc.to_arc().split(0.5); - let mut token_vec = Self::circular_interpolation(to_svg_arc(left), feedrate); + let mut token_vec = Self::circular_interpolation(left.to_svg_arc(), feedrate); token_vec.append(&mut Self::circular_interpolation( - to_svg_arc(right), + right.to_svg_arc(), feedrate, )); token_vec