1use rayon::prelude::*;
2use sar_core::renderer::draw::Drawer;
3
4fn main() {
5 let current_dir = std::env::current_dir().unwrap();
6 let examples_dir = current_dir.join("fixture");
7 let target_dir = current_dir.join("sar-core").join("examples").join("result");
8
9 let files = std::fs::read_dir(&examples_dir).unwrap();
10 let drawer = sar_core::SymbolArtDrawer::new();
11 files.par_bridge().for_each(|file| {
12 let file = match file {
13 Ok(file) => file,
14 Err(_) => return,
15 };
16 if file.path().is_dir() || file.path().extension().unwrap() != "sar" {
17 return;
18 }
19
20 let buff = std::fs::read(file.path()).unwrap();
21 let sar = match sar_core::parse(buff) {
22 Ok(sar) => sar,
23 Err(e) => {
24 println!(
25 "Error parsing {}: {}",
26 file.file_name().to_str().unwrap(),
27 e
28 );
29 return;
30 }
31 };
32
33 let image = match drawer.draw(&sar) {
34 Ok(image) => image,
35 Err(e) => {
36 println!("Error drawing {}: {}", file.path().display(), e);
37 return;
38 }
39 };
40 image
41 .save(target_dir.join(format!("{}.png", file.file_name().to_str().unwrap())))
42 .unwrap();
43 println!(
44 "Saved to {}",
45 target_dir
46 .join(format!("{}.png", file.file_name().to_str().unwrap()))
47 .display()
48 );
49 })
50}