From 640f56b4be7ada1dd5a2d4e5a863de377997e3d0 Mon Sep 17 00:00:00 2001 From: SpaiR Date: Sat, 11 Jul 2020 18:50:57 +0300 Subject: [PATCH] Add ImGui helper methods to get ImVec2 values --- imgui-binding/src/main/java/imgui/ImGui.java | 253 +++++++++++++++++++ 1 file changed, 253 insertions(+) diff --git a/imgui-binding/src/main/java/imgui/ImGui.java b/imgui-binding/src/main/java/imgui/ImGui.java index 8111959..3540461 100644 --- a/imgui-binding/src/main/java/imgui/ImGui.java +++ b/imgui-binding/src/main/java/imgui/ImGui.java @@ -519,6 +519,20 @@ public final class ImGui { Jni::ImVec2Cpy(env, ImGui::GetWindowPos(), dstImVec2); */ + /** + * Get current window position in screen space (useful if you want to do your own drawing via the DrawList API) + */ + public static native float getWindowPosX(); /* + return ImGui::GetWindowPos().x; + */ + + /** + * Get current window position in screen space (useful if you want to do your own drawing via the DrawList API) + */ + public static native float getWindowPosY(); /* + return ImGui::GetWindowPos().y; + */ + /** * Get current window size */ @@ -526,6 +540,20 @@ public final class ImGui { Jni::ImVec2Cpy(env, ImGui::GetWindowSize(), dstImVec2); */ + /** + * Get current window size + */ + public static native float getWindowSizeX(); /* + return ImGui::GetWindowSize().x; + */ + + /** + * Get current window size + */ + public static native float getWindowSizeY(); /* + return ImGui::GetWindowSize().y; + */ + /** * Get current window width (shortcut for GetWindowSize().x) */ @@ -747,6 +775,20 @@ public final class ImGui { Jni::ImVec2Cpy(env, ImGui::GetContentRegionMax(), dstImVec2); */ + /** + * Current content boundaries (typically window boundaries including scrolling, or current column boundaries), in windows coordinates + */ + public static native float getContentRegionMaxX(); /* + return ImGui::GetContentRegionMax().x; + */ + + /** + * Current content boundaries (typically window boundaries including scrolling, or current column boundaries), in windows coordinates + */ + public static native float getContentRegionMaxY(); /* + return ImGui::GetContentRegionMax().y; + */ + /** * == GetContentRegionMax() - GetCursorPos() */ @@ -754,6 +796,20 @@ public final class ImGui { Jni::ImVec2Cpy(env, ImGui::GetContentRegionAvail(), dstImVec2); */ + /** + * == GetContentRegionMax() - GetCursorPos() + */ + public static native float getContentRegionAvailX(); /* + return ImGui::GetContentRegionAvail().x; + */ + + /** + * == GetContentRegionMax() - GetCursorPos() + */ + public static native float getContentRegionAvailY(); /* + return ImGui::GetContentRegionAvail().y; + */ + /** * Content boundaries min (roughly (0,0)-Scroll), in window coordinates */ @@ -768,10 +824,32 @@ public final class ImGui { Jni::ImVec2Cpy(env, ImGui::GetWindowContentRegionMin(), dstImVec2); */ + /** + * Content boundaries max (roughly (0,0)+Size-Scroll) where Size can be override with SetNextWindowContentSize(), in window coordinates + */ + public static native float getWindowContentRegionMinX(); /* + return ImGui::GetWindowContentRegionMin().x; + */ + + /** + * Content boundaries max (roughly (0,0)+Size-Scroll) where Size can be override with SetNextWindowContentSize(), in window coordinates + */ + public static native float getWindowContentRegionMinY(); /* + return ImGui::GetWindowContentRegionMin().y; + */ + public static native void getWindowContentRegionMax(ImVec2 dstImVec2); /* Jni::ImVec2Cpy(env, ImGui::GetWindowContentRegionMax(), dstImVec2); */ + public static native float getWindowContentRegionMaxX(); /* + return ImGui::GetWindowContentRegionMax().x; + */ + + public static native float getWindowContentRegionMaxY(); /* + return ImGui::GetWindowContentRegionMax().y; + */ + // Windows Scrolling /** @@ -962,6 +1040,20 @@ public final class ImGui { Jni::ImVec2Cpy(env, ImGui::GetFontTexUvWhitePixel(), dstImVec2); */ + /** + * Get UV coordinate for a while pixel, useful to draw custom shapes via the ImDrawList API + */ + public static native float getFontTexUvWhitePixelX(); /* + return ImGui::GetFontTexUvWhitePixel().x; + */ + + /** + * Get UV coordinate for a while pixel, useful to draw custom shapes via the ImDrawList API + */ + public static native float getFontTexUvWhitePixelY(); /* + return ImGui::GetFontTexUvWhitePixel().y; + */ + /** * Retrieve given style color with style alpha applied and optional extra alpha multiplier */ @@ -1175,22 +1267,37 @@ public final class ImGui { Jni::ImVec2Cpy(env, ImGui::GetCursorPos(), dstImVec2); */ + /** + * Cursor position in window coordinates (relative to window position) + */ public static native float getCursorPosX(); /* return ImGui::GetCursorPosX(); */ + /** + * Cursor position in window coordinates (relative to window position) + */ public static native float getCursorPosY(); /* return ImGui::GetCursorPosY(); */ + /** + * Cursor position in window coordinates (relative to window position) + */ public static native void setCursorPos(float x, float y); /* ImGui::SetCursorPos(ImVec2(x, y)); */ + /** + * Cursor position in window coordinates (relative to window position) + */ public static native void setCursorPosX(float x); /* ImGui::SetCursorPosX(x); */ + /** + * Cursor position in window coordinates (relative to window position) + */ public static native void setCursorPosY(float y); /* ImGui::SetCursorPosY(y); */ @@ -1202,6 +1309,20 @@ public final class ImGui { Jni::ImVec2Cpy(env, ImGui::GetCursorStartPos(), dstImVec2); */ + /** + * Initial cursor position in window coordinates + */ + public static native float getCursorStartPosX(); /* + return ImGui::GetCursorStartPos().x; + */ + + /** + * Initial cursor position in window coordinates + */ + public static native float getCursorStartPosY(); /* + return ImGui::GetCursorStartPos().y; + */ + /** * Cursor position in absolute screen coordinates [0..io.DisplaySize] (useful to work with ImDrawList API) */ @@ -1209,6 +1330,20 @@ public final class ImGui { Jni::ImVec2Cpy(env, ImGui::GetCursorScreenPos(), dstImVec2); */ + /** + * Cursor position in absolute screen coordinates [0..io.DisplaySize] (useful to work with ImDrawList API) + */ + public static native float getCursorScreenPosX(); /* + return ImGui::GetCursorScreenPos().x; + */ + + /** + * Cursor position in absolute screen coordinates [0..io.DisplaySize] (useful to work with ImDrawList API) + */ + public static native float getCursorScreenPosY(); /* + return ImGui::GetCursorScreenPos().y; + */ + /** * Cursor position in absolute screen coordinates [0..io.DisplaySize] */ @@ -4664,6 +4799,20 @@ public final class ImGui { Jni::ImVec2Cpy(env, ImGui::GetItemRectMin(), dstImVec2); */ + /** + * Get upper-left bounding rectangle of the last item (screen space) + */ + public static native float getItemRectMinX(); /* + return ImGui::GetItemRectMin().x; + */ + + /** + * Get upper-left bounding rectangle of the last item (screen space) + */ + public static native float getItemRectMinY(); /* + return ImGui::GetItemRectMin().y; + */ + /** * Get lower-right bounding rectangle of the last item (screen space) */ @@ -4671,6 +4820,20 @@ public final class ImGui { Jni::ImVec2Cpy(env, ImGui::GetItemRectMax(), dstImVec2); */ + /** + * Get lower-right bounding rectangle of the last item (screen space) + */ + public static native float getItemRectMaxX(); /* + return ImGui::GetItemRectMax().x; + */ + + /** + * Get lower-right bounding rectangle of the last item (screen space) + */ + public static native float getItemRectMaxY(); /* + return ImGui::GetItemRectMax().y; + */ + /** * Get size of last item */ @@ -4678,6 +4841,20 @@ public final class ImGui { Jni::ImVec2Cpy(env, ImGui::GetItemRectSize(), dstImVec2); */ + /** + * Get size of last item + */ + public static native float getItemRectSizeX(); /* + return ImGui::GetItemRectSize().x; + */ + + /** + * Get size of last item + */ + public static native float getItemRectSizeY(); /* + return ImGui::GetItemRectSize().y; + */ + /** * Allow last item to be overlapped by a subsequent item. sometimes useful with invisible buttons, selectables, etc. to catch unused area. */ @@ -5034,6 +5211,20 @@ public final class ImGui { Jni::ImVec2Cpy(env, ImGui::GetMousePos(), dstImVec2); */ + /** + * Shortcut to ImGui::GetIO().MousePos provided by user, to be consistent with other calls + */ + public static native float getMousePosX(); /* + return ImGui::GetMousePos().x; + */ + + /** + * Shortcut to ImGui::GetIO().MousePos provided by user, to be consistent with other calls + */ + public static native float getMousePosY(); /* + return ImGui::GetMousePos().y; + */ + /** * Retrieve backup of mouse position at the time of opening popup we have BeginPopup() into */ @@ -5041,6 +5232,20 @@ public final class ImGui { Jni::ImVec2Cpy(env, ImGui::GetMousePosOnOpeningCurrentPopup(), dstImVec2); */ + /** + * Retrieve backup of mouse position at the time of opening popup we have BeginPopup() into + */ + public static native float getMousePosOnOpeningCurrentPopupX(); /* + return ImGui::GetMousePosOnOpeningCurrentPopup().x; + */ + + /** + * Retrieve backup of mouse position at the time of opening popup we have BeginPopup() into + */ + public static native float getMousePosOnOpeningCurrentPopupY(); /* + return ImGui::GetMousePosOnOpeningCurrentPopup().y; + */ + /** * Return the delta from the initial clicking position while the mouse button is pressed or was just released. * This is locked and return 0.0f until the mouse moves past a distance threshold at least once. If lockThreshold {@code < -1.0f} uses io.MouseDraggingThreshold. @@ -5049,6 +5254,22 @@ public final class ImGui { Jni::ImVec2Cpy(env, ImGui::GetMouseDragDelta(), dstImVec2); */ + /** + * Return the delta from the initial clicking position while the mouse button is pressed or was just released. + * This is locked and return 0.0f until the mouse moves past a distance threshold at least once. If lockThreshold {@code < -1.0f} uses io.MouseDraggingThreshold. + */ + public static native float getMouseDragDeltaX(); /* + return ImGui::GetMouseDragDelta().x; + */ + + /** + * Return the delta from the initial clicking position while the mouse button is pressed or was just released. + * This is locked and return 0.0f until the mouse moves past a distance threshold at least once. If lockThreshold {@code < -1.0f} uses io.MouseDraggingThreshold. + */ + public static native float getMouseDragDeltaY(); /* + return ImGui::GetMouseDragDelta().y; + */ + /** * Return the delta from the initial clicking position while the mouse button is pressed or was just released. * This is locked and return 0.0f until the mouse moves past a distance threshold at least once. If lockThreshold {@code < -1.0f} uses io.MouseDraggingThreshold. @@ -5057,6 +5278,22 @@ public final class ImGui { Jni::ImVec2Cpy(env, ImGui::GetMouseDragDelta(button), dstImVec2); */ + /** + * Return the delta from the initial clicking position while the mouse button is pressed or was just released. + * This is locked and return 0.0f until the mouse moves past a distance threshold at least once. If lockThreshold {@code < -1.0f} uses io.MouseDraggingThreshold. + */ + public static native float getMouseDragDeltaX(int button); /* + return ImGui::GetMouseDragDelta(button).x; + */ + + /** + * Return the delta from the initial clicking position while the mouse button is pressed or was just released. + * This is locked and return 0.0f until the mouse moves past a distance threshold at least once. If lockThreshold {@code < -1.0f} uses io.MouseDraggingThreshold. + */ + public static native float getMouseDragDeltaY(int button); /* + return ImGui::GetMouseDragDelta(button).y; + */ + /** * Return the delta from the initial clicking position while the mouse button is pressed or was just released. * This is locked and return 0.0f until the mouse moves past a distance threshold at least once. If lockThreshold {@code < -1.0f} uses io.MouseDraggingThreshold. @@ -5065,6 +5302,22 @@ public final class ImGui { Jni::ImVec2Cpy(env, ImGui::GetMouseDragDelta(button, lockThreshold), dstImVec2); */ + /** + * Return the delta from the initial clicking position while the mouse button is pressed or was just released. + * This is locked and return 0.0f until the mouse moves past a distance threshold at least once. If lockThreshold {@code < -1.0f} uses io.MouseDraggingThreshold. + */ + public static native float getMouseDragDeltaX(int button, float lockThreshold); /* + return ImGui::GetMouseDragDelta(button, lockThreshold).x; + */ + + /** + * Return the delta from the initial clicking position while the mouse button is pressed or was just released. + * This is locked and return 0.0f until the mouse moves past a distance threshold at least once. If lockThreshold {@code < -1.0f} uses io.MouseDraggingThreshold. + */ + public static native float getMouseDragDeltaY(int button, float lockThreshold); /* + return ImGui::GetMouseDragDelta(button, lockThreshold).y; + */ + public static native void resetMouseDragDelta(); /* ImGui::ResetMouseDragDelta(); */