1use std::time::Instant;
4
5#[derive(Debug, Clone)]
7pub enum ComponentEvent {
8 Attached { name: String },
9 Detached { name: String },
10}
11
12#[derive(Debug, Clone)]
15pub enum WindowEvent {
16 Close,
17 Resize { width: u32, height: u32 },
18}
19
20#[derive(Debug, Clone)]
22pub enum RuntimeEvent {
23 Initialized,
24 Shutdown,
25 ComponentPanic { message: String },
26}
27
28pub use lambda_platform::winit::winit_exports::VirtualKeyCode as VirtualKey;
30
31#[derive(Debug, Clone)]
34pub enum Key {
35 Pressed {
37 scan_code: u32,
38 virtual_key: Option<VirtualKey>,
39 },
40 Released {
42 scan_code: u32,
43 virtual_key: Option<VirtualKey>,
44 },
45 ModifierPressed {
47 modifier: u32,
48 virtual_key: VirtualKey,
49 },
50}
51
52#[derive(Debug, Clone)]
54pub enum Button {
55 Left,
56 Right,
57 Middle,
58 Other(u16),
59}
60
61#[derive(Debug, Clone)]
64pub enum Mouse {
65 Moved {
67 x: f64,
68 y: f64,
69 dx: f64,
70 dy: f64,
71 device_id: u32,
72 },
73 Scrolled { device_id: u32 },
75 Pressed {
77 x: f64,
78 y: f64,
79 button: Button,
80 device_id: u32,
81 },
82 Released {
84 x: f64,
85 y: f64,
86 button: Button,
87 device_id: u32,
88 },
89 LeftWindow { device_id: u32 },
91 EnteredWindow { device_id: u32 },
93}
94
95#[derive(Debug, Clone)]
98pub enum Events {
99 Component {
100 event: ComponentEvent,
101 issued_at: Instant,
102 },
103 Window {
104 event: WindowEvent,
105 issued_at: Instant,
106 },
107 Runtime {
108 event: RuntimeEvent,
109 issued_at: Instant,
110 },
111 Keyboard {
112 event: Key,
113 issued_at: Instant,
114 },
115 Mouse {
116 event: Mouse,
117 issued_at: Instant,
118 },
119}