From 5e8c20e78cb0a90cdde1766f35534125774379ed Mon Sep 17 00:00:00 2001 From: Emmanuel Gil Peyrot Date: Thu, 11 Jun 2020 13:22:49 +0200 Subject: [PATCH] Expose creating a resource loader from a path to C --- c/src/lib.rs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/c/src/lib.rs b/c/src/lib.rs index d1fd1754..a3fa811f 100644 --- a/c/src/lib.rs +++ b/c/src/lib.rs @@ -35,6 +35,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; @@ -487,6 +488,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| {