use std::env;
use std::error::Error;
use std::fs;
use std::path::PathBuf;
use verovio::Toolkit;
const SAMPLE_PAE: &str = "\
@start:demo
@clef:G-2
@keysig:xF
@key:
@timesig:4/4
@data:'4G/4-
@end:demo
";
fn main() -> Result<(), Box<dyn Error>> {
let out_dir: PathBuf = env::args()
.nth(1)
.map(PathBuf::from)
.unwrap_or_else(|| env::temp_dir().join("verovio-rs-example"));
fs::create_dir_all(&out_dir)?;
let mut tk = Toolkit::new();
tk.load_data(SAMPLE_PAE)?;
let pages = tk.page_count();
println!(
"verovio {}: rendering {pages} page(s) to {}",
tk.version(),
out_dir.display()
);
let mut svg = String::with_capacity(64 * 1024);
for page in 1..=pages {
tk.render_to_svg_into(page, &mut svg)?;
let path = out_dir.join(format!("page-{page}.svg"));
fs::write(&path, &svg)?;
println!(" wrote {}", path.display());
}
Ok(())
}