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}