use crate::LutWarehouse;
impl LutWarehouse {
#[cfg(feature = "any_to_any")]
pub(crate) fn is_katana_required(&self) -> bool {
match self {
LutWarehouse::Lut(lut) => {
let input_entries = lut.num_input_channels as usize;
let output_entries = lut.num_output_channels as usize;
for i in 0..input_entries {
if lut.input_table.is_degenerated(input_entries, i) {
return true;
}
if !lut.input_table.is_monotonic(input_entries, i) {
return true;
}
if lut.input_table.have_discontinuities(input_entries, i) {
return true;
}
}
for i in 0..output_entries {
if lut.output_table.is_degenerated(output_entries, i) {
return true;
}
if !lut.output_table.is_monotonic(output_entries, i) {
return true;
}
if lut.output_table.have_discontinuities(output_entries, i) {
return true;
}
}
false
}
LutWarehouse::Multidimensional(mab) => {
for curve in mab.a_curves.iter() {
if curve.is_degenerated() {
return true;
}
if !curve.is_monotonic() {
return true;
}
if curve.have_discontinuities() {
return true;
}
}
for curve in mab.m_curves.iter() {
if curve.is_degenerated() {
return true;
}
if !curve.is_monotonic() {
return true;
}
if curve.have_discontinuities() {
return true;
}
}
for curve in mab.b_curves.iter() {
if curve.is_degenerated() {
return true;
}
if !curve.is_monotonic() {
return true;
}
if curve.have_discontinuities() {
return true;
}
}
false
}
}
}
}