use glam::Vec2;
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq)]
pub struct Modifiers {
pub shift: bool,
pub ctrl: bool,
pub alt: bool,
pub meta: bool,
}
#[derive(Debug, Clone)]
pub enum PlotEvent {
MousePress {
position: Vec2,
button: MouseButton,
modifiers: Modifiers,
},
MouseRelease {
position: Vec2,
button: MouseButton,
modifiers: Modifiers,
},
MouseMove {
position: Vec2,
delta: Vec2,
modifiers: Modifiers,
},
MouseWheel {
position: Vec2,
delta: Vec2,
modifiers: Modifiers,
},
KeyPress {
key: KeyCode,
},
KeyRelease {
key: KeyCode,
},
Resize {
width: u32,
height: u32,
},
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum MouseButton {
Left,
Right,
Middle,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum KeyCode {
Escape,
Space,
Enter,
Tab,
Backspace,
Delete,
Home,
End,
PageUp,
PageDown,
ArrowUp,
ArrowDown,
ArrowLeft,
ArrowRight,
}
pub trait EventHandler {
fn handle_event(&mut self, event: PlotEvent) -> bool;
}