From 326594f33a0435754b0850218f8e7d5110369859 Mon Sep 17 00:00:00 2001 From: AlTsayun <44773756+AlTsayun@users.noreply.github.com> Date: Fri, 24 Sep 2021 17:01:17 +0300 Subject: [PATCH] [API] Implement binding for ImGui::getWindowScrollbarRect (#81) * Implemented binding for ImGui::getWindowScrollbarRect * checkstyle fixes * more logic naming for boolean fields in ImGuiWindow struct Co-authored-by: aleksandr.cayun --- .../src/main/java/imgui/internal/ImGui.java | 23 ++++++++++++++ .../main/java/imgui/internal/ImGuiWindow.java | 31 +++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 imgui-binding/src/main/java/imgui/internal/ImGuiWindow.java diff --git a/imgui-binding/src/main/java/imgui/internal/ImGui.java b/imgui-binding/src/main/java/imgui/internal/ImGui.java index 9a105bb..78e2ce5 100644 --- a/imgui-binding/src/main/java/imgui/internal/ImGui.java +++ b/imgui-binding/src/main/java/imgui/internal/ImGui.java @@ -7,6 +7,8 @@ import imgui.type.ImInt; public final class ImGui extends imgui.ImGui { private static final ImGuiDockNode DOCK_NODE = new ImGuiDockNode(0); + private static final ImGuiWindow IMGUI_CURRENT_WINDOW = new ImGuiWindow(0); + /*JNI #include "_common.h" #include @@ -172,4 +174,25 @@ public final class ImGui extends imgui.ImGui { private static native boolean nSplitterBehaviour(float bbMinX, float bbMinY, float bbMaxX, float bbMaxY, int id, int imGuiAxis, float[] size1, float[] size2, float minSize1, float minSize2, float hoverExtend, float hoverVisibilityDelay); /* return ImGui::SplitterBehavior(ImRect(bbMinX, bbMinY, bbMaxX, bbMaxY), id, (ImGuiAxis)imGuiAxis, &size1[0], &size2[0], minSize1, minSize2, hoverExtend, hoverVisibilityDelay); */ + + public static ImGuiWindow getCurrentWindow() { + IMGUI_CURRENT_WINDOW.ptr = nGetCurrentWindow(); + return IMGUI_CURRENT_WINDOW; + } + + private static native long nGetCurrentWindow(); /* + return (intptr_t)ImGui::GetCurrentWindow(); + */ + + public static ImRect getWindowScrollbarRect(final ImGuiWindow imGuiWindow, int axis) { + final ImRect imRect = new ImRect(); + nGetWindowScrollbarRect(imGuiWindow.ptr, axis, imRect.min, imRect.max); + return imRect; + } + + private static native void nGetWindowScrollbarRect(long windowPtr, int axis, ImVec2 minDstImVec2, ImVec2 maxDstImVec2); /* + ImRect rect = ImGui::GetWindowScrollbarRect((ImGuiWindow*)windowPtr, static_cast(axis)); + Jni::ImVec2Cpy(env, &rect.Min, minDstImVec2); + Jni::ImVec2Cpy(env, &rect.Max, maxDstImVec2); + */ } diff --git a/imgui-binding/src/main/java/imgui/internal/ImGuiWindow.java b/imgui-binding/src/main/java/imgui/internal/ImGuiWindow.java new file mode 100644 index 0000000..5e77c30 --- /dev/null +++ b/imgui-binding/src/main/java/imgui/internal/ImGuiWindow.java @@ -0,0 +1,31 @@ +package imgui.internal; + +import imgui.binding.ImGuiStruct; + +public class ImGuiWindow extends ImGuiStruct { + public ImGuiWindow(final long ptr) { + super(ptr); + } + + /*JNI + #include "_common.h" + #include + + #define IMGUI_WINDOW ((ImGuiWindow*)STRUCT_PTR) + */ + + /** + * Is scrollbar visible? + */ + public native boolean isScrollbarX(); /* + return IMGUI_WINDOW->ScrollbarX; + */ + + /** + * Is scrollbar visible? + */ + public native boolean isScrollbarY(); /* + return IMGUI_WINDOW->ScrollbarY; + */ + +}