use std::sync::Arc;
use vello::{util::RenderSurface, Renderer, Scene};
use winit::window::Window;
pub struct WindowState<A> {
pub window: Arc<Window>,
pub surface: RenderSurface<'static>,
pub renderer: Renderer,
pub backend: uzor_render_hub::RenderBackend,
pub scene: Scene,
pub gpu_scene: Scene,
pub last_mouse_pos: (f64, f64),
pub mouse_pressed: bool,
pub drag_start_pos: Option<(f64, f64)>,
pub last_drag_pos: Option<(f64, f64)>,
pub last_click: Option<(std::time::Instant, f64, f64)>,
pub modifiers: winit::keyboard::ModifiersState,
pub close_requested: bool,
pub visible_set: bool,
pub was_minimized: bool,
pub screenshot_pending: bool,
#[cfg(target_os = "windows")]
pub hwnd: Option<isize>,
pub app: A,
}
impl<A> WindowState<A> {
pub fn id(&self) -> winit::window::WindowId {
self.window.id()
}
pub fn size(&self) -> (u32, u32) {
(self.surface.config.width, self.surface.config.height)
}
}