#![allow(incomplete_features, mixed_script_confusables, internal_features)]
#![warn(missing_docs)]
#![feature(
maybe_uninit_uninit_array_transpose,
maybe_uninit_write_slice,
generic_const_exprs,
array_try_from_fn,
slice_as_chunks,
const_trait_impl,
core_intrinsics,
slice_flatten,
inline_const,
effects,
test
)]
mod until;
mod decode;
mod encode;
pub use decode::{decode, decode_into};
pub use encode::{encode, size as encoded_size};
pub use Color::*;
#[derive(Copy, Debug, Clone, PartialEq, Eq)]
#[repr(u8)]
pub enum Color {
Y = 1,
YA,
RGB,
RGBA,
}
impl Color {
#[must_use]
pub const fn bpp(self) -> u8 {
self.depth() * 8
}
#[must_use]
pub const fn depth(self) -> u8 {
self as u8
}
}
#[test]
fn encode_decode() {
for elem in std::fs::read_dir("tdata").unwrap().map(Result::unwrap) {
if elem.path().extension().unwrap() == "imgbuf" {
let (dat, c, dim) =
decode(&mut std::fs::File::open(elem.path().with_extension("bmp")).unwrap())
.unwrap();
let mut v = vec![];
encode(c, dim, &dat, &mut v).unwrap();
assert_eq!(decode(&mut &v[..]).unwrap().0, dat);
}
}
}