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