1 | use crate::monitor::{MonitorHandle as RootMonitorHandle, VideoModeHandle as RootVideoModeHandle}; |
2 | use crate::window::Fullscreen as RootFullscreen; |
3 | |
4 | #[cfg (android_platform)] |
5 | mod android; |
6 | #[cfg (ios_platform)] |
7 | mod ios; |
8 | #[cfg (any(x11_platform, wayland_platform))] |
9 | mod linux; |
10 | #[cfg (macos_platform)] |
11 | mod macos; |
12 | #[cfg (orbital_platform)] |
13 | mod orbital; |
14 | #[cfg (web_platform)] |
15 | mod web; |
16 | #[cfg (windows_platform)] |
17 | mod windows; |
18 | |
19 | #[cfg (android_platform)] |
20 | use android as platform; |
21 | #[cfg (ios_platform)] |
22 | use ios as platform; |
23 | #[cfg (any(x11_platform, wayland_platform))] |
24 | use linux as platform; |
25 | #[cfg (macos_platform)] |
26 | use macos as platform; |
27 | #[cfg (orbital_platform)] |
28 | use orbital as platform; |
29 | #[cfg (web_platform)] |
30 | use web as platform; |
31 | #[cfg (windows_platform)] |
32 | use windows as platform; |
33 | |
34 | pub use self::platform::*; |
35 | |
36 | /// Helper for converting between platform-specific and generic |
37 | /// [`VideoModeHandle`]/[`MonitorHandle`] |
38 | #[derive (Clone, Debug, PartialEq, Eq)] |
39 | pub(crate) enum Fullscreen { |
40 | Exclusive(VideoModeHandle), |
41 | Borderless(Option<MonitorHandle>), |
42 | } |
43 | |
44 | impl From<RootFullscreen> for Fullscreen { |
45 | fn from(f: RootFullscreen) -> Self { |
46 | match f { |
47 | RootFullscreen::Exclusive(mode: VideoModeHandle) => Self::Exclusive(mode.video_mode), |
48 | RootFullscreen::Borderless(Some(handle: MonitorHandle)) => Self::Borderless(Some(handle.inner)), |
49 | RootFullscreen::Borderless(None) => Self::Borderless(None), |
50 | } |
51 | } |
52 | } |
53 | |
54 | impl From<Fullscreen> for RootFullscreen { |
55 | fn from(f: Fullscreen) -> Self { |
56 | match f { |
57 | Fullscreen::Exclusive(video_mode: VideoModeHandle) => { |
58 | Self::Exclusive(RootVideoModeHandle { video_mode }) |
59 | }, |
60 | Fullscreen::Borderless(Some(inner: MonitorHandle)) => { |
61 | Self::Borderless(Some(RootMonitorHandle { inner })) |
62 | }, |
63 | Fullscreen::Borderless(None) => Self::Borderless(None), |
64 | } |
65 | } |
66 | } |
67 | |
68 | #[cfg (all( |
69 | not(ios_platform), |
70 | not(windows_platform), |
71 | not(macos_platform), |
72 | not(android_platform), |
73 | not(x11_platform), |
74 | not(wayland_platform), |
75 | not(web_platform), |
76 | not(orbital_platform), |
77 | ))] |
78 | compile_error!("The platform you're compiling for is not supported by winit" ); |
79 | |