From ec6d0f1b73c564e2f8293cd6ea03e7d870f7aeca Mon Sep 17 00:00:00 2001 From: gered Date: Fri, 26 May 2023 12:12:34 -0400 Subject: [PATCH] convenience method for creating a basic image widget --- examples/imgui_integration/src/main.rs | 4 +--- ggdt_imgui/src/lib.rs | 7 +++++++ 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/examples/imgui_integration/src/main.rs b/examples/imgui_integration/src/main.rs index 6d79847..9720273 100644 --- a/examples/imgui_integration/src/main.rs +++ b/examples/imgui_integration/src/main.rs @@ -43,9 +43,7 @@ impl AppState for DemoState { if let Some(slime_type_texture_id) = context.core.slime_texture_id_map.get(&slime_type.0) { ui.same_line(); - ui.invisible_button("Slime Type", [16.0, 16.0]); - let draw_list = ui.get_window_draw_list(); - draw_list.add_image(*slime_type_texture_id, ui.item_rect_min(), ui.item_rect_max()).build(); + ui.image("Slime Type", *slime_type_texture_id, [16.0, 16.0]); } ui.same_line(); diff --git a/ggdt_imgui/src/lib.rs b/ggdt_imgui/src/lib.rs index 64cea78..88fc8c6 100644 --- a/ggdt_imgui/src/lib.rs +++ b/ggdt_imgui/src/lib.rs @@ -70,6 +70,7 @@ impl SystemEventHandler for ImGui { pub trait UiSupport { fn is_any_hovered(&self) -> bool; fn is_any_focused(&self) -> bool; + fn image(&self, id: impl AsRef, texture_id: imgui::TextureId, size: [f32; 2]); } impl UiSupport for imgui::Ui { @@ -80,4 +81,10 @@ impl UiSupport for imgui::Ui { fn is_any_focused(&self) -> bool { self.is_window_focused_with_flags(imgui::WindowFocusedFlags::ANY_WINDOW) } + + fn image(&self, id: impl AsRef, texture_id: imgui::TextureId, size: [f32; 2]) { + self.invisible_button(id, size); + let draw_list = self.get_window_draw_list(); + draw_list.add_image(texture_id, self.item_rect_min(), self.item_rect_max()).build(); + } }