pub use crate::callback::DeviationCallback;
#[derive(Debug, Default)]
pub enum DeviationModel {
#[default]
Default,
Callback(DeviationCallback),
}
impl From<&DeviationModel> for audionimbus_sys::IPLDeviationModel {
fn from(deviation_model: &DeviationModel) -> Self {
let (type_, callback, user_data) = match deviation_model {
DeviationModel::Default => (
audionimbus_sys::IPLDeviationModelType::IPL_DEVIATIONTYPE_DEFAULT,
None,
std::ptr::null_mut(),
),
DeviationModel::Callback(callback) => {
let (callback_fn, user_data) = callback.as_raw_parts();
(
audionimbus_sys::IPLDeviationModelType::IPL_DEVIATIONTYPE_CALLBACK,
Some(callback_fn),
user_data,
)
}
};
Self {
type_,
callback,
userData: user_data,
}
}
}