#[derive(Clone, Copy, Debug, Default, PartialEq, Eq, Hash)]
pub struct ContainerColour {
pub primaries: Option<u8>,
pub transfer: Option<u8>,
pub matrix: Option<u8>,
pub full_range: Option<bool>,
}
impl ContainerColour {
pub const fn is_empty(&self) -> bool {
self.primaries.is_none()
&& self.transfer.is_none()
&& self.matrix.is_none()
&& self.full_range.is_none()
}
#[cfg_attr(not(feature = "mkv"), allow(dead_code))]
pub(crate) const fn non_empty(self) -> Option<Self> {
if self.is_empty() { None } else { Some(self) }
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn default_is_empty_and_filtered() {
assert!(ContainerColour::default().is_empty());
assert_eq!(ContainerColour::default().non_empty(), None);
let tagged = ContainerColour {
full_range: Some(false),
..ContainerColour::default()
};
assert!(!tagged.is_empty());
assert_eq!(tagged.non_empty(), Some(tagged));
}
}