winit/platform_impl/
mod.rs

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