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 {
29 scroll_speed: 1,
30 }
31 }
32}
33
34impl MouseManager {
35 pub fn set_scroll_speed(&mut self, speed: usize) {
36 self.scroll_speed = speed;
37 }
38
39 pub fn handle_mouse(&mut self, event: MouseInput) -> MouseEvent {
40 match event {
41 MouseInput::Scroll(lines) => {
42 let lines = lines * self.scroll_speed as isize;
43 MouseEvent::Scroll(lines)
44 }
45 _ => MouseEvent::None,
46 }
47 }
48}