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, }