runmat_plot/core/
interaction.rs

1//! Event handling and user interaction for interactive plots
2//!
3//! Manages mouse, keyboard, and touch input for plot navigation
4//! and data interaction.
5
6use glam::Vec2;
7
8/// Event types for plot interaction
9#[derive(Debug, Clone)]
10pub enum PlotEvent {
11    MousePress { position: Vec2, button: MouseButton },
12    MouseRelease { position: Vec2, button: MouseButton },
13    MouseMove { position: Vec2, delta: Vec2 },
14    MouseWheel { delta: f32 },
15    KeyPress { key: KeyCode },
16    KeyRelease { key: KeyCode },
17    Resize { width: u32, height: u32 },
18}
19
20/// Mouse button enumeration
21#[derive(Debug, Clone, Copy, PartialEq, Eq)]
22pub enum MouseButton {
23    Left,
24    Right,
25    Middle,
26}
27
28/// Key code enumeration (subset for now)
29#[derive(Debug, Clone, Copy, PartialEq, Eq)]
30pub enum KeyCode {
31    Escape,
32    Space,
33    Enter,
34    Tab,
35    Backspace,
36    Delete,
37    Home,
38    End,
39    PageUp,
40    PageDown,
41    ArrowUp,
42    ArrowDown,
43    ArrowLeft,
44    ArrowRight,
45    // Add more as needed
46}
47
48/// Event handler trait for plot interaction
49pub trait EventHandler {
50    fn handle_event(&mut self, event: PlotEvent) -> bool;
51}