mirror of
https://codeberg.org/unspeaker/tek.git
synced 2026-01-12 02:56:42 +01:00
30 lines
974 B
Rust
30 lines
974 B
Rust
use crate::*;
|
|
|
|
/// A cardinal direction.
|
|
#[derive(Copy, Clone, PartialEq)]
|
|
pub enum Direction { North, South, West, East, }
|
|
pub use self::Direction::*;
|
|
|
|
impl Direction {
|
|
#[inline]
|
|
pub fn split_fixed <N: Coordinate> (self, area: impl Area<N>, a: N) -> ([N;4],[N;4]) {
|
|
match self {
|
|
North => (
|
|
[area.x(), (area.y()+area.h()).minus(a), area.w(), a],
|
|
[area.x(), area.y(), area.w(), area.h().minus(a)],
|
|
),
|
|
South => (
|
|
[area.x(), area.y(), area.w(), a],
|
|
[area.x(), area.y() + a, area.w(), area.h().minus(a)],
|
|
),
|
|
East => (
|
|
[area.x(), area.y(), a, area.h()],
|
|
[area.x() + a, area.y(), area.w().minus(a), area.h()],
|
|
),
|
|
West => (
|
|
[area.x() + area.w() - a, area.y(), a, area.h()],
|
|
[area.x(), area.y(), area.w() - a, area.h()],
|
|
),
|
|
}
|
|
}
|
|
}
|