extensions_rs/types/
image.rs

1//! Images
2use enum_iterator::{all, Sequence};
3
4#[derive(Debug, Copy, Clone, PartialEq, PartialOrd, Hash, Eq, Ord, Sequence)]
5pub enum Image {
6    Ext3DM,
7    Ext3DS,
8    ExtAI,
9    ExtBMP,
10    ExtDDS,
11    ExtDWG,
12    ExtDXF,
13    ExtEPS,
14    ExtGIF,
15    ExtGPX,
16    ExtJPG,
17    ExtJPEG,
18    ExtKML,
19    ExtKMZ,
20    ExtMAX,
21    ExtPNG,
22    ExtPS,
23    ExtPSD,
24    ExtSVG,
25    ExtTGA,
26    ExtTHM,
27    ExtTIF,
28    ExtTIFF,
29    ExtWEBP,
30    ExtXCF,
31    ExtYUV,
32    None,
33}
34
35impl Image {
36    pub async fn contains(item: &str) -> bool {
37        all::<Image>().any(|_| Image::from(item) != Image::None)
38    }
39}
40
41impl From<&str> for Image {
42    fn from(s: &str) -> Self {
43        match s {
44            "3dm" => Self::Ext3DM,
45            "3ds" => Self::Ext3DS,
46            "ai" => Self::ExtAI,
47            "bmp" => Self::ExtBMP,
48            "dds" => Self::ExtDDS,
49            "dwg" => Self::ExtDWG,
50            "dxf" => Self::ExtDXF,
51            "eps" => Self::ExtEPS,
52            "gif" => Self::ExtGIF,
53            "gpx" => Self::ExtGPX,
54            "jpg" => Self::ExtJPG,
55            "jpeg" => Self::ExtJPEG,
56            "kml" => Self::ExtKML,
57            "kmz" => Self::ExtKMZ,
58            "max" => Self::ExtMAX,
59            "png" => Self::ExtPNG,
60            "ps" => Self::ExtPS,
61            "psd" => Self::ExtPSD,
62            "svg" => Self::ExtSVG,
63            "tga" => Self::ExtTGA,
64            "thm" => Self::ExtTHM,
65            "tif" => Self::ExtTIF,
66            "tiff" => Self::ExtTIFF,
67            "webp" => Self::ExtWEBP,
68            "xcf" => Self::ExtXCF,
69            "yuv" => Self::ExtYUV,
70            _ => Self::None,
71        }
72    }
73}
74
75#[cfg(test)]
76mod tests {
77    use super::*;
78
79    #[test]
80    fn test_image_from_str() {
81        assert_eq!(Image::Ext3DM, Image::from("3dm"));
82        assert_eq!(Image::Ext3DS, Image::from("3ds"));
83        assert_eq!(Image::ExtAI, Image::from("ai"));
84        assert_eq!(Image::ExtBMP, Image::from("bmp"));
85        assert_eq!(Image::ExtDDS, Image::from("dds"));
86        assert_eq!(Image::ExtDWG, Image::from("dwg"));
87        assert_eq!(Image::ExtDXF, Image::from("dxf"));
88        assert_eq!(Image::ExtEPS, Image::from("eps"));
89        assert_eq!(Image::ExtGIF, Image::from("gif"));
90        assert_eq!(Image::ExtGPX, Image::from("gpx"));
91        assert_eq!(Image::ExtJPG, Image::from("jpg"));
92        assert_eq!(Image::ExtJPEG, Image::from("jpeg"));
93        assert_eq!(Image::ExtKML, Image::from("kml"));
94        assert_eq!(Image::ExtKMZ, Image::from("kmz"));
95        assert_eq!(Image::ExtMAX, Image::from("max"));
96        assert_eq!(Image::ExtPNG, Image::from("png"));
97        assert_eq!(Image::ExtPS, Image::from("ps"));
98        assert_eq!(Image::ExtPSD, Image::from("psd"));
99        assert_eq!(Image::ExtSVG, Image::from("svg"));
100        assert_eq!(Image::ExtTGA, Image::from("tga"));
101        assert_eq!(Image::ExtTHM, Image::from("thm"));
102        assert_eq!(Image::ExtTIF, Image::from("tif"));
103        assert_eq!(Image::ExtTIFF, Image::from("tiff"));
104        assert_eq!(Image::ExtWEBP, Image::from("webp"));
105        assert_eq!(Image::ExtXCF, Image::from("xcf"));
106        assert_eq!(Image::ExtYUV, Image::from("yuv"));
107        assert_eq!(Image::None, Image::from(""));
108    }
109}