2023-12-26 22:12:33 +01:00
|
|
|
use crate::monitor::{MonitorHandle as RootMonitorHandle, VideoModeHandle as RootVideoModeHandle};
|
2022-09-21 10:04:28 +02:00
|
|
|
use crate::window::Fullscreen as RootFullscreen;
|
2019-02-05 10:30:33 -05:00
|
|
|
|
2024-06-24 03:57:48 +02:00
|
|
|
#[cfg(android_platform)]
|
|
|
|
|
mod android;
|
|
|
|
|
#[cfg(ios_platform)]
|
|
|
|
|
mod ios;
|
2022-12-25 09:57:27 +02:00
|
|
|
#[cfg(any(x11_platform, wayland_platform))]
|
2024-06-24 03:57:48 +02:00
|
|
|
mod linux;
|
2022-12-25 09:57:27 +02:00
|
|
|
#[cfg(macos_platform)]
|
2024-06-24 03:57:48 +02:00
|
|
|
mod macos;
|
|
|
|
|
#[cfg(orbital_platform)]
|
|
|
|
|
mod orbital;
|
|
|
|
|
#[cfg(web_platform)]
|
|
|
|
|
mod web;
|
|
|
|
|
#[cfg(windows_platform)]
|
|
|
|
|
mod windows;
|
|
|
|
|
|
2022-12-25 09:57:27 +02:00
|
|
|
#[cfg(android_platform)]
|
2024-06-24 03:57:48 +02:00
|
|
|
use android as platform;
|
2022-12-25 09:57:27 +02:00
|
|
|
#[cfg(ios_platform)]
|
2024-06-24 03:57:48 +02:00
|
|
|
use ios as platform;
|
|
|
|
|
#[cfg(any(x11_platform, wayland_platform))]
|
|
|
|
|
use linux as platform;
|
|
|
|
|
#[cfg(macos_platform)]
|
|
|
|
|
use macos as platform;
|
2023-01-05 06:58:08 -07:00
|
|
|
#[cfg(orbital_platform)]
|
2024-06-24 03:57:48 +02:00
|
|
|
use orbital as platform;
|
|
|
|
|
#[cfg(web_platform)]
|
|
|
|
|
use web as platform;
|
|
|
|
|
#[cfg(windows_platform)]
|
|
|
|
|
use windows as platform;
|
2019-02-05 10:30:33 -05:00
|
|
|
|
2022-09-21 10:04:28 +02:00
|
|
|
pub use self::platform::*;
|
|
|
|
|
|
2023-12-26 22:12:33 +01:00
|
|
|
/// Helper for converting between platform-specific and generic
|
|
|
|
|
/// [`VideoModeHandle`]/[`MonitorHandle`]
|
2022-09-21 10:04:28 +02:00
|
|
|
#[derive(Clone, Debug, PartialEq, Eq)]
|
|
|
|
|
pub(crate) enum Fullscreen {
|
2023-12-26 22:12:33 +01:00
|
|
|
Exclusive(VideoModeHandle),
|
2022-09-21 10:04:28 +02:00
|
|
|
Borderless(Option<MonitorHandle>),
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
impl From<RootFullscreen> for Fullscreen {
|
|
|
|
|
fn from(f: RootFullscreen) -> Self {
|
|
|
|
|
match f {
|
|
|
|
|
RootFullscreen::Exclusive(mode) => Self::Exclusive(mode.video_mode),
|
|
|
|
|
RootFullscreen::Borderless(Some(handle)) => Self::Borderless(Some(handle.inner)),
|
|
|
|
|
RootFullscreen::Borderless(None) => Self::Borderless(None),
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
impl From<Fullscreen> for RootFullscreen {
|
|
|
|
|
fn from(f: Fullscreen) -> Self {
|
|
|
|
|
match f {
|
2023-12-26 22:12:33 +01:00
|
|
|
Fullscreen::Exclusive(video_mode) => {
|
|
|
|
|
Self::Exclusive(RootVideoModeHandle { video_mode })
|
|
|
|
|
},
|
2022-09-21 10:04:28 +02:00
|
|
|
Fullscreen::Borderless(Some(inner)) => {
|
|
|
|
|
Self::Borderless(Some(RootMonitorHandle { inner }))
|
|
|
|
|
},
|
|
|
|
|
Fullscreen::Borderless(None) => Self::Borderless(None),
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2019-06-03 22:51:01 -07:00
|
|
|
#[cfg(all(
|
2022-12-25 09:57:27 +02:00
|
|
|
not(ios_platform),
|
|
|
|
|
not(windows_platform),
|
|
|
|
|
not(macos_platform),
|
|
|
|
|
not(android_platform),
|
|
|
|
|
not(x11_platform),
|
|
|
|
|
not(wayland_platform),
|
2024-01-14 18:54:52 +01:00
|
|
|
not(web_platform),
|
2023-01-05 06:58:08 -07:00
|
|
|
not(orbital_platform),
|
2019-06-03 22:51:01 -07:00
|
|
|
))]
|
2019-02-05 10:30:33 -05:00
|
|
|
compile_error!("The platform you're compiling for is not supported by winit");
|