diff --git a/lib/src/converter/mod.rs b/lib/src/converter/mod.rs index 8514ced..4498106 100644 --- a/lib/src/converter/mod.rs +++ b/lib/src/converter/mod.rs @@ -246,47 +246,31 @@ pub fn svg2program<'a, 'input: 'a>( options: ConversionOptions, machine: Machine<'input>, ) -> Vec> { - let mut origin_transform = Transform2D::identity(); - loop { - let bounding_box = { - let mut visitor = ConversionVisitor { - terrarium: Terrarium::new(PreprocessTurtle::default()), - config, - options: options.clone(), - name_stack: vec![], - }; - - visitor.terrarium.push_transform(origin_transform); - visitor.begin(); - visit::depth_first_visit(doc, &mut visitor); - visitor.end(); - visitor.terrarium.pop_transform(); - - visitor.terrarium.turtle.bounding_box + let bounding_box = { + let mut visitor = ConversionVisitor { + terrarium: Terrarium::new(PreprocessTurtle::default()), + config, + options: options.clone(), + name_stack: vec![], }; - if (!bounding_box.min.x.is_sign_negative() && !bounding_box.min.y.is_sign_negative()) - || bounding_box - .min - .to_vector() - .abs() - .lower_than(vector(std::f64::EPSILON, std::f64::EPSILON)) - .all() - { - break; - } + visitor.begin(); + visit::depth_first_visit(doc, &mut visitor); + visitor.end(); - origin_transform = origin_transform.then(&{ - let mut transform = Transform2D::identity(); - if let Some(origin_x) = config.origin[0] { - transform = transform.then_translate(vector(origin_x - bounding_box.min.x, 0.)); - } - if let Some(origin_y) = config.origin[1] { - transform = transform.then_translate(vector(0., origin_y - bounding_box.min.y)); - } - transform - }); - } + visitor.terrarium.turtle.bounding_box + }; + + let origin_transform = { + let mut transform = Transform2D::identity(); + if let Some(origin_x) = config.origin[0] { + transform = transform.then_translate(vector(origin_x - bounding_box.min.x, 0.)); + } + if let Some(origin_y) = config.origin[1] { + transform = transform.then_translate(vector(0., origin_y - bounding_box.min.y)); + } + transform + }; let mut conversion_visitor = ConversionVisitor { terrarium: Terrarium::new(GCodeTurtle {