#[macro_export]
macro_rules! record {
($path:expr, $frames:expr, $closure:expr) => {
$crate::animation::_record_frames($path, $frames, $closure)
};
($path:expr, $duration:tt secs, $closure:expr) => {
$crate::animation::_record_duration($path, $duration as f64, $closure)
};
($path:expr, $duration:tt ms, $closure:expr) => {
$crate::animation::_record_duration($path, ($duration as f64) / 1000.0, $closure)
};
($path:expr, $duration:tt secs @ $fps:tt fps, $closure:expr) => {
$crate::animation::_record_duration_fps($path, $duration as f64, $fps, $closure)
};
($path:expr, $frames:expr, config: $config:expr, $closure:expr) => {
$crate::animation::_record_frames_config($path, $frames, $config, $closure)
};
($path:expr, $duration:tt secs, config: $config:expr, $closure:expr) => {{
let cfg: $crate::animation::RecordConfig = $config;
let frames = ($duration as f64 * cfg.framerate as f64).ceil() as usize;
$crate::animation::_record_frames_config($path, frames, cfg, $closure)
}};
($path:expr, & $plot:expr, $duration:tt secs) => {
$crate::animation::_record_reactive($path, &$plot, $duration as f64, 30)
};
($path:expr, & $plot:expr, $duration:tt secs @ $fps:tt fps) => {
$crate::animation::_record_reactive($path, &$plot, $duration as f64, $fps)
};
($path:expr, & $plot:expr, $duration:tt secs, config: $config:expr) => {
$crate::animation::_record_reactive_config($path, &$plot, $duration as f64, $config)
};
}
#[cfg(test)]
mod tests {
#[allow(unused)]
use crate::animation::*;
#[test]
fn test_internal_functions_accessible() {
fn assert_reactive_exists<P: AsRef<std::path::Path>>() {
let _ = _record_reactive::<P>
as fn(P, &crate::core::Plot, f64, u32) -> crate::core::Result<()>;
let _ = _record_reactive_config::<P>
as fn(P, &crate::core::Plot, f64, RecordConfig) -> crate::core::Result<()>;
}
assert_reactive_exists::<&str>();
}
}