| 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 | |