diff --git a/src/main.rs b/src/main.rs index d58f2e4..bcb2caf 100644 --- a/src/main.rs +++ b/src/main.rs @@ -132,7 +132,7 @@ fn svg2program(doc: &svgdom::Document, opts: ProgramOptions, mach: Machine) -> P t.set_scaling( euclid::Transform2D::create_scale( width_in_mm / width.num, - height_in_mm / height.num, + -height_in_mm / height.num, ) .post_translate(math::vector(0.0, height_in_mm)), ); diff --git a/src/turtle.rs b/src/turtle.rs index 3d4774a..ed3cbf6 100644 --- a/src/turtle.rs +++ b/src/turtle.rs @@ -330,8 +330,8 @@ impl Turtle { } pub fn set_scaling(&mut self, scaling: Transform2D) { - if let Some(ref scaling) = self.scaling { - self.curtran = self.curtran.post_mul(&scaling.inverse().unwrap()); + if let Some(ref old_scaling) = self.scaling { + self.curtran = self.curtran.post_mul(&old_scaling.inverse().unwrap()); } self.scaling = Some(scaling); self.curtran = self @@ -342,12 +342,13 @@ impl Turtle { pub fn push_transform(&mut self, trans: Transform2D) { self.transtack.push(self.curtran); if let Some(ref scaling) = self.scaling { - println!("{:?}", trans); self.curtran = self .curtran .post_mul(&scaling.inverse().unwrap()) - .post_mul(&trans) - .post_mul(&scaling); + .pre_mul(&trans) + .post_mul(&scaling); + } else { + self.curtran = self.curtran.post_mul(&trans); } }