use chromatic::Colour;
use ndarray::Array2;
use num_traits::Float;
use std::{
io::{Read, Write},
path::Path,
};
use crate::PngError;
mod array2;
pub trait Image<C, T, const N: usize>
where
C: Colour<T, N> + Clone,
T: Float + Send + Sync,
{
fn load<P: AsRef<Path>>(path: P) -> Result<Array2<C>, PngError>;
fn read<R: Read>(reader: R) -> Result<Array2<C>, PngError>;
fn save<P: AsRef<Path>>(&self, path: P) -> Result<(), PngError>;
fn write<W: Write>(&self, writer: W) -> Result<(), PngError>;
}