1use serde::{Deserialize, Serialize};
7
8#[derive(Debug, Copy, Clone, Eq, PartialEq, Hash, Serialize, Deserialize)]
12pub enum Colormap {
13 Turbo,
15 Viridis,
17 Inferno,
19}
20
21impl Colormap {
22 pub fn colormap_as_slice(&self) -> &[u8] {
28 match self {
29 Colormap::Turbo => &crate::colormap::turbo::COLORMAP,
30 Colormap::Viridis => &crate::colormap::viridis::COLORMAP,
31 Colormap::Inferno => &crate::colormap::inferno::COLORMAP,
32 }
33 }
34}
35
36impl std::str::FromStr for Colormap {
37 type Err = ();
38
39 fn from_str(s: &str) -> Result<Colormap, ()> {
40 Ok(match s {
41 "Turbo" => Colormap::Turbo,
42 "Viridis" => Colormap::Viridis,
43 "Inferno" => Colormap::Inferno,
44 _ => return Err(()),
45 })
46 }
47}
48
49impl std::fmt::Display for Colormap {
50 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> Result<(), std::fmt::Error> {
51 write!(
52 f,
53 "{}",
54 match self {
55 Colormap::Turbo => "Turbo",
56 Colormap::Viridis => "Viridis",
57 Colormap::Inferno => "Inferno",
58 }
59 )
60 }
61}