diff --git a/c/src/lib.rs b/c/src/lib.rs index 4c65a40b..83c3a98a 100644 --- a/c/src/lib.rs +++ b/c/src/lib.rs @@ -34,6 +34,7 @@ use pathfinder_renderer::scene::Scene; use pathfinder_simd::default::F32x4; use std::ffi::CString; use std::os::raw::{c_char, c_void}; +use std::path::PathBuf; use std::slice; use std::str; @@ -488,6 +489,14 @@ pub unsafe extern "C" fn PFFilesystemResourceLoaderLocate() -> PFResourceLoaderR Box::into_raw(Box::new(ResourceLoaderWrapper(loader as Box))) } +#[no_mangle] +pub unsafe extern "C" fn PFFilesystemResourceLoaderFromPath(path: *const c_char) -> PFResourceLoaderRef { + let string = to_rust_string(&path, 0); + let directory = PathBuf::from(string); + let loader = Box::new(FilesystemResourceLoader { directory }); + Box::into_raw(Box::new(ResourceLoaderWrapper(loader as Box))) +} + #[no_mangle] pub unsafe extern "C" fn PFGLLoadWith(loader: PFGLFunctionLoader, userdata: *mut c_void) { gl::load_with(|name| {