From a0ad3996225601aaa1ebe051cba115374b55c80e Mon Sep 17 00:00:00 2001
From: Héctor Ramón Jiménez <hector0193@gmail.com>
Date: Mon, 20 Sep 2021 15:09:55 +0700
Subject: Refactor alignment types into an `alignment` module

---
 core/src/alignment.rs | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 63 insertions(+)
 create mode 100644 core/src/alignment.rs

(limited to 'core/src/alignment.rs')

diff --git a/core/src/alignment.rs b/core/src/alignment.rs
new file mode 100644
index 00000000..8c561d9d
--- /dev/null
+++ b/core/src/alignment.rs
@@ -0,0 +1,63 @@
+//! Align and position widgets.
+
+/// Alignment on the axis of a container.
+#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
+pub enum Alignment {
+    /// Align at the start of the axis.
+    Start,
+
+    /// Align at the center of the axis.
+    Center,
+
+    /// Align at the end of the axis.
+    End,
+
+    /// Fill the entire axis.
+    Fill,
+}
+
+impl From<Horizontal> for Alignment {
+    fn from(horizontal: Horizontal) -> Self {
+        match horizontal {
+            Horizontal::Left => Self::Start,
+            Horizontal::Center => Self::Center,
+            Horizontal::Right => Self::End,
+        }
+    }
+}
+
+impl From<Vertical> for Alignment {
+    fn from(vertical: Vertical) -> Self {
+        match vertical {
+            Vertical::Top => Self::Start,
+            Vertical::Center => Self::Center,
+            Vertical::Bottom => Self::End,
+        }
+    }
+}
+
+/// The horizontal [`Alignment`] of some resource.
+#[derive(Debug, Clone, Copy, PartialEq, Eq)]
+pub enum Horizontal {
+    /// Align left
+    Left,
+
+    /// Horizontally centered
+    Center,
+
+    /// Align right
+    Right,
+}
+
+/// The vertical [`Alignment`] of some resource.
+#[derive(Debug, Clone, Copy, PartialEq, Eq)]
+pub enum Vertical {
+    /// Align top
+    Top,
+
+    /// Vertically centered
+    Center,
+
+    /// Align bottom
+    Bottom,
+}
-- 
cgit