use num_enum::TryFromPrimitive;
pub mod buffer;
pub mod device;
pub mod filter;
#[allow(non_upper_case_globals, non_camel_case_types, non_snake_case)]
pub mod sys;
#[cfg(test)]
mod tests;
#[doc(inline)]
pub use buffer::Buffer;
#[doc(inline)]
pub use device::Device;
#[doc(inline)]
pub use filter::RayTracing;
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq, TryFromPrimitive)]
pub enum Error {
None = sys::OIDNError_OIDN_ERROR_NONE,
Unknown = sys::OIDNError_OIDN_ERROR_UNKNOWN,
InvalidArgument = sys::OIDNError_OIDN_ERROR_INVALID_ARGUMENT,
InvalidOperation = sys::OIDNError_OIDN_ERROR_INVALID_OPERATION,
OutOfMemory = sys::OIDNError_OIDN_ERROR_OUT_OF_MEMORY,
UnsupportedFormat = sys::OIDNError_OIDN_ERROR_UNSUPPORTED_HARDWARE,
Canceled = sys::OIDNError_OIDN_ERROR_CANCELLED,
InvalidImageDimensions,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq, TryFromPrimitive, Default)]
pub enum Quality {
#[default]
Default = sys::OIDNQuality_OIDN_QUALITY_DEFAULT,
Balanced = sys::OIDNQuality_OIDN_QUALITY_BALANCED,
High = sys::OIDNQuality_OIDN_QUALITY_HIGH,
Fast = sys::OIDNQuality_OIDN_QUALITY_FAST,
}
impl Quality {
pub fn as_raw_oidn_quality(&self) -> sys::OIDNQuality {
match self {
Quality::Default => sys::OIDNQuality_OIDN_QUALITY_DEFAULT,
Quality::Balanced => sys::OIDNQuality_OIDN_QUALITY_BALANCED,
Quality::High => sys::OIDNQuality_OIDN_QUALITY_HIGH,
Quality::Fast => sys::OIDNQuality_OIDN_QUALITY_FAST,
}
}
}