css_ast/units/
resolution.rs1use super::prelude::*;
2
3#[derive(ToCursors, Parse, Peek, IntoCursor, Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
12#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
13pub enum Resolution {
14 #[atom(CssAtomSet::Dpi)]
15 Dpi(T![Dimension]),
16 #[atom(CssAtomSet::Dpcm)]
17 Dpcm(T![Dimension]),
18 #[atom(CssAtomSet::Dppx)]
19 Dppx(T![Dimension]),
20 #[atom(CssAtomSet::X)]
21 X(T![Dimension]),
22}
23
24impl From<Resolution> for f32 {
25 fn from(res: Resolution) -> Self {
26 match res {
27 Resolution::Dpi(r) => r.into(),
28 Resolution::Dpcm(r) => r.into(),
29 Resolution::Dppx(r) => r.into(),
30 Resolution::X(r) => r.into(),
31 }
32 }
33}
34
35#[cfg(test)]
36mod tests {
37 use super::*;
38 use crate::CssAtomSet;
39 use css_parse::assert_parse;
40
41 #[test]
42 fn size_test() {
43 assert_eq!(std::mem::size_of::<Resolution>(), 16);
44 }
45
46 #[test]
47 fn test_writes() {
48 assert_parse!(CssAtomSet::ATOMS, Resolution, "1dppx");
49 assert_parse!(CssAtomSet::ATOMS, Resolution, "1x");
50 }
51}