ui_automation/
position.rs1use std::fmt::Display;
5
6#[derive(Debug, Default, Clone, Copy, PartialEq, PartialOrd)]
7pub struct Position {
8 x: f64,
9 y: f64,
10}
11
12impl Position {
13 #[must_use]
14 pub const fn new(x: f64, y: f64) -> Self {
15 Self {
16 x,
17 y,
18 }
19 }
20
21 #[must_use]
22 pub const fn x(&self) -> f64 {
23 self.x
24 }
25
26 #[must_use]
27 pub const fn y(&self) -> f64 {
28 self.y
29 }
30}
31
32impl Display for Position {
33 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
34 f.write_fmt(format_args!("({}, {})", self.x, self.y))
35 }
36}
37
38impl From<(f64, f64)> for Position {
39 fn from(value: (f64, f64)) -> Self {
40 Self::new(value.0, value.1)
41 }
42}
43
44impl From<(f32, f32)> for Position {
45 fn from(value: (f32, f32)) -> Self {
46 Self::new(value.0 as f64, value.1 as f64)
47 }
48}
49
50impl From<(i8, i8)> for Position {
51 fn from(value: (i8, i8)) -> Self {
52 Self::new(value.0 as f64, value.1 as f64)
53 }
54}
55
56impl From<(i16, i16)> for Position {
57 fn from(value: (i16, i16)) -> Self {
58 Self::new(value.0 as f64, value.1 as f64)
59 }
60}
61
62impl From<(i32, i32)> for Position {
63 fn from(value: (i32, i32)) -> Self {
64 Self::new(value.0 as f64, value.1 as f64)
65 }
66}
67
68impl From<(i64, i64)> for Position {
69 fn from(value: (i64, i64)) -> Self {
70 Self::new(value.0 as f64, value.1 as f64)
71 }
72}
73
74impl From<(isize, isize)> for Position {
75 fn from(value: (isize, isize)) -> Self {
76 Self::new(value.0 as f64, value.1 as f64)
77 }
78}
79
80impl From<(u8, i8)> for Position {
81 fn from(value: (u8, i8)) -> Self {
82 Self::new(value.0 as f64, value.1 as f64)
83 }
84}
85
86impl From<(u16, i16)> for Position {
87 fn from(value: (u16, i16)) -> Self {
88 Self::new(value.0 as f64, value.1 as f64)
89 }
90}
91
92impl From<(u32, i32)> for Position {
93 fn from(value: (u32, i32)) -> Self {
94 Self::new(value.0 as f64, value.1 as f64)
95 }
96}
97
98impl From<(u64, i64)> for Position {
99 fn from(value: (u64, i64)) -> Self {
100 Self::new(value.0 as f64, value.1 as f64)
101 }
102}
103
104impl From<(usize, isize)> for Position {
105 fn from(value: (usize, isize)) -> Self {
106 Self::new(value.0 as f64, value.1 as f64)
107 }
108}
109
110
111impl From<(i8, u8)> for Position {
112 fn from(value: (i8, u8)) -> Self {
113 Self::new(value.0 as f64, value.1 as f64)
114 }
115}
116
117impl From<(i16, u16)> for Position {
118 fn from(value: (i16, u16)) -> Self {
119 Self::new(value.0 as f64, value.1 as f64)
120 }
121}
122
123impl From<(i32, u32)> for Position {
124 fn from(value: (i32, u32)) -> Self {
125 Self::new(value.0 as f64, value.1 as f64)
126 }
127}
128
129impl From<(i64, u64)> for Position {
130 fn from(value: (i64, u64)) -> Self {
131 Self::new(value.0 as f64, value.1 as f64)
132 }
133}
134
135impl From<(isize, usize)> for Position {
136 fn from(value: (isize, usize)) -> Self {
137 Self::new(value.0 as f64, value.1 as f64)
138 }
139}
140
141impl From<(u8, u8)> for Position {
142 fn from(value: (u8, u8)) -> Self {
143 Self::new(value.0 as f64, value.1 as f64)
144 }
145}
146
147impl From<(u16, u16)> for Position {
148 fn from(value: (u16, u16)) -> Self {
149 Self::new(value.0 as f64, value.1 as f64)
150 }
151}
152
153impl From<(u32, u32)> for Position {
154 fn from(value: (u32, u32)) -> Self {
155 Self::new(value.0 as f64, value.1 as f64)
156 }
157}
158
159impl From<(u64, u64)> for Position {
160 fn from(value: (u64, u64)) -> Self {
161 Self::new(value.0 as f64, value.1 as f64)
162 }
163}
164
165impl From<(usize, usize)> for Position {
166 fn from(value: (usize, usize)) -> Self {
167 Self::new(value.0 as f64, value.1 as f64)
168 }
169}