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 #[tracing::instrument(level = "trace", skip_all)]
28 pub fn reset(&mut self) {
29 self.buttons.clear();
30 self.keys.clear();
31 self.mouse_scroll_delta = None;
32 }
33}
34
35impl Default for AppInfo {
36 fn default() -> Self {
37 Self {
38 cursor_pos: None,
39 keys: Vec::with_capacity(4),
40 buttons: Vec::with_capacity(2),
41 mouse_scroll_delta: None,
42 diagnostics: Diagnostics::default(),
43 font_context: FontContext::default(),
44 size: Vector2::new(0.0, 0.0),
45 }
46 }
47}