#![feature(conservative_impl_trait)]
#![warn(missing_docs)]
extern crate clamp;
extern crate rayon;
mod formats;
mod function;
mod chunky;
mod transforms;
pub use self::formats::*;
pub use self::transforms::*;
pub use self::chunky::*;
pub use self::function::*;
use std::ops::Deref;
pub trait Image {
type Pixel;
fn width(&self) -> usize;
fn height(&self) -> usize;
unsafe fn pixel(&self, x: usize, y: usize) -> Self::Pixel;
}
impl<T, U> Image for U
where
U: Deref<Target = T> + ?Sized,
T: Image + ?Sized
{
type Pixel = T::Pixel;
fn width(&self) -> usize { self.deref().width() }
fn height(&self) -> usize { self.deref().height() }
unsafe fn pixel(&self, x: usize, y: usize) -> Self::Pixel {
self.deref().pixel(x, y)
}
}