after_effects/pf/
external_dependencies.rs

1use crate::*;
2
3define_struct_wrapper!(ExternalDependenciesExtra, PF_ExtDependenciesExtra);
4
5impl ExternalDependenciesExtra {
6    pub fn check_type(&self) -> DepCheckType {
7        unsafe { (*self.0).check_type.into() }
8    }
9
10    pub fn set_dependencies_str(&mut self, text: &str) -> Result<(), Error> {
11        let suite = pf::suites::Handle::new()?;
12        let text = std::ffi::CString::new(text).unwrap();
13        let text = text.as_bytes_with_nul();
14        let handle = suite.new_handle(text.len() as _);
15        let ptr = suite.lock_handle(handle);
16        unsafe {
17            std::ptr::copy_nonoverlapping(text.as_ptr(), ptr as *mut u8, text.len());
18            (*self.0).dependencies_strH = handle;
19        }
20        suite.unlock_handle(handle);
21        Ok(())
22    }
23
24    pub fn set_dependencies_data(&mut self, data: Vec<u8>) -> Result<(), Error> {
25        let suite = pf::suites::Handle::new()?;
26        let handle = suite.new_handle(data.len() as _);
27        let ptr = suite.lock_handle(handle);
28        unsafe {
29            std::ptr::copy_nonoverlapping(data.as_ptr(), ptr as *mut u8, data.len());
30            (*self.0).dependencies_strH = handle;
31        }
32        suite.unlock_handle(handle);
33        Ok(())
34    }
35}
36
37impl std::fmt::Debug for ExternalDependenciesExtra {
38    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
39        let mut dbg = f.debug_struct("ExternalDependenciesExtra");
40        dbg.field("check_type", &self.check_type());
41        dbg.finish()
42    }
43}
44
45define_enum! {
46    ae_sys::PF_DepCheckType,
47    DepCheckType {
48        None                = ae_sys::PF_DepCheckType_NONE,
49        AllDependencies     = ae_sys::PF_DepCheckType_ALL_DEPENDENCIES,
50        MissingDependencies = ae_sys::PF_DepCheckType_MISSING_DEPENDENCIES,
51    }
52}