1use std::convert::TryFrom;
2use std::fmt;
3
4#[derive(Debug, Copy, Clone)]
5#[repr(u32)]
6pub enum Colorspace {
11 Default = 0,
13 SMPTE170M = 1,
15 SMPTE240M = 2,
17 Rec709 = 3,
19 NTSC = 5,
22 EBUTech3212 = 6,
24 JPEG = 7,
26 SRGB = 8,
28 OPRGB = 9,
30 Rec2020 = 10,
32 RAW = 11,
34 DCIP3 = 12,
36}
37
38impl fmt::Display for Colorspace {
39 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
40 match self {
41 Self::Default => write!(f, "default"),
42 Self::SMPTE170M => write!(f, "SMPTE 170M"),
43 Self::SMPTE240M => write!(f, "SMPTE 240M"),
44 Self::Rec709 => write!(f, "Rec. 709"),
45 Self::NTSC => write!(f, "NTSC"),
46 Self::EBUTech3212 => write!(f, "EBU Tech 3213"),
47 Self::JPEG => write!(f, "JPEG"),
48 Self::SRGB => write!(f, "sRGB"),
49 Self::OPRGB => write!(f, "opRGB"),
50 Self::Rec2020 => write!(f, "Rec. 2020"),
51 Self::RAW => write!(f, "RAW"),
52 Self::DCIP3 => write!(f, "DCI-P3"),
53 }
54 }
55}
56
57impl TryFrom<u32> for Colorspace {
58 type Error = ();
59
60 fn try_from(code: u32) -> Result<Self, Self::Error> {
61 match code {
62 0 => Ok(Self::Default),
63 1 => Ok(Self::SMPTE170M),
64 2 => Ok(Self::SMPTE240M),
65 3 => Ok(Self::Rec709),
66 5 => Ok(Self::NTSC),
67 6 => Ok(Self::EBUTech3212),
68 7 => Ok(Self::JPEG),
69 8 => Ok(Self::SRGB),
70 9 => Ok(Self::OPRGB),
71 10 => Ok(Self::Rec2020),
72 11 => Ok(Self::RAW),
73 12 => Ok(Self::DCIP3),
74 _ => Err(()),
75 }
76 }
77}