dear_imgui_rs/ui/
viewport.rs1use super::*;
2
3impl Ui {
4 #[doc(alias = "GetMainViewport")]
11 pub fn main_viewport(&self) -> &crate::platform_io::Viewport {
12 self.run_with_bound_context(|| unsafe {
13 let ptr = sys::igGetMainViewport();
14 if ptr.is_null() {
15 panic!("Ui::main_viewport() requires an active ImGui context");
16 }
17 crate::platform_io::Viewport::from_raw(ptr as *const sys::ImGuiViewport)
18 })
19 }
20
21 #[doc(alias = "SetNextWindowViewport")]
26 pub fn set_next_window_viewport(&self, viewport_id: Id) {
27 self.run_with_bound_context(|| unsafe { sys::igSetNextWindowViewport(viewport_id.into()) });
28 }
29
30 #[doc(alias = "GetWindowViewport")]
42 pub fn window_viewport(&self) -> &crate::platform_io::Viewport {
43 self.run_with_bound_context(|| unsafe {
44 let ptr = sys::igGetWindowViewport();
45 if ptr.is_null() {
46 panic!("Ui::window_viewport() requires a current window");
47 }
48 crate::platform_io::Viewport::from_raw(ptr as *const sys::ImGuiViewport)
49 })
50 }
51
52 #[doc(alias = "FindViewportByID")]
54 pub fn find_viewport_by_id(&self, viewport_id: Id) -> Option<&crate::platform_io::Viewport> {
55 self.run_with_bound_context(|| unsafe {
56 let ptr = sys::igFindViewportByID(viewport_id.raw());
57 if ptr.is_null() {
58 None
59 } else {
60 Some(crate::platform_io::Viewport::from_raw(
61 ptr as *const sys::ImGuiViewport,
62 ))
63 }
64 })
65 }
66
67 #[doc(alias = "FindViewportByPlatformHandle")]
71 #[allow(clippy::not_unsafe_ptr_arg_deref)]
72 pub fn find_viewport_by_platform_handle(
73 &self,
74 platform_handle: *mut std::ffi::c_void,
75 ) -> Option<&crate::platform_io::Viewport> {
76 self.run_with_bound_context(|| unsafe {
77 let ptr = sys::igFindViewportByPlatformHandle(platform_handle);
78 if ptr.is_null() {
79 None
80 } else {
81 Some(crate::platform_io::Viewport::from_raw(
82 ptr as *const sys::ImGuiViewport,
83 ))
84 }
85 })
86 }
87}