Skip to content

rust bindings to Verovio

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE2
MIT
LICENSE-MIT
Notifications You must be signed in to change notification settings

mockersf/rustovio

Repository files navigation

Rustovio

CI docs crates.io

Rust bindings to Verovio. It offer the raw bindings and a limited wrapper.

Limitations

This currrently does not work on Windows, mostly because I don't have one to check how to do the setup.

To use this library, you need to have a C++ runtime available for dynamic linking.

Wrapper

let mut tk = VerovioToolkit::new("verovio/data").unwrap();
tk.load_data_from_file(filename);
println!("{}", tk.render_to_svg(1).unwrap());

Bindings

let data = fs::read_to_string(filename).expect("Something went wrong reading the file");
let cdata = CString::new(data).unwrap();

let resource_folder = CString::new("verovio/data").unwrap();

let svg_str = unsafe {
    let tk = bindings::vrvToolkit_constructorResourcePath(resource_folder.as_ptr());
    bindings::vrvToolkit_loadData(tk, cdata.as_ptr());
    let svg = bindings::vrvToolkit_renderToSVG(tk, 1, std::ptr::null::<i8>());
    CStr::from_ptr(svg)
};
println!("{}", svg_str.to_str().unwrap());