|
@@ -17,6 +17,10 @@ struct Cli {
|
|
|
#[arg(short, long)]
|
|
|
input: PathBuf,
|
|
|
|
|
|
+ /// File to diff input against
|
|
|
+ #[arg(short, long)]
|
|
|
+ diff: Option<PathBuf>,
|
|
|
+
|
|
|
/// Output file to write to
|
|
|
#[arg(short, long)]
|
|
|
output: Option<PathBuf>,
|
|
@@ -41,17 +45,12 @@ fn main() {
|
|
|
let mut input: File = File::open(cli.input).expect("Failed to open input file");
|
|
|
|
|
|
let time: Instant = Instant::now();
|
|
|
- let mut file: EzCadHeader =
|
|
|
+ let mut input_file: EzCadHeader =
|
|
|
EzCadHeader::read_le(&mut input).expect("Failed to parse input file as EZCAD format");
|
|
|
info!("Input decode time: {:?}", time.elapsed());
|
|
|
|
|
|
- let pen_0 = file.pens_offset.data.pens.get(0).unwrap();
|
|
|
- let pen_1 = file.pens_offset.data.pens.get(1).unwrap();
|
|
|
- info!("{:#?}", pen_0.diff(pen_1));
|
|
|
- // info!("{:?}", diff.color.value.);
|
|
|
-
|
|
|
// Print info on pens with non-default settings
|
|
|
- for pen in file
|
|
|
+ for pen in input_file
|
|
|
.pens_offset
|
|
|
.data
|
|
|
.pens
|
|
@@ -62,26 +61,35 @@ fn main() {
|
|
|
}
|
|
|
|
|
|
// Print all objects
|
|
|
- for layer in file.layers_offset.iter() {
|
|
|
+ for layer in input_file.layers_offset.iter() {
|
|
|
for object in layer.objects.iter() {
|
|
|
trace!("{:#?}", object);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ if let Some(diff) = cli.diff {
|
|
|
+ info!("Processing diff file {}", diff.to_string_lossy());
|
|
|
+ let mut diff: File = File::open(diff).expect("Failed to open diff file");
|
|
|
+ let diff_file: EzCadHeader =
|
|
|
+ EzCadHeader::read_le(&mut diff).expect("Failed to parse diff file as EZCAD format");
|
|
|
+
|
|
|
+ info!("{:#?}", input_file.pens_offset.data.pens.diff(&diff_file.pens_offset.data.pens));
|
|
|
+ }
|
|
|
+
|
|
|
if let Some(config) = cli.config {
|
|
|
info!("Processing config file {}", config.to_string_lossy());
|
|
|
let config: String = std::fs::read_to_string(config).expect("Failed to open config file");
|
|
|
let config: Config = serde_yaml::from_str(&config).expect("Failed to parse config file");
|
|
|
|
|
|
// Patch pen settings
|
|
|
- config.ops.apply(&mut file.pens_offset.data.pens);
|
|
|
+ config.ops.apply(&mut input_file.pens_offset.data.pens);
|
|
|
}
|
|
|
|
|
|
if let Some(output) = cli.output {
|
|
|
let mut output = File::create(output).expect("Failed to open output file");
|
|
|
let time: Instant = Instant::now();
|
|
|
output
|
|
|
- .write_le(&file)
|
|
|
+ .write_le(&input_file)
|
|
|
.expect("Failed to serialize contents in EZCAD format");
|
|
|
info!("Output encode time: {:?}", time.elapsed());
|
|
|
}
|