use crate::core::{Edges, Pixels, px};
use winit::dpi::PhysicalSize;
use winit::window::Window;
pub fn surface_size(window: &Window) -> PhysicalSize<u32> {
if cfg!(target_os = "ios") { window.outer_size() } else { window.inner_size() }
}
pub fn insets(window: &Window) -> Edges {
let scale = window.scale_factor() as f32;
let _logical = |value: i64| px((value as f32 / scale).max(0.0));
#[cfg(target_os = "ios")]
if let (Ok(inner), Ok(outer)) = (window.inner_position(), window.outer_position()) {
let (safe, screen) = (window.inner_size(), window.outer_size());
let (left, top) = (i64::from(inner.x - outer.x), i64::from(inner.y - outer.y));
return Edges {
top: _logical(top),
left: _logical(left),
right: _logical(i64::from(screen.width) - i64::from(safe.width) - left),
bottom: _logical(i64::from(screen.height) - i64::from(safe.height) - top),
};
}
#[cfg(target_os = "android")]
{
use winit::platform::android::WindowExtAndroid;
let content = window.content_rect();
let size = window.inner_size();
if content.right > content.left && content.bottom > content.top {
return Edges {
top: _logical(content.top.into()),
left: _logical(content.left.into()),
right: _logical(i64::from(size.width) - i64::from(content.right)),
bottom: _logical(i64::from(size.height) - i64::from(content.bottom)),
};
}
}
Edges::all(Pixels::ZERO)
}