use crate::demosaic::BayerResult;
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub enum ColorFilterArray {
Bggr,
Gbrg,
Grbg,
Rggb,
}
pub trait BayerRead<T> {
fn read_row(&self, r: &[T], dst: &mut [T]) -> BayerResult<()>;
}
impl ColorFilterArray {
pub fn next_x(self) -> Self {
match self {
ColorFilterArray::Bggr => ColorFilterArray::Gbrg,
ColorFilterArray::Gbrg => ColorFilterArray::Bggr,
ColorFilterArray::Grbg => ColorFilterArray::Rggb,
ColorFilterArray::Rggb => ColorFilterArray::Grbg,
}
}
pub fn next_y(self) -> Self {
match self {
ColorFilterArray::Bggr => ColorFilterArray::Grbg,
ColorFilterArray::Gbrg => ColorFilterArray::Rggb,
ColorFilterArray::Grbg => ColorFilterArray::Bggr,
ColorFilterArray::Rggb => ColorFilterArray::Gbrg,
}
}
}