1#[derive(Debug)]
2pub enum MouseButton {
3 Left,
4 Right,
5 Middle,
6}
7
8#[derive(Debug)]
9pub enum MouseInput {
10 Move(usize, usize),
11 Scroll(isize),
12 Pressed(MouseButton),
13 Released(MouseButton),
14}
15
16#[derive(Debug)]
17pub enum MouseEvent {
18 Scroll(isize),
19 None,
20}
21
22pub struct MouseManager {
23 scroll_speed: usize,
24}
25
26impl Default for MouseManager {
27 fn default() -> Self {
28 Self { scroll_speed: 1 }
29 }
30}
31
32impl MouseManager {
33 pub fn set_scroll_speed(&mut self, speed: usize) {
34 self.scroll_speed = speed;
35 }
36
37 pub fn handle_mouse(&mut self, event: MouseInput) -> MouseEvent {
38 match event {
39 MouseInput::Scroll(lines) => {
40 let lines = lines * self.scroll_speed as isize;
41 MouseEvent::Scroll(lines)
42 }
43 _ => MouseEvent::None,
44 }
45 }
46}