Update binding API to Dear ImGui v1.75

This commit is contained in:
SpaiR committed 2020-02-10 23:18:12 +03:00
1 parent 14bb10f595
commit eed23dbd39
7 files changed
+102 -51

No files matched your search

@@ -105,6 +105,9 @@ public final class ImDrawList {
// Primitives // Primitives
// - For rectangular primitives, "pMin" and "pMax" represent the upper-left and lower-right corners. // - For rectangular primitives, "pMin" and "pMax" represent the upper-left and lower-right corners.
// - For circle primitives, use "num_segments == 0" to automatically calculate tessellation (preferred).
// In future versions we will use textures to provide cheaper and higher-quality circles.
// Use AddNgon() and AddNgonFilled() functions if you need to guaranteed a specific number of sides.
public native void addLine(float p1X, float p1Y, float p2X, float p2Y, int col); /* public native void addLine(float p1X, float p1Y, float p2X, float p2Y, int col); /*
getDrawList(env->GetIntField(object, drawListTypeID))->AddLine(ImVec2(p1X, p1Y), ImVec2(p2X, p2Y), col); getDrawList(env->GetIntField(object, drawListTypeID))->AddLine(ImVec2(p1X, p1Y), ImVec2(p2X, p2Y), col);
@@ -190,6 +193,18 @@ public final class ImDrawList {
getDrawList(env->GetIntField(object, drawListTypeID))->AddCircleFilled(ImVec2(centreX, centreY), radius, col, numSegments); getDrawList(env->GetIntField(object, drawListTypeID))->AddCircleFilled(ImVec2(centreX, centreY), radius, col, numSegments);
*/ */
public native void AddNgon(float centreX, float centreY, float radius, int col, int numSegments); /*
getDrawList(env->GetIntField(object, drawListTypeID))->AddNgon(ImVec2(centreX, centreY), radius, col, numSegments);
*/
public native void AddNgon(float centreX, float centreY, float radius, int col, int numSegments, float thickness); /*
getDrawList(env->GetIntField(object, drawListTypeID))->AddNgon(ImVec2(centreX, centreY), radius, col, numSegments, thickness);
*/
public native void AddNgonFilled(float centreX, float centreY, float radius, int col, int numSegments); /*
getDrawList(env->GetIntField(object, drawListTypeID))->AddNgonFilled(ImVec2(centreX, centreY), radius, col, numSegments);
*/
public native void addText(float posX, float posY, int col, String textBegin); /* public native void addText(float posX, float posY, int col, String textBegin); /*
getDrawList(env->GetIntField(object, drawListTypeID))->AddText(ImVec2(posX, posY), col, textBegin); getDrawList(env->GetIntField(object, drawListTypeID))->AddText(ImVec2(posX, posY), col, textBegin);
*/ */
@@ -225,12 +240,12 @@ public final class ImDrawList {
getDrawList(env->GetIntField(object, drawListTypeID))->AddConvexPolyFilled(_points, numPoints, col); getDrawList(env->GetIntField(object, drawListTypeID))->AddConvexPolyFilled(_points, numPoints, col);
*/ */
public native void addBezierCurve(float pos0X, float pos0Y, float cp0X, float cp0Y, float cp1X, float cp1Y, float pos1X, float pos1Y, int col, float thickness); /* public native void addBezierCurve(float p1X, float p1Y, float p2X, float p2Y, float p3X, float p3Y, float p4X, float p4Y, int col, float thickness); /*
getDrawList(env->GetIntField(object, drawListTypeID))->AddBezierCurve(ImVec2(pos0X, pos0Y), ImVec2(cp0X, cp0Y), ImVec2(cp1X, cp1Y), ImVec2(pos1X, pos1Y), col, thickness); getDrawList(env->GetIntField(object, drawListTypeID))->AddBezierCurve(ImVec2(p1X, p1Y), ImVec2(p2X, p2Y), ImVec2(p3X, p3Y), ImVec2(p4X, p4Y), col, thickness);
*/ */
public native void addBezierCurve(float pos0X, float pos0Y, float cp0X, float cp0Y, float cp1X, float cp1Y, float pos1X, float pos1Y, int col, float thickness, int numSegments); /* public native void addBezierCurve(float p1X, float p1Y, float p2X, float p2Y, float p3X, float p3Y, float p4X, float p4Y, int col, float thickness, int numSegments); /*
getDrawList(env->GetIntField(object, drawListTypeID))->AddBezierCurve(ImVec2(pos0X, pos0Y), ImVec2(cp0X, cp0Y), ImVec2(cp1X, cp1Y), ImVec2(pos1X, pos1Y), col, thickness, numSegments); getDrawList(env->GetIntField(object, drawListTypeID))->AddBezierCurve(ImVec2(p1X, p1Y), ImVec2(p2X, p2Y), ImVec2(p3X, p3Y), ImVec2(p4X, p4Y), col, thickness, numSegments);
*/ */
// Image primitives // Image primitives
@@ -338,8 +353,8 @@ public final class ImDrawList {
getDrawList(env->GetIntField(object, drawListTypeID))->PathArcToFast(ImVec2(centerX, centerY), radius, aMinOf12, aMaxOf12); getDrawList(env->GetIntField(object, drawListTypeID))->PathArcToFast(ImVec2(centerX, centerY), radius, aMinOf12, aMaxOf12);
*/ */
public native void pathBezierCurveTo(float p1X, float p1Y, float p2X, float p2Y, float p3X, float p3Y, int numSegments); /* public native void pathBezierCurveTo(float p2X, float p2Y, float p3X, float p3Y, float p4X, float p4Y, int numSegments); /*
getDrawList(env->GetIntField(object, drawListTypeID))->PathBezierCurveTo(ImVec2(p1X, p1Y), ImVec2(p2X, p2Y), ImVec2(p3X, p3Y), numSegments); getDrawList(env->GetIntField(object, drawListTypeID))->PathBezierCurveTo(ImVec2(p2X, p2Y), ImVec2(p3X, p3Y), ImVec2(p4X, p4Y), numSegments);
*/ */
public native void pathRect(float rectMinX, float rectMinY, float rectMaxX, float rectMaxY); /* public native void pathRect(float rectMinX, float rectMinY, float rectMaxX, float rectMaxY); /*
@@ -355,8 +370,10 @@ public final class ImDrawList {
*/ */
// Advanced: Channels // Advanced: Channels
// - Use to split render into layers. By switching channels to can render out-of-order (e.g. submit foreground primitives before background primitives) // - Use to split render into layers. By switching channels to can render out-of-order (e.g. submit FG primitives before BG primitives)
// - Use to minimize draw calls (e.g. if going back-and-forth between multiple non-overlapping clipping rectangles, prefer to append into separate channels then merge at the end) // - Use to minimize draw calls (e.g. if going back-and-forth between multiple clipping rectangles, prefer to append into separate channels then merge at the end)
// Prefer using your own persistent copy of ImDrawListSplitter as you can stack them.
// Using the ImDrawList::ChannelsXXXX you cannot stack a split over another.
public native void channelsSplit(int count); /* public native void channelsSplit(int count); /*
ImDrawList* drawList = getDrawList(env->GetIntField(object, drawListTypeID)); ImDrawList* drawList = getDrawList(env->GetIntField(object, drawListTypeID));
@@ -135,6 +135,14 @@ public final class ImFont implements ImDestroyable {
IM_FONT->EllipsisChar = (ImWchar)ellipsisChar; IM_FONT->EllipsisChar = (ImWchar)ellipsisChar;
*/ */
public native boolean getDirtyLookupTables(); /*
return IM_FONT->DirtyLookupTables;
*/
public native void setDirtyLookupTables(boolean dirtyLookupTables); /*
IM_FONT->DirtyLookupTables = dirtyLookupTables;
*/
/** /**
* Base font scale, multiplied by the per-window font scale which you can adjust with SetWindowFontScale() * Base font scale, multiplied by the per-window font scale which you can adjust with SetWindowFontScale()
*/ */
@@ -191,13 +199,5 @@ public final class ImFont implements ImDestroyable {
IM_FONT->MetricsTotalSurface = metricsTotalSurface; IM_FONT->MetricsTotalSurface = metricsTotalSurface;
*/ */
public native boolean getDirtyLookupTables(); /*
return IM_FONT->DirtyLookupTables;
*/
public native void setDirtyLookupTables(boolean dirtyLookupTables); /*
IM_FONT->DirtyLookupTables = dirtyLookupTables;
*/
// TODO methods // TODO methods
} }
+35 -33
View File
@@ -529,7 +529,7 @@ public final class ImGui {
*/ */
/** /**
* Set next window background color alpha. helper to easily modify ImGuiCol_WindowBg/ChildBg/PopupBg. * Set next window background color alpha. helper to easily override the Alpha component of ImGuiCol_WindowBg/ChildBg/PopupBg.
* You may also use ImGuiWindowFlags_NoBackground. * You may also use ImGuiWindowFlags_NoBackground.
*/ */
public static native void setNextWindowBgAlpha(float alpha); /* public static native void setNextWindowBgAlpha(float alpha); /*
@@ -1495,6 +1495,7 @@ public final class ImGui {
// - Adjust format string to decorate the value with a prefix, a suffix, or adapt the editing and display precision e.g. "%.3f" -> 1.234; "%5.2f secs" -> 01.23 secs; "Biscuit: %.0f" -> Biscuit: 1; etc. // - Adjust format string to decorate the value with a prefix, a suffix, or adapt the editing and display precision e.g. "%.3f" -> 1.234; "%5.2f secs" -> 01.23 secs; "Biscuit: %.0f" -> Biscuit: 1; etc.
// - Speed are per-pixel of mouse movement (vSpeed=0.2f: mouse needs to move by 5 pixels to increase value by 1). For gamepad/keyboard navigation, minimum speed is Max(vSpeed, minimum_step_at_given_precision). // - Speed are per-pixel of mouse movement (vSpeed=0.2f: mouse needs to move by 5 pixels to increase value by 1). For gamepad/keyboard navigation, minimum speed is Max(vSpeed, minimum_step_at_given_precision).
// - Use vMin < vMax to clamp edits to given limits. Note that CTRL+Click manual input can override those limits. // - Use vMin < vMax to clamp edits to given limits. Note that CTRL+Click manual input can override those limits.
// - Use v_max = FLT_MAX / INT_MAX etc to avoid clamping to a maximum, same with v_min = -FLT_MAX / INT_MIN to avoid clamping to a minimum.
// - Use vMin > vMax to lock edits. // - Use vMin > vMax to lock edits.
public static native boolean dragFloat(String label, float[] v); /* public static native boolean dragFloat(String label, float[] v); /*
@@ -2520,7 +2521,7 @@ public final class ImGui {
*/ */
// Widgets: Input with Keyboard // Widgets: Input with Keyboard
// - If you want to use InputText() with a dynamic string type such as std::string or your own, see misc/cpp/imgui_stdlib.h // - If you want to use InputText() with std::string or any custom dynamic string type, see misc/cpp/imgui_stdlib.h and comments in imgui_demo.cpp.
// - Most of the ImGuiInputTextFlags flags are only useful for InputText() and not for InputFloatX, InputIntX, InputDouble etc. // - Most of the ImGuiInputTextFlags flags are only useful for InputText() and not for InputFloatX, InputIntX, InputDouble etc.
/*JNI /*JNI
@@ -3655,6 +3656,7 @@ public final class ImGui {
// - Unless modal, they can be closed by clicking anywhere outside them, or by pressing ESCAPE. // - Unless modal, they can be closed by clicking anywhere outside them, or by pressing ESCAPE.
// - Their visibility state (~bool) is held internally by imgui instead of being held by the programmer as we are used to with regular Begin() calls. // - Their visibility state (~bool) is held internally by imgui instead of being held by the programmer as we are used to with regular Begin() calls.
// User can manipulate the visibility state by calling OpenPopup(). // User can manipulate the visibility state by calling OpenPopup().
// - We default to use the right mouse (ImGuiMouseButton_Right=1) for the Popup Context functions.
// (*) You can use IsItemHovered(ImGuiHoveredFlags_AllowWhenBlockedByPopup) to bypass it and detect hovering even when normally blocked by a popup. // (*) You can use IsItemHovered(ImGuiHoveredFlags_AllowWhenBlockedByPopup) to bypass it and detect hovering even when normally blocked by a popup.
// Those three properties are connected. The library needs to hold their visibility state because it can close popups at any time. // Those three properties are connected. The library needs to hold their visibility state because it can close popups at any time.
@@ -3839,7 +3841,8 @@ public final class ImGui {
// Columns // Columns
// - You can also use SameLine(posX) to mimic simplified columns. // - You can also use SameLine(posX) to mimic simplified columns.
// - The columns API is work-in-progress and rather lacking (columns are arguably the worst part of dear imgui at the moment!) // - The columns API is work-in-progress and rather lacking (columns are arguably the worst part of dear imgui at the moment!)
// - By end of the 2019 we will expose a new 'Table' api which will replace columns. // - There is a maximum of 64 columns.
// - Currently working on new 'Tables' api which will replace columns (see GitHub #2957)
public static native void columns(); /* public static native void columns(); /*
ImGui::Columns(); ImGui::Columns();
@@ -4451,7 +4454,9 @@ public final class ImGui {
ImGui::ColorConvertHSVtoRGB(hsv[0], hsv[1], hsv[2], rgb[0], rgb[1], rgb[2]); ImGui::ColorConvertHSVtoRGB(hsv[0], hsv[1], hsv[2], rgb[0], rgb[1], rgb[2]);
*/ */
// Inputs Utilities // Inputs Utilities: Keyboard
// - For 'int user_key_index' you can use your own indices/enums according to how your backend/engine stored them in io.KeysDown[].
// - We don't know the meaning of those value. You can use GetKeyIndex() to map a ImGuiKey_ value into the user index.
/** /**
* Map ImGuiKey_* values into user's key index. == io.KeyMap[key] * Map ImGuiKey_* values into user's key index. == io.KeyMap[key]
@@ -4461,22 +4466,21 @@ public final class ImGui {
*/ */
/** /**
* Is key being held. == io.KeysDown[userKeyIndex]. note that imgui doesn't know the semantic of each entry of io.KeysDown[]. * Is key being held. == io.KeysDown[user_key_index].
* Use your own indices/enums according to how your backend/engine stored them into io.KeysDown[]!
*/ */
public static native boolean isKeyDown(int userKeyIndex); /* public static native boolean isKeyDown(int userKeyIndex); /*
return ImGui::IsKeyDown(userKeyIndex); return ImGui::IsKeyDown(userKeyIndex);
*/ */
/** /**
* Was key pressed (went from !Down to Down). if repeat=true, uses io.KeyRepeatDelay / KeyRepeatRate * Was key pressed (went from !Down to Down)? if repeat=true, uses io.KeyRepeatDelay / KeyRepeatRate
*/ */
public static native boolean isKeyPressed(int userKeyIndex); /* public static native boolean isKeyPressed(int userKeyIndex); /*
return ImGui::IsKeyPressed(userKeyIndex); return ImGui::IsKeyPressed(userKeyIndex);
*/ */
/** /**
* Was key pressed (went from !Down to Down). if repeat=true, uses io.KeyRepeatDelay / KeyRepeatRate * Was key pressed (went from !Down to Down)? if repeat=true, uses io.KeyRepeatDelay / KeyRepeatRate
*/ */
public static native boolean isKeyPressed(int userKeyIndex, boolean repeat); /* public static native boolean isKeyPressed(int userKeyIndex, boolean repeat); /*
return ImGui::IsKeyPressed(userKeyIndex, repeat); return ImGui::IsKeyPressed(userKeyIndex, repeat);
@@ -4497,6 +4501,29 @@ public final class ImGui {
return ImGui::GetKeyPressedAmount(keyIndex, repeatDelay, rate); return ImGui::GetKeyPressedAmount(keyIndex, repeatDelay, rate);
*/ */
/**
* Attention: misleading name! manually override io.WantCaptureKeyboard flag next frame (said flag is entirely left for your application to handle).
* e.g. force capture keyboard when your widget is being hovered.
* This is equivalent to setting "io.WantCaptureKeyboard = wantCaptureKeyboardValue"; after the next NewFrame() call.
*/
public static native void captureKeyboardFromApp(); /*
ImGui::CaptureKeyboardFromApp();
*/
/**
* Attention: misleading name! manually override io.WantCaptureKeyboard flag next frame (said flag is entirely left for your application to handle).
* e.g. force capture keyboard when your widget is being hovered.
* This is equivalent to setting "io.WantCaptureKeyboard = wantCaptureKeyboardValue"; after the next NewFrame() call.
*/
public static native void captureKeyboardFromApp(boolean wantCaptureKeyboardValue); /*
ImGui::CaptureKeyboardFromApp(wantCaptureKeyboardValue);
*/
// Inputs Utilities: Mouse
// - To refer to a mouse button, you may use named enums in your code e.g. ImGuiMouseButton_Left, ImGuiMouseButton_Right.
// - You can also use regular integer: it is forever guaranteed that 0=Left, 1=Right, 2=Middle.
// - Dragging operations are only reported after mouse has moved a certain distance away from the initial clicking position (see 'lock_threshold' and 'io.MouseDraggingThreshold')
/** /**
* Is mouse button held (0=left, 1=right, 2=middle) * Is mouse button held (0=left, 1=right, 2=middle)
*/ */
@@ -4536,13 +4563,6 @@ public final class ImGui {
return ImGui::IsMouseReleased(button); return ImGui::IsMouseReleased(button);
*/ */
/**
* Is mouse dragging. if lockThreshold {@code < -1.0f} uses io.MouseDraggingThreshold
*/
public static native boolean isMouseDragging(); /*
return ImGui::IsMouseDragging();
*/
/** /**
* Is mouse dragging. if lockThreshold {@code < -1.0f} uses io.MouseDraggingThreshold * Is mouse dragging. if lockThreshold {@code < -1.0f} uses io.MouseDraggingThreshold
*/ */
@@ -4647,24 +4667,6 @@ public final class ImGui {
ImGui::SetMouseCursor(type); ImGui::SetMouseCursor(type);
*/ */
/**
* Attention: misleading name! manually override io.WantCaptureKeyboard flag next frame (said flag is entirely left for your application to handle).
* e.g. force capture keyboard when your widget is being hovered.
* This is equivalent to setting "io.WantCaptureKeyboard = wantCaptureKeyboardValue"; after the next NewFrame() call.
*/
public static native void captureKeyboardFromApp(); /*
ImGui::CaptureKeyboardFromApp();
*/
/**
* Attention: misleading name! manually override io.WantCaptureKeyboard flag next frame (said flag is entirely left for your application to handle).
* e.g. force capture keyboard when your widget is being hovered.
* This is equivalent to setting "io.WantCaptureKeyboard = wantCaptureKeyboardValue"; after the next NewFrame() call.
*/
public static native void captureKeyboardFromApp(boolean wantCaptureKeyboardValue); /*
ImGui::CaptureKeyboardFromApp(wantCaptureKeyboardValue);
*/
/** /**
* Attention: misleading name! manually override io.WantCaptureMouse flag next frame (said flag is entirely left for your application to handle). * Attention: misleading name! manually override io.WantCaptureMouse flag next frame (said flag is entirely left for your application to handle).
* This is equivalent to setting "io.WantCaptureMouse = wantCaptureMouseValue;" after the next NewFrame() call. * This is equivalent to setting "io.WantCaptureMouse = wantCaptureMouseValue;" after the next NewFrame() call.
@@ -319,7 +319,7 @@ public final class ImGuiIO {
*/ */
// Optional: Access OS clipboard // Optional: Access OS clipboard
// (default to use native Win32 clipboard on Windows, otherwise uses a private clipboard. Override to access OS clipboard on other architectures) // (default to use native Win32 clipIsMouseDraggingboard on Windows, otherwise uses a private clipboard. Override to access OS clipboard on other architectures)
/*JNI /*JNI
jobject _setClipboardTextCallback = NULL; jobject _setClipboardTextCallback = NULL;
@@ -406,6 +406,22 @@ public final class ImGuiStyle {
ImGui::GetStyle().CurveTessellationTol = curveTessellationTol; ImGui::GetStyle().CurveTessellationTol = curveTessellationTol;
*/ */
/**
* Maximum error (in pixels) allowed when using AddCircle()/AddCircleFilled() or drawing rounded corner rectangles with no explicit segment count specified.
* Decrease for higher quality but more geometry.
*/
public native float getCircleSegmentMaxError(); /*
return ImGui::GetStyle().CircleSegmentMaxError;
*/
/**
* Maximum error (in pixels) allowed when using AddCircle()/AddCircleFilled() or drawing rounded corner rectangles with no explicit segment count specified.
* Decrease for higher quality but more geometry.
*/
public native void setCircleSegmentMaxError(float circleSegmentMaxError); /*
ImGui::GetStyle().CircleSegmentMaxError = circleSegmentMaxError;
*/
// Colors // Colors
// BINDING NOTICE: buff is a 2d array with sizes: [ImGuiCol_COUNT][4] // BINDING NOTICE: buff is a 2d array with sizes: [ImGuiCol_COUNT][4]
// //
@@ -0,0 +1,15 @@
package imgui.enums;
/**
* Identify a mouse button.
* Those values are guaranteed to be stable and we frequently use 0/1 directly. Named enums provided for convenience.
*/
public final class ImGuiMouseButton {
private ImGuiMouseButton() {
}
public static final int Left = 0;
public static final int Right = 1;
public static final int Middle = 2;
public static final int COUNT = 5;
}
@@ -17,5 +17,6 @@ public final class ImGuiMouseCursor {
public static final int ResizeNESW = 5; // When hovering over the bottom-left corner of a window public static final int ResizeNESW = 5; // When hovering over the bottom-left corner of a window
public static final int ResizeNWSE = 6; // When hovering over the bottom-right corner of a window public static final int ResizeNWSE = 6; // When hovering over the bottom-right corner of a window
public static final int Hand = 7; // (Unused by Dear ImGui functions. Use for e.g. hyperlinks) public static final int Hand = 7; // (Unused by Dear ImGui functions. Use for e.g. hyperlinks)
public static final int COUNT = 8; public static final int NotAllowed = 8; // When hovering something with disallowed interaction. Usually a crossed circle.
public static final int COUNT = 9;
} }