use std::path::PathBuf;
use keyboard_types::{KeyboardEvent, Modifiers};
use crate::{Point, WindowInfo};
#[derive(Debug, Copy, Clone, Eq, PartialEq)]
pub enum MouseButton {
Left,
Middle,
Right,
Back,
Forward,
Other(u8),
}
#[derive(Debug, Clone, Copy, PartialEq)]
pub enum ScrollDelta {
Lines {
x: f32,
y: f32,
},
Pixels {
x: f32,
y: f32,
},
}
#[derive(Debug, Clone, PartialEq)]
pub enum MouseEvent {
CursorMoved {
position: Point,
modifiers: Modifiers,
},
ButtonPressed {
button: MouseButton,
modifiers: Modifiers,
},
ButtonReleased {
button: MouseButton,
modifiers: Modifiers,
},
WheelScrolled {
delta: ScrollDelta,
modifiers: Modifiers,
},
CursorEntered,
CursorLeft,
DragEntered {
position: Point,
modifiers: Modifiers,
data: DropData,
},
DragMoved {
position: Point,
modifiers: Modifiers,
data: DropData,
},
DragLeft,
DragDropped {
position: Point,
modifiers: Modifiers,
data: DropData,
},
}
#[derive(Debug, Clone)]
pub enum WindowEvent {
Resized(WindowInfo),
Focused,
Unfocused,
WillClose,
}
#[derive(Debug, Clone)]
pub enum Event {
Mouse(MouseEvent),
Keyboard(KeyboardEvent),
Window(WindowEvent),
}
#[derive(Debug, Clone, Copy, PartialEq)]
pub enum DropEffect {
Copy,
Move,
Link,
Scroll,
}
#[derive(Debug, Clone, PartialEq)]
pub enum DropData {
None,
Files(Vec<PathBuf>),
}
#[derive(Debug, Clone, Copy, PartialEq)]
pub enum EventStatus {
Captured,
Ignored,
AcceptDrop(DropEffect),
}