50 lines
1006 B
Rust
50 lines
1006 B
Rust
use crate::layout::{Vec2, vec2};
|
|
|
|
#[derive(Clone, Copy, Debug)]
|
|
pub enum Corner {
|
|
TopLeft,
|
|
TopRight,
|
|
BotLeft,
|
|
BotRight,
|
|
}
|
|
|
|
impl Corner {
|
|
pub const fn anchor(&self) -> Vec2 {
|
|
match self {
|
|
Corner::TopLeft => vec2(0.0, 0.0),
|
|
Corner::TopRight => vec2(1.0, 0.0),
|
|
Corner::BotLeft => vec2(0.0, 1.0),
|
|
Corner::BotRight => vec2(1.0, 1.0),
|
|
}
|
|
}
|
|
}
|
|
|
|
#[derive(Copy, Clone, Eq, PartialEq)]
|
|
pub enum Axis {
|
|
X,
|
|
Y,
|
|
}
|
|
|
|
#[derive(Clone, Copy, Eq, PartialEq)]
|
|
pub struct Dir {
|
|
pub axis: Axis,
|
|
pub sign: Sign,
|
|
}
|
|
|
|
impl Dir {
|
|
pub const fn new(axis: Axis, dir: Sign) -> Self {
|
|
Self { axis, sign: dir }
|
|
}
|
|
|
|
pub const LEFT: Self = Self::new(Axis::X, Sign::Neg);
|
|
pub const RIGHT: Self = Self::new(Axis::X, Sign::Pos);
|
|
pub const UP: Self = Self::new(Axis::Y, Sign::Neg);
|
|
pub const DOWN: Self = Self::new(Axis::Y, Sign::Pos);
|
|
}
|
|
|
|
#[derive(Clone, Copy, Eq, PartialEq)]
|
|
pub enum Sign {
|
|
Neg,
|
|
Pos,
|
|
}
|