mutils/geom/position/
point_position.rs1use crate::geom::HorizontalPosition;
2use crate::geom::VerticalPosition;
3
4#[derive(Copy, Clone, PartialEq, Debug)]
5pub struct PointPosition(pub HorizontalPosition, pub VerticalPosition);
6
7impl PointPosition {
8 pub fn new(horizontal: HorizontalPosition, vertical: VerticalPosition) -> Self {
9 Self(horizontal, vertical)
10 }
11
12 #[inline(always)]
13 pub fn horizontal(self) -> HorizontalPosition {
14 self.0
15 }
16
17 #[inline(always)]
18 pub fn vertical(self) -> VerticalPosition {
19 self.1
20 }
21
22 pub fn is_left(self) -> bool {
23 self.horizontal() == HorizontalPosition::Left
24 }
25
26 pub fn is_right(self) -> bool {
27 self.horizontal() == HorizontalPosition::Right
28 }
29
30 pub fn is_above(self) -> bool {
31 self.vertical() == VerticalPosition::Above
32 }
33
34 pub fn is_below(self) -> bool {
35 self.vertical() == VerticalPosition::Below
36 }
37
38 pub fn is_entirely_inside(self) -> bool {
39 self == PointPosition(HorizontalPosition::Inside, VerticalPosition::Inside)
40 }
41
42 pub fn is_outside(self) -> bool {
44 self.horizontal() != HorizontalPosition::Inside
45 || self.vertical() != VerticalPosition::Inside
46 }
47
48 pub fn is_entirely_outside(self) -> bool {
50 self.horizontal() != HorizontalPosition::Inside
51 && self.vertical() != VerticalPosition::Inside
52 }
53}