ferritin_structure_mesh/
colors.rs1use bevy::color::Srgba;
6use bevy::prelude::Color;
7use ferritin_core::info::elements::Element;
8
9#[derive(Clone)]
11pub enum ColorScheme {
12 Solid(Color),
14 ByAtomType,
16}
17
18#[rustfmt::skip]
20pub fn element_color(element: &Element) -> Srgba {
21 match element {
22 Element::H => Srgba::rgb(1.0, 1.0, 1.0), Element::C => Srgba::rgb(0.5, 0.5, 0.5), Element::N => Srgba::rgb(0.0, 0.0, 1.0), Element::O => Srgba::rgb(1.0, 0.0, 0.0), Element::P => Srgba::rgb(1.0, 0.5, 0.0), Element::S => Srgba::rgb(1.0, 1.0, 0.0), Element::Cl => Srgba::rgb(0.0, 1.0, 0.0), Element::Fe => Srgba::rgb(0.6, 0.0, 0.0), Element::Ca => Srgba::rgb(0.5, 0.5, 0.5), Element::Mg => Srgba::rgb(0.5, 1.0, 0.0), Element::Na => Srgba::rgb(0.0, 0.0, 1.0), Element::K => Srgba::rgb(0.8, 0.6, 1.0), Element::Zn => Srgba::rgb(0.6, 0.6, 0.6), Element::Cu => Srgba::rgb(0.8, 0.4, 0.0), Element::F => Srgba::rgb(0.7, 1.0, 1.0), Element::Br => Srgba::rgb(0.6, 0.1, 0.1), Element::I => Srgba::rgb(0.4, 0.0, 0.7), Element::B => Srgba::rgb(1.0, 0.7, 0.7), Element::Se => Srgba::rgb(1.0, 0.5, 0.0), _ => Srgba::rgb(0.5, 0.5, 0.5), }
44}
45
46#[cfg(test)]
47mod tests {
48 use super::*;
49
50 #[test]
51 fn test_element_colors() {
52 let color = element_color(&Element::H);
53 assert!(color.red > 0.0);
54 }
55}