diff options
Diffstat (limited to 'src/button_manager.rs')
| -rw-r--r-- | src/button_manager.rs | 19 |
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) + } +} |
