#[derive(Clone, Copy, Debug, Default, PartialEq, Eq)]
#[non_exhaustive]
pub enum WindowColorMode {
#[default]
Default,
WideGamutSdr,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
#[non_exhaustive]
pub enum WindowColorFallback {
SdrDisplay,
PlatformPolicy,
}
#[derive(Clone, Copy, Debug, Default, PartialEq, Eq)]
pub struct WindowColorStatus {
requested: WindowColorMode,
effective: WindowColorMode,
supports_wide_gamut_sdr: bool,
display_wide_gamut: Option<bool>,
fallback: Option<WindowColorFallback>,
}
impl WindowColorStatus {
pub fn new(
requested: WindowColorMode,
effective: WindowColorMode,
supports_wide_gamut_sdr: bool,
display_wide_gamut: Option<bool>,
fallback: Option<WindowColorFallback>,
) -> Self {
Self {
requested,
effective,
supports_wide_gamut_sdr,
display_wide_gamut,
fallback,
}
}
pub fn requested(&self) -> WindowColorMode {
self.requested
}
pub fn effective(&self) -> WindowColorMode {
self.effective
}
pub fn supports_wide_gamut_sdr(&self) -> bool {
self.supports_wide_gamut_sdr
}
pub fn display_wide_gamut(&self) -> Option<bool> {
self.display_wide_gamut
}
pub fn fallback(&self) -> Option<WindowColorFallback> {
self.fallback
}
}