organicomplex 0.7.0

Interactive complex-valued cellular automaton on 2D and 3D grids in search of that stuff - emergence, open-endedness, organicity etc.
#[derive(Clone, Copy, PartialEq, Eq, Hash, Debug)]
pub struct RGB {
	pub r: u8,
	pub g: u8,
	pub b: u8
}

#[derive(Clone, Copy, PartialEq, Eq, Hash, Debug)]
pub struct ARGB {
	pub a: u8,
	pub r: u8,
	pub g: u8,
	pub b: u8
}

impl RGB {
	#[allow(dead_code)]
	pub fn is_black(&self) -> bool {
		(self.r == 0) && (self.g == 0) && (self.b == 0)
	}

	#[allow(dead_code)]
	pub fn lum(&self) -> u8 {
		((((self.r as u32) + (self.g as u32) + (self.b as u32)) * 21845) >> 0x10) as u8
	}
}

impl From<RGB> for ARGB {
	fn from(color: RGB) -> Self {
		Self{a: 0xFF, r: color.r, g: color.g, b: color.b}
	}
}

impl From<ARGB> for RGB {
	fn from(color: ARGB) -> Self {
		Self{r: color.r, g: color.g, b: color.b}
	}
}