summaryrefslogtreecommitdiff
path: root/src/button_manager.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/button_manager.rs')
-rw-r--r--src/button_manager.rs19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/button_manager.rs b/src/button_manager.rs
new file mode 100644
index 0000000..e46a139
--- /dev/null
+++ b/src/button_manager.rs
@@ -0,0 +1,19 @@
+#[derive(Default)]
+pub struct ButtonManager<T = usize>(Vec<(f64, f64, T)>);
+
+impl<T> ButtonManager<T> {
+ pub fn push(&mut self, x_offset: f64, width: f64, elem: T) {
+ self.0.push((x_offset, width, elem));
+ }
+
+ pub fn clear(&mut self) {
+ self.0.clear()
+ }
+
+ pub fn click(&self, x: f64) -> Option<&T> {
+ self.0
+ .iter()
+ .find(|(x_off, w, _)| x >= *x_off && x <= *x_off + *w)
+ .map(|(_, _, e)| e)
+ }
+}