Introduce helper methods for alignment for all widgets

This commit is contained in:
Héctor Ramón Jiménez 2024-07-12 15:11:30 +02:00
parent be06060117
commit f9dd5cbb09
No known key found for this signature in database
GPG key ID: 7CC46565708259A7
45 changed files with 380 additions and 282 deletions

View file

@ -1,5 +1,30 @@
//! Align and position widgets.
/// Returns a value representing center alignment.
pub const fn center() -> Alignment {
Alignment::Center
}
/// Returns a value representing left alignment.
pub const fn left() -> Horizontal {
Horizontal::Left
}
/// Returns a value representing right alignment.
pub const fn right() -> Horizontal {
Horizontal::Right
}
/// Returns a value representing top alignment.
pub const fn top() -> Vertical {
Vertical::Top
}
/// Returns a value representing bottom alignment.
pub const fn bottom() -> Vertical {
Vertical::Bottom
}
/// Alignment on the axis of a container.
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum Alignment {
@ -46,6 +71,16 @@ pub enum Horizontal {
Right,
}
impl From<Alignment> for Horizontal {
fn from(alignment: Alignment) -> Self {
match alignment {
Alignment::Start => Self::Left,
Alignment::Center => Self::Center,
Alignment::End => Self::Right,
}
}
}
/// The vertical [`Alignment`] of some resource.
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum Vertical {
@ -58,3 +93,13 @@ pub enum Vertical {
/// Align bottom
Bottom,
}
impl From<Alignment> for Vertical {
fn from(alignment: Alignment) -> Self {
match alignment {
Alignment::Start => Self::Top,
Alignment::Center => Self::Center,
Alignment::End => Self::Bottom,
}
}
}