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