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