use super::*;
impl Ui {
#[doc(alias = "GetMainViewport")]
pub fn main_viewport(&self) -> &crate::platform_io::Viewport {
self.run_with_bound_context(|| unsafe {
let ptr = sys::igGetMainViewport();
if ptr.is_null() {
panic!("Ui::main_viewport() requires an active ImGui context");
}
crate::platform_io::Viewport::from_raw(ptr as *const sys::ImGuiViewport)
})
}
#[doc(alias = "SetNextWindowViewport")]
pub fn set_next_window_viewport(&self, viewport_id: Id) {
self.run_with_bound_context(|| unsafe { sys::igSetNextWindowViewport(viewport_id.into()) });
}
#[doc(alias = "GetWindowViewport")]
pub fn window_viewport(&self) -> &crate::platform_io::Viewport {
self.run_with_bound_context(|| unsafe {
let ptr = sys::igGetWindowViewport();
if ptr.is_null() {
panic!("Ui::window_viewport() requires a current window");
}
crate::platform_io::Viewport::from_raw(ptr as *const sys::ImGuiViewport)
})
}
#[doc(alias = "FindViewportByID")]
pub fn find_viewport_by_id(&self, viewport_id: Id) -> Option<&crate::platform_io::Viewport> {
self.run_with_bound_context(|| unsafe {
let ptr = sys::igFindViewportByID(viewport_id.raw());
if ptr.is_null() {
None
} else {
Some(crate::platform_io::Viewport::from_raw(
ptr as *const sys::ImGuiViewport,
))
}
})
}
#[doc(alias = "FindViewportByPlatformHandle")]
#[allow(clippy::not_unsafe_ptr_arg_deref)]
pub fn find_viewport_by_platform_handle(
&self,
platform_handle: *mut std::ffi::c_void,
) -> Option<&crate::platform_io::Viewport> {
self.run_with_bound_context(|| unsafe {
let ptr = sys::igFindViewportByPlatformHandle(platform_handle);
if ptr.is_null() {
None
} else {
Some(crate::platform_io::Viewport::from_raw(
ptr as *const sys::ImGuiViewport,
))
}
})
}
}