1use nalgebra::Vector2;
2use winit::event::{DeviceId, ElementState, KeyEvent, MouseButton, MouseScrollDelta};
3
4use crate::app::diagnostics::Diagnostics;
5use crate::app::font_ctx::FontContext;
6
7pub struct AppInfo {
9 pub cursor_pos: Option<Vector2<f64>>,
11 pub keys: Vec<(DeviceId, KeyEvent)>,
13 pub buttons: Vec<(DeviceId, MouseButton, ElementState)>,
15 pub mouse_scroll_delta: Option<MouseScrollDelta>,
17 pub diagnostics: Diagnostics,
19 pub font_context: FontContext,
21 pub size: Vector2<f64>,
23}
24
25impl AppInfo {
26 pub fn reset(&mut self) {
28 self.buttons.clear();
29 self.keys.clear();
30 self.mouse_scroll_delta = None;
31 }
32}
33
34impl Default for AppInfo {
35 fn default() -> Self {
36 Self {
37 cursor_pos: None,
38 keys: Vec::with_capacity(4),
39 buttons: Vec::with_capacity(2),
40 mouse_scroll_delta: None,
41 diagnostics: Diagnostics::default(),
42 font_context: FontContext::default(),
43 size: Vector2::new(0.0, 0.0),
44 }
45 }
46}