telar_platform_winit/
window.rs1use std::sync::Arc;
2
3use platform_core::Window as PlatformWindow;
4use raw_window_handle::{
5 DisplayHandle, HandleError, HasDisplayHandle, HasWindowHandle, WindowHandle,
6};
7use winit::window::Window as WinitInnerWindow;
8
9#[derive(Clone)]
10pub struct WinitWindow(pub Arc<WinitInnerWindow>);
11
12impl HasWindowHandle for WinitWindow {
13 fn window_handle(&self) -> Result<WindowHandle<'_>, HandleError> {
14 self.0.window_handle()
15 }
16}
17
18impl HasDisplayHandle for WinitWindow {
19 fn display_handle(&self) -> Result<DisplayHandle<'_>, HandleError> {
20 self.0.display_handle()
21 }
22}
23
24impl PlatformWindow for WinitWindow {
25 fn width(&self) -> u32 {
26 self.0.inner_size().width
27 }
28
29 fn height(&self) -> u32 {
30 self.0.inner_size().height
31 }
32
33 fn request_redraw(&self) {
34 self.0.request_redraw();
35 }
36
37 fn scale_factor(&self) -> f64 {
38 self.0.scale_factor()
39 }
40
41 fn prefers_dark(&self) -> Option<bool> {
42 self.0.theme().map(|t| t == winit::window::Theme::Dark)
45 }
46
47 fn drag_window(&self) {
48 let _ = self.0.drag_window();
49 }
50
51 fn set_minimized(&self, minimized: bool) {
52 self.0.set_minimized(minimized);
53 }
54
55 fn set_maximized(&self, maximized: bool) {
56 self.0.set_maximized(maximized);
57 }
58
59 fn is_maximized(&self) -> bool {
60 self.0.is_maximized()
61 }
62
63 fn set_title(&self, title: &str) {
64 self.0.set_title(title);
65 }
66
67 fn focus_window(&self) {
68 self.0.focus_window();
69 }
70}