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#[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");