embedded_ui/
align.rs

1use crate::size::Size;
2
3#[derive(Clone, Copy)]
4pub enum Axis {
5    X,
6    Y,
7}
8
9impl Axis {
10    pub fn canon<T>(&self, main: T, anti: T) -> (T, T) {
11        match self {
12            Axis::X => (main, anti),
13            Axis::Y => (anti, main),
14        }
15    }
16
17    pub fn size_main<T>(&self, size: Size<T>) -> T {
18        match self {
19            Axis::X => size.width,
20            Axis::Y => size.height,
21        }
22    }
23
24    pub fn size_anti<T>(&self, size: Size<T>) -> T {
25        match self {
26            Axis::X => size.height,
27            Axis::Y => size.width,
28        }
29    }
30
31    pub fn invert(self) -> Self {
32        match self {
33            Axis::X => Axis::Y,
34            Axis::Y => Axis::X,
35        }
36    }
37}
38
39#[derive(Clone, Copy)]
40pub enum Alignment {
41    Start,
42    Center,
43    End,
44}
45
46#[derive(Clone, Copy)]
47pub enum HorizontalAlign {
48    Left,
49    Center,
50    Right,
51}
52
53impl Into<embedded_graphics::text::Alignment> for HorizontalAlign {
54    fn into(self) -> embedded_graphics::text::Alignment {
55        match self {
56            Self::Left => embedded_graphics::text::Alignment::Left,
57            Self::Center => embedded_graphics::text::Alignment::Center,
58            Self::Right => embedded_graphics::text::Alignment::Right,
59        }
60    }
61}
62
63impl Into<embedded_text::alignment::HorizontalAlignment> for HorizontalAlign {
64    fn into(self) -> embedded_text::alignment::HorizontalAlignment {
65        match self {
66            Self::Left => embedded_text::alignment::HorizontalAlignment::Left,
67            Self::Center => embedded_text::alignment::HorizontalAlignment::Center,
68            Self::Right => embedded_text::alignment::HorizontalAlignment::Right,
69        }
70    }
71}
72
73#[derive(Clone, Copy)]
74pub enum VerticalAlign {
75    Top,
76    Center,
77    Bottom,
78}
79
80impl Into<embedded_text::alignment::VerticalAlignment> for VerticalAlign {
81    fn into(self) -> embedded_text::alignment::VerticalAlignment {
82        match self {
83            VerticalAlign::Top => embedded_text::alignment::VerticalAlignment::Top,
84            VerticalAlign::Center => embedded_text::alignment::VerticalAlignment::Middle,
85            VerticalAlign::Bottom => embedded_text::alignment::VerticalAlignment::Bottom,
86        }
87    }
88}