#[allow(unused)]
pub(crate) fn is_curve_linear16(curve: &[u16]) -> bool {
let scale = 1. / (curve.len() - 1) as f32 * 65535.;
for (index, &value) in curve.iter().enumerate() {
let quantized = (index as f32 * scale).round() as u16;
let diff = (quantized as i32 - value as i32).abs();
if diff > 0x0f {
return false;
}
}
true
}
#[cfg(feature = "any_to_any")]
pub(crate) fn is_curve_descending<T: PartialOrd>(v: &[T]) -> bool {
if v.is_empty() {
return false;
}
if v.len() == 1 {
return false;
}
v[0] > v[v.len() - 1]
}
pub(crate) fn is_curve_ascending<T: PartialOrd>(v: &[T]) -> bool {
if v.is_empty() {
return false;
}
if v.len() == 1 {
return false;
}
v[0] < v[v.len() - 1]
}
#[cfg(feature = "any_to_any")]
pub(crate) fn is_curve_linear8(curve: &[u8]) -> bool {
let scale = 1. / (curve.len() - 1) as f32 * 255.;
for (index, &value) in curve.iter().enumerate() {
let quantized = (index as f32 * scale).round() as u16;
let diff = (quantized as i32 - value as i32).abs();
if diff > 0x03 {
return false;
}
}
true
}