Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ resolver = "2"

[workspace.package]
authors = ["Sameer Puri <crates@purisa.me>"]
edition = "2021"
edition = "2024"
repository = "https://github.com/sameer/svg2gcode"
license = "MIT"

Expand Down
15 changes: 10 additions & 5 deletions cli/src/main.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use clap::Parser;
use g_code::{
emit::{format_gcode_io, FormatOptions},
emit::{FormatOptions, format_gcode_io},
parse::snippet_parser,
};
use log::{error, info};
Expand All @@ -14,7 +14,7 @@ use std::{
use svgtypes::LengthListParser;

use svg2gcode::{
svg2program, ConversionOptions, Machine, Settings, SupportedFunctionality, Version,
ConversionOptions, Machine, Settings, SupportedFunctionality, Version, svg2program,
};

#[derive(Debug, Parser)]
Expand Down Expand Up @@ -95,7 +95,8 @@ struct Opt {

fn main() -> io::Result<()> {
if env::var("RUST_LOG").is_err() {
env::set_var("RUST_LOG", "svg2gcode=info")
// SAFETY: calling in a single-threaded context
unsafe { env::set_var("RUST_LOG", "svg2gcode=info") }
}
env_logger::init();

Expand Down Expand Up @@ -266,8 +267,12 @@ fn main() -> io::Result<()> {
.transpose(),
];

let machine = if let [Ok(tool_on_action), Ok(tool_off_action), Ok(program_begin_sequence), Ok(program_end_sequence)] =
snippets
let machine = if let [
Ok(tool_on_action),
Ok(tool_off_action),
Ok(program_begin_sequence),
Ok(program_end_sequence),
] = snippets
{
Machine::new(
settings.machine.supported_functionality,
Expand Down
2 changes: 1 addition & 1 deletion lib/src/arc.rs
Original file line number Diff line number Diff line change
Expand Up @@ -278,7 +278,7 @@ impl<S: Scalar> Transformed<S> for SvgArc<S> {
#[cfg(test)]
mod tests {
use cairo::{Context, SvgSurface};
use lyon_geom::{point, vector, CubicBezierSegment, Point, Vector};
use lyon_geom::{CubicBezierSegment, Point, Vector, point, vector};
use std::path::PathBuf;
use svgtypes::PathParser;

Expand Down
2 changes: 1 addition & 1 deletion lib/src/converter/length_serde.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
//! used for [super::ConversionOptions::dimensions]

use serde::{
Deserialize, Deserializer, Serialize, Serializer,
de::{SeqAccess, Visitor},
ser::SerializeSeq,
Deserialize, Deserializer, Serialize, Serializer,
};
use svgtypes::{Length, LengthUnit};

Expand Down
2 changes: 1 addition & 1 deletion lib/src/converter/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ use uom::si::f64::Length as UomLength;
use uom::si::length::{inch, millimeter};

use self::units::CSS_DEFAULT_DPI;
use crate::{turtle::*, Machine};
use crate::{Machine, turtle::*};

#[cfg(feature = "serde")]
mod length_serde;
Expand Down
2 changes: 1 addition & 1 deletion lib/src/converter/path.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use euclid::Angle;
use log::debug;
use lyon_geom::{point, vector, ArcFlags};
use lyon_geom::{ArcFlags, point, vector};
use svgtypes::PathSegment;

use crate::Turtle;
Expand Down
2 changes: 1 addition & 1 deletion lib/src/converter/transform.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use euclid::{
default::{Transform2D, Transform3D},
Angle,
default::{Transform2D, Transform3D},
};
use lyon_geom::vector;
use svgtypes::{Align, AspectRatio, TransformListToken, ViewBox};
Expand Down
4 changes: 2 additions & 2 deletions lib/src/converter/visit.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,12 @@ use roxmltree::{Document, Node};
use svgtypes::{AspectRatio, PathParser, PathSegment, PointsParser, TransformListParser, ViewBox};

use super::{
ConversionVisitor,
path::apply_path,
transform::{get_viewport_transform, svg_transform_into_euclid_transform},
units::DimensionHint,
ConversionVisitor,
};
use crate::{converter::node_name, Turtle};
use crate::{Turtle, converter::node_name};

const SVG_TAG_NAME: &str = "svg";
const CLIP_PATH_TAG_NAME: &str = "clipPath";
Expand Down
2 changes: 1 addition & 1 deletion lib/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ mod postprocess;
/// This concept is referred to as [Turtle graphics](https://en.wikipedia.org/wiki/Turtle_graphics).
mod turtle;

pub use converter::{svg2program, ConversionConfig, ConversionOptions};
pub use converter::{ConversionConfig, ConversionOptions, svg2program};
pub use machine::{Machine, MachineConfig, SupportedFunctionality};
pub use postprocess::PostprocessConfig;
pub use turtle::Turtle;
Expand Down
2 changes: 1 addition & 1 deletion lib/src/turtle/dpi.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use std::fmt::Debug;

use lyon_geom::{point, vector, CubicBezierSegment, Point, QuadraticBezierSegment, SvgArc, Vector};
use lyon_geom::{CubicBezierSegment, Point, QuadraticBezierSegment, SvgArc, Vector, point, vector};
use uom::si::{
f64::Length,
length::{inch, millimeter},
Expand Down
5 changes: 3 additions & 2 deletions lib/src/turtle/mod.rs
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
use std::fmt::Debug;

use lyon_geom::{
euclid::{default::Transform2D, Angle},
point, vector, ArcFlags, CubicBezierSegment, Point, QuadraticBezierSegment, SvgArc, Vector,
ArcFlags, CubicBezierSegment, Point, QuadraticBezierSegment, SvgArc, Vector,
euclid::{Angle, default::Transform2D},
point, vector,
};

use crate::arc::Transformed;
Expand Down
2 changes: 1 addition & 1 deletion web/src/forms/editors.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
use codespan_reporting::term::{emit, termcolor::NoColor, Config};
use codespan_reporting::term::{Config, emit, termcolor::NoColor};
use g_code::parse::{into_diagnostic, snippet_parser};
use gloo_timers::callback::Timeout;
use paste::paste;
Expand Down
4 changes: 2 additions & 2 deletions web/src/forms/mod.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
use gloo_file::{
callbacks::{read_as_bytes, FileReader},
callbacks::{FileReader, read_as_bytes},
futures::read_as_text,
};
use js_sys::TypeError;
Expand All @@ -8,7 +8,7 @@ use std::{convert::TryInto, path::Path};
use svg2gcode::{Settings, Version};
use wasm_bindgen::JsCast;
use wasm_bindgen_futures::JsFuture;
use web_sys::{window, Event, FileList, HtmlElement, HtmlInputElement, Response};
use web_sys::{Event, FileList, HtmlElement, HtmlInputElement, Response, window};
use yew::prelude::*;
use yewdux::{functional::use_store, use_dispatch};

Expand Down
8 changes: 4 additions & 4 deletions web/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,13 @@ use std::{

use base64::Engine;
use g_code::{
emit::{format_gcode_fmt, format_gcode_io, FormatOptions},
emit::{FormatOptions, format_gcode_fmt, format_gcode_io},
parse::snippet_parser,
};
use js_sys::Date;
use log::Level;
use roxmltree::{Document, ParsingOptions};
use svg2gcode::{svg2program, ConversionOptions, Machine};
use svg2gcode::{ConversionOptions, Machine, svg2program};
use yew::prelude::*;

mod forms;
Expand All @@ -23,8 +23,8 @@ use forms::*;
use state::*;
use ui::*;
use util::*;
use yewdux::{prelude::use_store, use_dispatch, YewduxRoot};
use zip::{write::FileOptions, CompressionMethod, ZipWriter};
use yewdux::{YewduxRoot, prelude::use_store, use_dispatch};
use zip::{CompressionMethod, ZipWriter, write::FileOptions};

#[function_component(App)]
fn app() -> Html {
Expand Down
10 changes: 5 additions & 5 deletions web/src/ui/mod.rs
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
use std::fmt::Display;
use web_sys::{Event, FileList, HtmlInputElement, InputEvent, InputEventInit, MouseEvent};
use yew::{
classes, function_component, html, use_force_update, use_node_ref, use_state,
AttrValue, Callback, Children, Html, NodeRef, Properties, TargetCast, ToHtml, classes,
function_component, html, use_force_update, use_node_ref, use_state,
virtual_dom::{VChild, VNode},
AttrValue, Callback, Children, Html, NodeRef, Properties, TargetCast, ToHtml,
};

macro_rules! css_class_enum {
Expand Down Expand Up @@ -151,7 +151,7 @@ where
{ props.button.clone().map(Html::from).unwrap_or_default() }
</div>
{
if let Some(Err(ref err)) = props.parsed.as_ref() {
if let Some(Err(err)) = props.parsed.as_ref() {
html!{ <pre class="form-input-hint">{ err.to_string() }</pre> }
} else if let Some(desc) = props.desc {
html! { <p class="form-input-hint">{ desc }</p> }
Expand Down Expand Up @@ -249,7 +249,7 @@ where
{ props.button.clone().map(Html::from).unwrap_or_default() }
</div>
{
if let Some(Err(ref err)) = props.parsed.as_ref() {
if let Some(Err(err)) = props.parsed.as_ref() {
html!{ <pre class="form-input-hint">{ err }</pre> }
} else if let Some(desc) = props.desc {
html! { <p class="form-input-hint">{ desc }</p> }
Expand Down Expand Up @@ -433,7 +433,7 @@ where
}
</div>
{
if let Some(Err(ref err)) = props.parsed.as_ref() {
if let Some(Err(err)) = props.parsed.as_ref() {
html!{ <pre class="form-input-hint">{ err }</pre> }
} else if let Some(desc) = props.desc {
html! { <p class="form-input-hint">{ desc }</p> }
Expand Down
2 changes: 1 addition & 1 deletion web/src/util.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
use base64::Engine;
use std::path::Path;
use wasm_bindgen::JsCast;
use web_sys::{window, HtmlElement};
use web_sys::{HtmlElement, window};

pub fn prompt_download(path: impl AsRef<Path>, content: impl AsRef<[u8]>) {
let window = window().unwrap();
Expand Down