[API] Dear ImGui v1.80

This commit is contained in:
SpaiR committed 2021-01-23 20:03:49 +02:00
1 parent 723c6ba8a3
commit 33309088a2
21 files changed
+1016 -330

No files matched your search

@@ -277,12 +277,32 @@ public final class ImDrawList extends ImGuiStruct {
IM_DRAW_LIST->AddConvexPolyFilled(_points, numPoints, col);
*/
public native void addBezierCurve(float p1X, float p1Y, float p2X, float p2Y, float p3X, float p3Y, float p4X, float p4Y, int col, float thickness); /*
IM_DRAW_LIST->AddBezierCurve(ImVec2(p1X, p1Y), ImVec2(p2X, p2Y), ImVec2(p3X, p3Y), ImVec2(p4X, p4Y), col, thickness);
/**
* Cubic Bezier (4 control points)
*/
public native void addBezierCubic(float p1X, float p1Y, float p2X, float p2Y, float p3X, float p3Y, float p4X, float p4Y, int col, float thickness); /*
IM_DRAW_LIST->AddBezierCubic(ImVec2(p1X, p1Y), ImVec2(p2X, p2Y), ImVec2(p3X, p3Y), ImVec2(p4X, p4Y), col, 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, int numSegments); /*
IM_DRAW_LIST->AddBezierCurve(ImVec2(p1X, p1Y), ImVec2(p2X, p2Y), ImVec2(p3X, p3Y), ImVec2(p4X, p4Y), col, thickness, numSegments);
/**
* Cubic Bezier (4 control points)
*/
public native void addBezierCubic(float p1X, float p1Y, float p2X, float p2Y, float p3X, float p3Y, float p4X, float p4Y, int col, float thickness, int numSegments); /*
IM_DRAW_LIST->AddBezierCubic(ImVec2(p1X, p1Y), ImVec2(p2X, p2Y), ImVec2(p3X, p3Y), ImVec2(p4X, p4Y), col, thickness, numSegments);
*/
/**
* Quadratic Bezier (3 control points)
*/
public native void addBezierQuadratic(float p1X, float p1Y, float p2X, float p2Y, float p3X, float p3Y, int col, float thickness); /*
IM_DRAW_LIST->AddBezierQuadratic(ImVec2(p1X, p1Y), ImVec2(p2X, p2Y), ImVec2(p3X, p3Y), col, thickness);
*/
/**
* Quadratic Bezier (3 control points)
*/
public native void addBezierQuadratic(float p1X, float p1Y, float p2X, float p2Y, float p3X, float p3Y, int col, float thickness, int numSegments); /*
IM_DRAW_LIST->AddBezierQuadratic(ImVec2(p1X, p1Y), ImVec2(p2X, p2Y), ImVec2(p3X, p3Y), col, thickness, numSegments);
*/
// Image primitives
@@ -373,13 +393,39 @@ public final class ImDrawList extends ImGuiStruct {
IM_DRAW_LIST->PathArcTo(ImVec2(centerX, centerY), radius, aMin, aMax, numSegments);
*/
// Use precomputed angles for a 12 steps circle
/**
* Use precomputed angles for a 12 steps circle
*/
public native void pathArcToFast(float centerX, float centerY, float radius, int aMinOf12, int aMaxOf12); /*
IM_DRAW_LIST->PathArcToFast(ImVec2(centerX, centerY), radius, aMinOf12, aMaxOf12);
*/
public native void pathBezierCurveTo(float p2X, float p2Y, float p3X, float p3Y, float p4X, float p4Y, int numSegments); /*
IM_DRAW_LIST->PathBezierCurveTo(ImVec2(p2X, p2Y), ImVec2(p3X, p3Y), ImVec2(p4X, p4Y), numSegments);
/**
* Cubic Bezier (4 control points)
*/
public native void pathBezierCubicCurveTo(float p2X, float p2Y, float p3X, float p3Y, float p4X, float p4Y); /*
IM_DRAW_LIST->PathBezierCubicCurveTo(ImVec2(p2X, p2Y), ImVec2(p3X, p3Y), ImVec2(p4X, p4Y));
*/
/**
* Cubic Bezier (4 control points)
*/
public native void pathBezierCubicCurveTo(float p2X, float p2Y, float p3X, float p3Y, float p4X, float p4Y, int numSegments); /*
IM_DRAW_LIST->PathBezierCubicCurveTo(ImVec2(p2X, p2Y), ImVec2(p3X, p3Y), ImVec2(p4X, p4Y), numSegments);
*/
/**
* Quadratic Bezier (3 control points)
*/
public native void pathBezierQuadraticCurveTo(float p2X, float p2Y, float p3X, float p3Y); /*
IM_DRAW_LIST->PathBezierQuadraticCurveTo(ImVec2(p2X, p2Y), ImVec2(p3X, p3Y));
*/
/**
* Quadratic Bezier (3 control points)
*/
public native void pathBezierQuadraticCurveTo(float p2X, float p2Y, float p3X, float p3Y, int numSegments); /*
IM_DRAW_LIST->PathBezierQuadraticCurveTo(ImVec2(p2X, p2Y), ImVec2(p3X, p3Y), numSegments);
*/
public native void pathRect(float rectMinX, float rectMinY, float rectMaxX, float rectMaxY); /*
@@ -410,7 +410,7 @@ public final class ImFontAtlas extends ImGuiStructDestroyable {
*/
/**
* Default + Hiragana, Katakana, Half-Width, Selection of 1946 Ideographs
* Default + Hiragana, Katakana, Half-Width, Selection of 2999 Ideographs
*/
public native short[] getGlyphRangesJapanese(); /*
RETURN_GLYPH_2_SHORT(IM_FONT_ATLAS->GetGlyphRangesJapanese());
+401 -187
View File
@@ -190,9 +190,7 @@ public class ImGui {
*/
/**
* Ends the Dear ImGui frame, finalize the draw data.
* You can get call GetDrawData() to obtain it and run your rendering function (up to v1.60, this used to call io.RenderDrawListsFn().
* Nowadays, we allow and prefer calling your render function yourself.)
* Ends the Dear ImGui frame, finalize the draw data. You can then get call GetDrawData().
*/
public static native void render(); /*
ImGui::Render();
@@ -215,8 +213,7 @@ public class ImGui {
// Demo, Debug, Information
/**
* Create Demo window (previously called ShowTestWindow). demonstrate most ImGui features.
* Call this to learn about the library!
* Create Demo window. Demonstrate most ImGui features. Call this to learn about the library!
*/
public static native void showDemoWindow(); /*
ImGui::ShowDemoWindow();
@@ -230,6 +227,24 @@ public class ImGui {
ImGui::ShowDemoWindow(&pOpen[0]);
*/
/**
* Create Metrics/Debugger window. display Dear ImGui internals: windows, draw commands, various internal state, etc.
*/
public static void showMetricsWindow(ImBoolean pOpen) {
nShowMetricsWindow(pOpen.getData());
}
/**
* Create Metrics/Debugger window. display Dear ImGui internals: windows, draw commands, various internal state, etc.
*/
public static native void showMetricsWindow(); /*
ImGui::ShowMetricsWindow();
*/
private static native void nShowMetricsWindow(boolean[] pOpen); /*
ImGui::ShowMetricsWindow(&pOpen[0]);
*/
/**
* Create About window. display Dear ImGui version, credits and build/system information.
*/
@@ -245,26 +260,6 @@ public class ImGui {
ImGui::ShowAboutWindow(&pOpen[0]);
*/
/**
* Create Debug/Metrics window.
* Display Dear ImGui internals: draw commands (with individual draw calls and vertices), window list, basic internal state, etc.
*/
public static native void showMetricsWindow(); /*
ImGui::ShowMetricsWindow();
*/
/**
* Create Debug/Metrics window.
* Display Dear ImGui internals: draw commands (with individual draw calls and vertices), window list, basic internal state, etc.
*/
public static void showMetricsWindow(ImBoolean pOpen) {
nShowMetricsWindow(pOpen.getData());
}
private static native void nShowMetricsWindow(boolean[] pOpen); /*
ImGui::ShowMetricsWindow(&pOpen[0]);
*/
/**
* Add style editor block (not a window).
* You can pass in a reference ImGuiStyle structure to compare to, revert to and save to (else it uses the default style)
@@ -303,7 +298,7 @@ public class ImGui {
*/
/**
* Get the compiled version string e.g. "1.23" (essentially the compiled value for IMGUI_VERSION)
* Get the compiled version string e.g. "1.80 WIP" (essentially the value for IMGUI_VERSION from the compiled version of imgui.cpp)
*/
public static native String getVersion(); /*
return env->NewStringUTF(ImGui::GetVersion());
@@ -318,27 +313,12 @@ public class ImGui {
ImGui::StyleColorsDark();
*/
public static void styleColorsDark(ImGuiStyle ref) {
nStyleColorsDark(ref.ptr);
public static void styleColorsDark(ImGuiStyle style) {
nStyleColorsDark(style.ptr);
}
private static native void nStyleColorsDark(long ref); /*
ImGui::StyleColorsDark((ImGuiStyle*)ref);
*/
/**
* Classic imgui style
*/
public static native void styleColorsClassic(); /*
ImGui::StyleColorsClassic();
*/
public static void styleColorsClassic(ImGuiStyle ref) {
nStyleColorsClassic(ref.ptr);
}
private static native void nStyleColorsClassic(long ref); /*
ImGui::StyleColorsClassic((ImGuiStyle*)ref);
private static native void nStyleColorsDark(long ptr); /*
ImGui::StyleColorsDark((ImGuiStyle*)ptr);
*/
/**
@@ -348,12 +328,27 @@ public class ImGui {
ImGui::StyleColorsLight();
*/
public static void styleColorsLight(ImGuiStyle ref) {
nStyleColorsLight(ref.ptr);
public static void styleColorsLight(ImGuiStyle style) {
nStyleColorsLight(style.ptr);
}
private static native void nStyleColorsLight(long ref); /*
ImGui::StyleColorsLight((ImGuiStyle*)ref);
private static native void nStyleColorsLight(long ptr); /*
ImGui::StyleColorsLight((ImGuiStyle*)ptr);
*/
/**
* Classic imgui style
*/
public static native void styleColorsClassic(); /*
ImGui::StyleColorsClassic();
*/
public static void styleColorsClassic(ImGuiStyle style) {
nStyleColorsClassic(style.ptr);
}
private static native void nStyleColorsClassic(long ptr); /*
ImGui::StyleColorsClassic((ImGuiStyle*)ptr);
*/
// Windows
@@ -402,7 +397,10 @@ public class ImGui {
// - Use child windows to begin into a self-contained independent scrolling/clipping regions within a host window. Child windows can embed their own child.
// - For each independent axis of 'size': ==0.0f: use remaining host window size / >0.0f: fixed size / <0.0f: use remaining window size minus abs(size) / Each axis can use a different mode, e.g. ImVec2(0,400).
// - BeginChild() returns false to indicate the window is collapsed or fully clipped, so you may early out and omit submitting anything to the window.
// Always call a matching EndChild() for each BeginChild() call, regardless of its return value [this is due to legacy reason and is inconsistent with most other functions such as BeginMenu/EndMenu, BeginPopup/EndPopup, etc. where the EndXXX call should only be called if the corresponding BeginXXX function returned true.]
// Always call a matching EndChild() for each BeginChild() call, regardless of its return value.
// [Important: due to legacy reason, this is inconsistent with most other functions such as BeginMenu/EndMenu,
// BeginPopup/EndPopup, etc. where the EndXXX call should only be called if the corresponding BeginXXX function
// returned true. Begin and BeginChild are the only odd ones out. Will be fixed in a future update.]
public static native boolean beginChild(String strId); /*
return ImGui::BeginChild(strId);
@@ -771,28 +769,8 @@ public class ImGui {
*/
// Content region
// - Those functions are bound to be redesigned soon (they are confusing, incomplete and return values in local window coordinates which increases confusion)
/**
* Current content boundaries (typically window boundaries including scrolling, or current column boundaries), in windows coordinates
*/
public static native void getContentRegionMax(ImVec2 dstImVec2); /*
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;
*/
// - Retrieve available space from a given point. GetContentRegionAvail() is frequently useful.
// - Those functions are bound to be redesigned (they are confusing, incomplete and the Min/Max return values are in local window coordinates which increases confusion)
/**
* == GetContentRegionMax() - GetCursorPos()
@@ -816,10 +794,24 @@ public class ImGui {
*/
/**
* Content boundaries min (roughly (0,0)-Scroll), in window coordinates
* Current content boundaries (typically window boundaries including scrolling, or current column boundaries), in windows coordinates
*/
public static native float getContentRegionAvailWidth(); /*
return ImGui::GetContentRegionAvailWidth();
public static native void getContentRegionMax(ImVec2 dstImVec2); /*
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;
*/
/**
@@ -858,35 +850,21 @@ public class ImGui {
// Windows Scrolling
/**
* Get scrolling amount [0..GetScrollMaxX()]
* Get scrolling amount [0 .. GetScrollMaxX()]
*/
public static native float getScrollX(); /*
return ImGui::GetScrollX();
*/
/**
* Get scrolling amount [0..GetScrollMaxY()]
* Get scrolling amount [0 .. GetScrollMaxY()]
*/
public static native float getScrollY(); /*
return ImGui::GetScrollY();
*/
/**
* Get maximum scrolling amount ~~ ContentSize.x - WindowSize.x
*/
public static native float getScrollMaxX(); /*
return ImGui::GetScrollMaxX();
*/
/**
* Get maximum scrolling amount ~~ ContentSize.y - WindowSize.y
*/
public static native float getScrollMaxY(); /*
return ImGui::GetScrollMaxY();
*/
/**
* Set scrolling amount [0..GetScrollMaxX()]
* Set scrolling amount [0 .. GetScrollMaxX()]
*/
public static native void setScrollX(float scrollX); /*
ImGui::SetScrollX(scrollX);
@@ -899,6 +877,20 @@ public class ImGui {
ImGui::SetScrollY(scrollY);
*/
/**
* Get maximum scrolling amount ~~ ContentSize.x - WindowSize.x - DecorationsSize.x
*/
public static native float getScrollMaxX(); /*
return ImGui::GetScrollMaxX();
*/
/**
* Get maximum scrolling amount ~~ ContentSize.y - WindowSize.y - DecorationsSize.y
*/
public static native float getScrollMaxY(); /*
return ImGui::GetScrollMaxY();
*/
/**
* Adjust scrolling amount to make current cursor position visible. center_x_ratio=0.0: left, 0.5: center, 1.0: right.
* When using to make a "default/current item" visible, consider using SetItemDefaultFocus() instead.
@@ -973,14 +965,23 @@ public class ImGui {
ImGui::PopFont();
*/
/**
* Modify a style color. always use this if you modify the style after NewFrame().
*/
public static native void pushStyleColor(int imGuiCol, float r, float g, float b, float a); /*
ImGui::PushStyleColor(imGuiCol, (ImU32)ImColor((float)r, (float)g, (float)b, (float)a));
*/
/**
* Modify a style color. always use this if you modify the style after NewFrame().
*/
public static native void pushStyleColor(int imGuiCol, int r, int g, int b, int a); /*
ImGui::PushStyleColor(imGuiCol, (ImU32)ImColor((int)r, (int)g, (int)b, (int)a));
*/
/**
* Modify a style color. always use this if you modify the style after NewFrame().
*/
public static native void pushStyleColor(int imGuiCol, int col); /*
ImGui::PushStyleColor(imGuiCol, col);
*/
@@ -993,10 +994,16 @@ public class ImGui {
ImGui::PopStyleColor(count);
*/
/**
* Modify a style float variable. always use this if you modify the style after NewFrame().
*/
public static native void pushStyleVar(int imGuiStyleVar, float val); /*
ImGui::PushStyleVar(imGuiStyleVar, val);
*/
/**
* Modify a style ImVec2 variable. always use this if you modify the style after NewFrame().
*/
public static native void pushStyleVar(int imGuiStyleVar, float valX, float valY); /*
ImGui::PushStyleVar(imGuiStyleVar, ImVec2(valX, valY));
*/
@@ -1010,13 +1017,79 @@ public class ImGui {
*/
/**
* Retrieve style color as stored in ImGuiStyle structure. use to feed back into PushStyleColor(),
* otherwise use GetColorU32() to get style color with style alpha baked in.
* Allow focusing using TAB/Shift-TAB, enabled by default but you can disable it for certain widgets
*/
public static native void getStyleColorVec4(int imGuiStyleVar, ImVec4 dstImVec4); /*
Jni::ImVec4Cpy(env, ImGui::GetStyleColorVec4(imGuiStyleVar), dstImVec4);
public static native void pushAllowKeyboardFocus(boolean allowKeyboardFocus); /*
ImGui::PushAllowKeyboardFocus(allowKeyboardFocus);
*/
public static native void popAllowKeyboardFocus(); /*
ImGui::PopAllowKeyboardFocus();
*/
/**
* In 'repeat' mode, Button*() functions return repeated true in a typematic manner (using io.KeyRepeatDelay/io.KeyRepeatRate setting).
* Note that you can call IsItemActive() after any Button() to tell if the button is held in the current frame.
*/
public static native void pushButtonRepeat(boolean repeat); /*
ImGui::PushButtonRepeat(repeat);
*/
public static native void popButtonRepeat(); /*
ImGui::PopButtonRepeat();
*/
// Parameters stacks (current window)
/**
* Push width of items for common large "item+label" widgets. {@code > 0.0f}: width in pixels,
* {@code <0.0f} align xx pixels to the right of window (so -1.0f always align width to the right side). 0.0f = default to ~2/3 of windows width,
*/
public static native void pushItemWidth(float itemWidth); /*
ImGui::PushItemWidth(itemWidth);
*/
public static native void popItemWidth(); /*
ImGui::PopItemWidth();
*/
/**
* Set width of the _next_ common large "item+label" widget. {@code > 0.0f}: width in pixels,
* {@code <0.0f} align xx pixels to the right of window (so -1.0f always align width to the right side)
*/
public static native void setNextItemWidth(float itemWidth); /*
ImGui::SetNextItemWidth(itemWidth);
*/
/**
* Width of item given pushed settings and current cursor position. NOT necessarily the width of last item unlike most 'Item' functions.
*/
public static native float calcItemWidth(); /*
return ImGui::CalcItemWidth();
*/
/**
* Push Word-wrapping positions for Text*() commands. {@code < 0.0f}: no wrapping; 0.0f: wrap to end of window (or column); {@code > 0.0f}: wrap at
* 'wrap_posX' position in window local space
*/
public static native void pushTextWrapPos(); /*
ImGui::PushTextWrapPos();
*/
/**
* Push Word-wrapping positions for Text*() commands. {@code < 0.0f}: no wrapping; 0.0f: wrap to end of window (or column); {@code > 0.0f}: wrap at
* 'wrap_posX' position in window local space
*/
public static native void pushTextWrapPos(float wrapLocalPosX); /*
ImGui::PushTextWrapPos(wrapLocalPosX);
*/
public static native void popTextWrapPos(); /*
ImGui::PopTextWrapPos();
*/
// Style read access
/**
* Get current font.
*/
@@ -1089,76 +1162,12 @@ public class ImGui {
return ImGui::GetColorU32((ImU32)col);
*/
// Parameters stacks (current window)
/**
* Push width of items for common large "item+label" widgets. {@code > 0.0f}: width in pixels,
* {@code <0.0f} align xx pixels to the right of window (so -1.0f always align width to the right side). 0.0f = default to ~2/3 of windows width,
* Retrieve style color as stored in ImGuiStyle structure. use to feed back into PushStyleColor(),
* otherwise use GetColorU32() to get style color with style alpha baked in.
*/
public static native void pushItemWidth(float itemWidth); /*
ImGui::PushItemWidth(itemWidth);
*/
public static native void popItemWidth(); /*
ImGui::PopItemWidth();
*/
/**
* Set width of the _next_ common large "item+label" widget. {@code > 0.0f}: width in pixels,
* {@code <0.0f} align xx pixels to the right of window (so -1.0f always align width to the right side)
*/
public static native void setNextItemWidth(float itemWidth); /*
ImGui::SetNextItemWidth(itemWidth);
*/
/**
* Width of item given pushed settings and current cursor position. NOT necessarily the width of last item unlike most 'Item' functions.
*/
public static native float calcItemWidth(); /*
return ImGui::CalcItemWidth();
*/
/**
* Push Word-wrapping positions for Text*() commands. {@code < 0.0f}: no wrapping; 0.0f: wrap to end of window (or column); {@code > 0.0f}: wrap at
* 'wrap_posX' position in window local space
*/
public static native void pushTextWrapPos(); /*
ImGui::PushTextWrapPos();
*/
/**
* Push Word-wrapping positions for Text*() commands. {@code < 0.0f}: no wrapping; 0.0f: wrap to end of window (or column); {@code > 0.0f}: wrap at
* 'wrap_posX' position in window local space
*/
public static native void pushTextWrapPos(float wrapLocalPosX); /*
ImGui::PushTextWrapPos(wrapLocalPosX);
*/
public static native void popTextWrapPos(); /*
ImGui::PopTextWrapPos();
*/
/**
* Allow focusing using TAB/Shift-TAB, enabled by default but you can disable it for certain widgets
*/
public static native void pushAllowKeyboardFocus(boolean allowKeyboardFocus); /*
ImGui::PushAllowKeyboardFocus(allowKeyboardFocus);
*/
public static native void popAllowKeyboardFocus(); /*
ImGui::PopAllowKeyboardFocus();
*/
/**
* In 'repeat' mode, Button*() functions return repeated true in a typematic manner (using io.KeyRepeatDelay/io.KeyRepeatRate setting).
* Note that you can call IsItemActive() after any Button() to tell if the button is held in the current frame.
*/
public static native void pushButtonRepeat(boolean repeat); /*
ImGui::PushButtonRepeat(repeat);
*/
public static native void popButtonRepeat(); /*
ImGui::PopButtonRepeat();
public static native void getStyleColorVec4(int imGuiStyleVar, ImVec4 dstImVec4); /*
Jni::ImVec4Cpy(env, ImGui::GetStyleColorVec4(imGuiStyleVar), dstImVec4);
*/
// Cursor / Layout
@@ -1219,28 +1228,28 @@ public class ImGui {
*/
/**
* Move content position toward the right, by style.IndentSpacing or indent_w if != 0
* Move content position toward the right, by indent_w, or style.IndentSpacing if indent_w {@code <= 0}.
*/
public static native void indent(); /*
ImGui::Indent();
*/
/**
* Move content position toward the right, by style.IndentSpacing or indent_w if != 0
* Move content position toward the right, by indent_w, or style.IndentSpacing if indent_w {@code <= 0}.
*/
public static native void indent(float indentW); /*
ImGui::Indent(indentW);
*/
/**
* Move content position back to the left, by style.IndentSpacing or indent_w if != 0
* Move content position back to the left, by indent_w, or style.IndentSpacing if indent_w {@code <= 0}.
*/
public static native void unindent(); /*
ImGui::Unindent();
*/
/**
* Move content position back to the left, by style.IndentSpacing or indent_w if != 0
* Move content position back to the left, by indent_w, or style.IndentSpacing if indent_w {@code <= 0}.
*/
public static native void unindent(float indentW); /*
ImGui::Unindent(indentW);
@@ -3448,7 +3457,7 @@ public class ImGui {
return ImGui::InputScalarN(label, dataType, &pData[0], components, &pStep, &pStepFast, format, imGuiInputTextFlags);
*/
// Widgets: Color Editor/Picker (tip: the ColorEdit* functions have a little colored preview square that can be left-clicked to open a picker, and right-clicked to open an option menu.)
// Widgets: Color Editor/Picker (tip: the ColorEdit* functions have a little color square that can be left-clicked to open a picker, and right-clicked to open an option menu.)
// - Note that in C++ a 'float v[X]' function argument is the _same_ as 'float* v', the array syntax is just a way to document the number of elements that are expected to be accessible.
// - You can pass the address of a first float element out of a contiguous structure, e.g. &myvector.x
@@ -3600,21 +3609,23 @@ public class ImGui {
*/
/**
* When 'pOpen' isn't NULL, display an additional small close button on upper right of the header
* When 'pVisible' isn't NULL, display an additional small close button on upper right of the header
* which will set the bool to false when clicked, if '*pVisible==false' don't display the header.
*/
public static boolean collapsingHeader(String label, ImBoolean pOpen) {
return nCollapsingHeader(label, pOpen.getData(), 0);
public static boolean collapsingHeader(String label, ImBoolean pVisible) {
return nCollapsingHeader(label, pVisible.getData(), 0);
}
/**
* When 'pOpen' isn't NULL, display an additional small close button on upper right of the header
* When 'pVisible' isn't NULL, display an additional small close button on upper right of the header
* which will set the bool to false when clicked, if '*pVisible==false' don't display the header.
*/
public static boolean collapsingHeader(String label, ImBoolean pOpen, int imGuiTreeNodeFlags) {
return nCollapsingHeader(label, pOpen.getData(), imGuiTreeNodeFlags);
public static boolean collapsingHeader(String label, ImBoolean pVisible, int imGuiTreeNodeFlags) {
return nCollapsingHeader(label, pVisible.getData(), imGuiTreeNodeFlags);
}
private static native boolean nCollapsingHeader(String label, boolean[] pOpen, int imGuiTreeNodeFlags); /*
return ImGui::CollapsingHeader(label, &pOpen[0], imGuiTreeNodeFlags);
private static native boolean nCollapsingHeader(String label, boolean[] pVisible, int imGuiTreeNodeFlags); /*
return ImGui::CollapsingHeader(label, &pVisible[0], imGuiTreeNodeFlags);
*/
/**
@@ -3905,7 +3916,7 @@ public class ImGui {
*/
// Tooltips
// - Tooltip are windows following the mouse which do not take focus away.
// - Tooltip are windows following the mouse. They do not take focus away.
/**
* Begin/append a tooltip window. to create full-featured tooltip (with any kind of items).
@@ -4173,11 +4184,214 @@ public class ImGui {
return ImGui::IsPopupOpen(strId, imGuiPopupFlags);
*/
// Tables
// [BETA API] API may evolve slightly! If you use this, please update to the next version when it comes out!
// - Full-featured replacement for old Columns API.
// - See Demo->Tables for demo code.
// - See top of imgui_tables.cpp for general commentary.
// - See ImGuiTableFlags_ and ImGuiTableColumnFlags_ enums for a description of available flags.
// The typical call flow is:
// - 1. Call BeginTable().
// - 2. Optionally call TableSetupColumn() to submit column name/flags/defaults.
// - 3. Optionally call TableSetupScrollFreeze() to request scroll freezing of columns/rows.
// - 4. Optionally call TableHeadersRow() to submit a header row. Names are pulled from TableSetupColumn() data.
// - 5. Populate contents:
// - In most situations you can use TableNextRow() + TableSetColumnIndex(N) to start appending into a column.
// - If you are using tables as a sort of grid, where every columns is holding the same type of contents,
// you may prefer using TableNextColumn() instead of TableNextRow() + TableSetColumnIndex().
// TableNextColumn() will automatically wrap-around into the next row if needed.
// - IMPORTANT: Comparatively to the old Columns() API, we need to call TableNextColumn() for the first column!
// - Summary of possible call flow:
// --------------------------------------------------------------------------------------------------------
// TableNextRow() -> TableSetColumnIndex(0) -> Text("Hello 0") -> TableSetColumnIndex(1) -> Text("Hello 1") // OK
// TableNextRow() -> TableNextColumn() -> Text("Hello 0") -> TableNextColumn() -> Text("Hello 1") // OK
// TableNextColumn() -> Text("Hello 0") -> TableNextColumn() -> Text("Hello 1") // OK: TableNextColumn() automatically gets to next row!
// TableNextRow() -> Text("Hello 0") // Not OK! Missing TableSetColumnIndex() or TableNextColumn()! Text will not appear!
// --------------------------------------------------------------------------------------------------------
// - 5. Call EndTable()
public static native boolean beginTable(String id, int column); /*
return ImGui::BeginTable(id, column);
*/
public static native boolean beginTable(String id, int column, int imGuiTableFlags); /*
return ImGui::BeginTable(id, column, imGuiTableFlags);
*/
public static native boolean beginTable(String id, int column, int imGuiTableFlags, float outerSizeX, float outerSizeY); /*
return ImGui::BeginTable(id, column, imGuiTableFlags, ImVec2(outerSizeX, outerSizeY));
*/
public static native boolean beginTable(String id, int column, int imGuiTableFlags, float outerSizeX, float outerSizeY, float innerWidth); /*
return ImGui::BeginTable(id, column, imGuiTableFlags, ImVec2(outerSizeX, outerSizeY), innerWidth);
*/
/**
* Only call EndTable() if BeginTable() returns true!
*/
public static native void endTable(); /*
ImGui::EndTable();
*/
/**
* Append into the first cell of a new row.
*/
public static native void tableNextRow(); /*
ImGui::TableNextRow();
*/
/**
* Append into the first cell of a new row.
*/
public static native void tableNextRow(int imGuiTableRowFlags); /*
ImGui::TableNextRow(imGuiTableRowFlags);
*/
/**
* Append into the first cell of a new row.
*/
public static native void tableNextRow(int imGuiTableRowFlags, float minRowHeight); /*
ImGui::TableNextRow(imGuiTableRowFlags, minRowHeight);
*/
/**
* Append into the next column (or first column of next row if currently in last column). Return true when column is visible.
*/
public static native boolean tableNextColumn(); /*
return ImGui::TableNextColumn();
*/
/**
* Append into the specified column. Return true when column is visible.
*/
public static native boolean tableSetColumnIndex(int columnN); /*
return ImGui::TableSetColumnIndex(columnN);
*/
// Tables: Headers & Columns declaration
// - Use TableSetupColumn() to specify label, resizing policy, default width/weight, id, various other flags etc.
// - Use TableHeadersRow() to create a header row and automatically submit a TableHeader() for each column.
// Headers are required to perform: reordering, sorting, and opening the context menu.
// The context menu can also be made available in columns body using ImGuiTableFlags_ContextMenuInBody.
// - You may manually submit headers using TableNextRow() + TableHeader() calls, but this is only useful in
// some advanced use cases (e.g. adding custom widgets in header row).
// - Use TableSetupScrollFreeze() to lock columns/rows so they stay visible when scrolled.
public static native void tableSetupColumn(String label); /*
ImGui::TableSetupColumn(label);
*/
public static native void tableSetupColumn(String label, int imGuiTableColumnFlags); /*
ImGui::TableSetupColumn(label, imGuiTableColumnFlags);
*/
public static native void tableSetupColumn(String label, int imGuiTableColumnFlags, float initWidthOrWeight); /*
ImGui::TableSetupColumn(label, imGuiTableColumnFlags, initWidthOrWeight);
*/
public static native void tableSetupColumn(String label, int imGuiTableColumnFlags, float initWidthOrWeight, int userId); /*
ImGui::TableSetupColumn(label, imGuiTableColumnFlags, initWidthOrWeight, userId);
*/
/**
* Lock columns/rows so they stay visible when scrolled.
*/
public static native void tableSetupScrollFreeze(int cols, int rows); /*
ImGui::TableSetupScrollFreeze(cols, rows);
*/
/**
* Submit all headers cells based on data provided to TableSetupColumn() + submit context menu
*/
public static native void tableHeadersRow(); /*
ImGui::TableHeadersRow();
*/
/**
* Submit one header cell manually (rarely used)
*/
public static native void tableHeader(String label); /*
ImGui::TableHeader(label);
*/
// Tables: Sorting
// - Call TableGetSortSpecs() to retrieve latest sort specs for the table. NULL when not sorting.
// - When 'SpecsDirty == true' you should sort your data. It will be true when sorting specs have changed
// since last call, or the first time. Make sure to set 'SpecsDirty = false' after sorting, else you may
// wastefully sort your data every frame!
// - Lifetime: don't hold on this pointer over multiple frames or past any subsequent call to BeginTable().
// TODO: TableGetSortSpecs()
// Tables: Miscellaneous functions
// - Functions args 'int column_n' treat the default value of -1 as the same as passing the current column index.
/**
* Return number of columns (value passed to BeginTable).
*/
public static native int tableGetColumnCount(); /*
return ImGui::TableGetColumnCount();
*/
/**
* Return current column index.
*/
public static native int tableGetColumnIndex(); /*
return ImGui::TableGetColumnIndex();
*/
/**
* Return current row index.
*/
public static native int tableGetRowIndex(); /*
return ImGui::TableGetRowIndex();
*/
/**
* Return "" if column didn't have a name declared by TableSetupColumn(). Pass -1 to use current column.
*/
public static native String tableGetColumnName(); /*
return env->NewStringUTF(ImGui::TableGetColumnName());
*/
/**
* Return "" if column didn't have a name declared by TableSetupColumn(). Pass -1 to use current column.
*/
public static native String tableGetColumnName(int columnN); /*
return env->NewStringUTF(ImGui::TableGetColumnName(columnN));
*/
/**
* Return column flags so you can query their Enabled/Visible/Sorted/Hovered status flags. Pass -1 to use current column.
*/
public static native int tableGetColumnFlags(); /*
return ImGui::TableGetColumnFlags();
*/
/**
* Return column flags so you can query their Enabled/Visible/Sorted/Hovered status flags. Pass -1 to use current column.
*/
public static native int tableGetColumnFlags(int columnN); /*
return ImGui::TableGetColumnFlags(columnN);
*/
/**
* Change the color of a cell, row, or column. See ImGuiTableBgTarget_ flags for details.
*/
public static native void tableSetBgColor(int imGuiTableBgTarget, int color); /*
ImGui::TableSetBgColor(imGuiTableBgTarget, color);
*/
/**
* Change the color of a cell, row, or column. See ImGuiTableBgTarget_ flags for details.
*/
public static native void tableSetBgColor(int imGuiTableBgTarget, int color, int columnN); /*
ImGui::TableSetBgColor(imGuiTableBgTarget, color, columnN);
*/
// Legacy Columns API (2020: prefer using Tables!)
// 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!)
// - There is a maximum of 64 columns.
// - Currently working on new 'Tables' api which will replace columns around Q2 2020 (see GitHub #2957).
public static native void columns(); /*
ImGui::Columns();
@@ -4408,7 +4622,7 @@ public class ImGui {
*/
/**
* set next window class (rare/advanced uses: provide hints to the platform back-end via altered viewport flags and parent/child info)
* set next window class (rare/advanced uses: provide hints to the platform backend via altered viewport flags and parent/child info)
*/
public static void setNextWindowClass(ImGuiWindowClass windowClass) {
nSetNextWindowClass(windowClass.ptr);
@@ -4504,7 +4718,6 @@ public class ImGui {
*/
// Drag and Drop
// - [BETA API] API may evolve!
// - If you stop calling BeginDragDropSource() the payload is preserved however it won't have a preview tooltip (we currently display a fallback "..." tooltip as replacement)
private static WeakReference<Object> objectPayloadRef = null;
@@ -4664,6 +4877,7 @@ public class ImGui {
*/
// Clipping
// - Mouse hovering is affected by ImGui::PushClipRect() calls, unlike direct calls to ImDrawList::PushClipRect() which are render only.
public static native void pushClipRect(float clipRectMinX, float clipRectMinY, float clipRectMaxX, float clipRectMaxY, boolean intersectWithCurrentClipRect); /*
ImGui::PushClipRect(ImVec2(clipRectMinX, clipRectMinY), ImVec2(clipRectMaxX, clipRectMaxY), intersectWithCurrentClipRect);
@@ -5428,7 +5642,7 @@ public class ImGui {
// Note: You may use GetWindowViewport() to get the current viewport of the current window.
/**
* Platform/renderer functions, for back-end to setup + viewports list.
* Platform/renderer functions, for backend to setup + viewports list.
*/
public static ImGuiPlatformIO getPlatformIO() {
if (platformIO == null) {
@@ -5472,7 +5686,7 @@ public class ImGui {
/**
* Call DestroyWindow platform functions for all viewports.
* Call from back-end Shutdown() if you need to close platform windows before imgui shutdown.
* Call from backend Shutdown() if you need to close platform windows before imgui shutdown.
* Otherwise will be called by DestroyContext().
*/
public static native void destroyPlatformWindows(); /*
@@ -5480,7 +5694,7 @@ public class ImGui {
*/
/**
* This is a helper for back-ends.
* This is a helper for backends.
*/
public static ImGuiViewport findViewportByID(int imGuiID) {
FIND_VIEWPORT.ptr = nFindViewportByID(imGuiID);
@@ -5492,7 +5706,7 @@ public class ImGui {
*/
/**
* This is a helper for back-ends. The type platform_handle is decided by the back-end (e.g. HWND, MyWindow*, GLFWwindow* etc.)
* This is a helper for backends. The type platform_handle is decided by the backend (e.g. HWND, MyWindow*, GLFWwindow* etc.)
*/
public static ImGuiViewport findViewportByPlatformHandle(long platformHandle) {
FIND_VIEWPORT.ptr = nFindViewportByPlatformHandle(platformHandle);
+43 -29
View File
@@ -60,35 +60,35 @@ public final class ImGuiIO {
}
/**
* See ImGuiBackendFlags enum. Set by back-end to communicate features supported by the back-end.
* See ImGuiBackendFlags enum. Set by backend to communicate features supported by the backend.
*/
public native int getBackendFlags(); /*
return ImGui::GetIO().BackendFlags;
*/
/**
* See ImGuiBackendFlags enum. Set by back-end to communicate features supported by the back-end.
* See ImGuiBackendFlags enum. Set by backend to communicate features supported by the backend.
*/
public native void setBackendFlags(int backendFlags); /*
ImGui::GetIO().BackendFlags = backendFlags;
*/
/**
* See ImGuiBackendFlags enum. Set by back-end to communicate features supported by the back-end.
* See ImGuiBackendFlags enum. Set by backend to communicate features supported by the backend.
*/
public void addBackendFlags(final int backendFlags) {
setBackendFlags(getBackendFlags() | backendFlags);
}
/**
* See ImGuiBackendFlags enum. Set by back-end to communicate features supported by the back-end.
* See ImGuiBackendFlags enum. Set by backend to communicate features supported by the backend.
*/
public void removeBackendFlags(final int backendFlags) {
setBackendFlags(getBackendFlags() & ~(backendFlags));
}
/**
* See ImGuiBackendFlags enum. Set by back-end to communicate features supported by the back-end.
* See ImGuiBackendFlags enum. Set by backend to communicate features supported by the backend.
*/
public boolean hasBackendFlags(final int flags) {
return (getBackendFlags() & flags) != 0;
@@ -304,7 +304,7 @@ public final class ImGuiIO {
/**
* Request ImGui to draw a mouse cursor for you (if you are on a platform without a mouse cursor).
* Cannot be easily renamed to 'io.ConfigXXX' because this is frequently used by back-end implementations.
* Cannot be easily renamed to 'io.ConfigXXX' because this is frequently used by backend implementations.
*/
public native boolean getMouseDrawCursor(); /*
return ImGui::GetIO().MouseDrawCursor;
@@ -312,7 +312,7 @@ public final class ImGuiIO {
/**
* Request ImGui to draw a mouse cursor for you (if you are on a platform without a mouse cursor).
* Cannot be easily renamed to 'io.ConfigXXX' because this is frequently used by back-end implementations.
* Cannot be easily renamed to 'io.ConfigXXX' because this is frequently used by backend implementations.
*/
public native void setMouseDrawCursor(boolean mouseDrawCursor); /*
ImGui::GetIO().MouseDrawCursor = mouseDrawCursor;
@@ -321,7 +321,7 @@ public final class ImGuiIO {
/**
* OS X style: Text editing cursor movement using Alt instead of Ctrl, Shortcuts using Cmd/Super instead of Ctrl,
* Line/Text Start and End using Cmd+Arrows instead of Home/End, Double click selects by word instead of selecting whole text,
* Multi-selection in lists uses Cmd/Super instead of Ctrl (was called io.OptMacOSXBehaviors prior to 1.63)
* Multi-selection in lists uses Cmd/Super instead of Ctrl
*/
public native boolean getConfigMacOSXBehaviors(); /*
return ImGui::GetIO().ConfigMacOSXBehaviors;
@@ -330,26 +330,40 @@ public final class ImGuiIO {
/**
* OS X style: Text editing cursor movement using Alt instead of Ctrl, Shortcuts using Cmd/Super instead of Ctrl,
* Line/Text Start and End using Cmd+Arrows instead of Home/End, Double click selects by word instead of selecting whole text,
* Multi-selection in lists uses Cmd/Super instead of Ctrl (was called io.OptMacOSXBehaviors prior to 1.63)
* Multi-selection in lists uses Cmd/Super instead of Ctrl
*/
public native void setConfigMacOSXBehaviors(boolean configMacOSXBehaviors); /*
ImGui::GetIO().ConfigMacOSXBehaviors = configMacOSXBehaviors;
*/
/**
* Set to false to disable blinking cursor, for users who consider it distracting. (was called: io.OptCursorBlink prior to 1.63)
* Set to false to disable blinking cursor, for users who consider it distracting.
*/
public native boolean getConfigInputTextCursorBlink(); /*
return ImGui::GetIO().ConfigInputTextCursorBlink;
*/
/**
* Set to false to disable blinking cursor, for users who consider it distracting. (was called: io.OptCursorBlink prior to 1.63)
* Set to false to disable blinking cursor, for users who consider it distracting.
*/
public native void setConfigInputTextCursorBlink(boolean configInputTextCursorBlink); /*
ImGui::GetIO().ConfigInputTextCursorBlink = configInputTextCursorBlink;
*/
/**
* [BETA] Enable turning DragXXX widgets into text input with a simple mouse click-release (without moving). Not desirable on devices without a keyboard.
*/
public native boolean getConfigDragClickToInputText(); /*
return ImGui::GetIO().ConfigDragClickToInputText;
*/
/**
* [BETA] Enable turning DragXXX widgets into text input with a simple mouse click-release (without moving). Not desirable on devices without a keyboard.
*/
public native void setConfigDragClickToInputText(boolean configDragClickToInputText); /*
ImGui::GetIO().ConfigDragClickToInputText = configDragClickToInputText;
*/
/**
* Enable resizing of windows from their edges and from the lower-left corner.
* This requires (io.BackendFlags {@code &} ImGuiBackendFlags_HasMouseCursors) because it needs mouse cursor feedback.
@@ -369,31 +383,31 @@ public final class ImGuiIO {
*/
/**
* [BETA] Set to true to only allow moving windows when clicked+dragged from the title bar. Windows without a title bar are not affected.
* Enable allowing to move windows only when clicking on their title bar. Does not apply to windows without a title bar.
*/
public native boolean getConfigWindowsMoveFromTitleBarOnly(); /*
return ImGui::GetIO().ConfigWindowsMoveFromTitleBarOnly;
*/
/**
* [BETA] Set to true to only allow moving windows when clicked+dragged from the title bar. Windows without a title bar are not affected.
* Enable allowing to move windows only when clicking on their title bar. Does not apply to windows without a title bar.
*/
public native void setConfigWindowsMoveFromTitleBarOnly(boolean configWindowsMoveFromTitleBarOnly); /*
ImGui::GetIO().ConfigWindowsMoveFromTitleBarOnly = configWindowsMoveFromTitleBarOnly;
*/
/**
* [BETA] Compact window memory usage when unused. Set to -1.0f to disable.
* [Timer (in seconds) to free transient windows/tables memory buffers when unused. Set to -1.0f to disable.
*/
public native float getConfigWindowsMemoryCompactTimer(); /*
return ImGui::GetIO().ConfigWindowsMemoryCompactTimer;
public native float getConfigMemoryCompactTimer(); /*
return ImGui::GetIO().ConfigMemoryCompactTimer;
*/
/**
* [BETA] Compact window memory usage when unused. Set to -1.0f to disable.
* Timer (in seconds) to free transient windows/tables memory buffers when unused. Set to -1.0f to disable.
*/
public native void setConfigWindowsMemoryCompactTimer(float configWindowsMemoryCompactTimer); /*
ImGui::GetIO().ConfigWindowsMemoryCompactTimer = configWindowsMemoryCompactTimer;
public native void setConfigMemoryCompactTimer(float configMemoryCompactTimer); /*
ImGui::GetIO().ConfigMemoryCompactTimer = configMemoryCompactTimer;
*/
//------------------------------------------------------------------
@@ -401,28 +415,28 @@ public final class ImGuiIO {
//------------------------------------------------------------------
/**
* Optional: Platform back-end name (informational only! will be displayed in About Window) + User data for back-end/wrappers to store their own stuff.
* Optional: Platform backend name (informational only! will be displayed in About Window) + User data for backend/wrappers to store their own stuff.
*/
public native String getBackendPlatformName(); /*
return env->NewStringUTF(ImGui::GetIO().BackendPlatformName);
*/
/**
* Optional: Platform back-end name (informational only! will be displayed in About Window) + User data for back-end/wrappers to store their own stuff.
* Optional: Platform backend name (informational only! will be displayed in About Window) + User data for backend/wrappers to store their own stuff.
*/
public native void setBackendPlatformName(String backendPlatformName); /*MANUAL
ImGui::GetIO().BackendPlatformName = obj_backendPlatformName == NULL ? NULL : (char*)env->GetStringUTFChars(obj_backendPlatformName, JNI_FALSE);
*/
/**
* Optional: Renderer back-end name (informational only! will be displayed in About Window) + User data for back-end/wrappers to store their own stuff.
* Optional: Renderer backend name (informational only! will be displayed in About Window) + User data for backend/wrappers to store their own stuff.
*/
public native String getBackendRendererName(); /*
return env->NewStringUTF(ImGui::GetIO().BackendRendererName);
*/
/**
* Optional: Renderer back-end name (informational only! will be displayed in About Window) + User data for back-end/wrappers to store their own stuff.
* Optional: Renderer backend name (informational only! will be displayed in About Window) + User data for backend/wrappers to store their own stuff.
*/
public native void setBackendRendererName(String backendRendererName); /*MANUAL
ImGui::GetIO().BackendRendererName = obj_backendRendererName == NULL ? NULL : (char*)env->GetStringUTFChars(obj_backendRendererName, JNI_FALSE);
@@ -655,7 +669,7 @@ public final class ImGuiIO {
/**
* Disable default OS parenting to main viewport for secondary viewports.
* By default, viewports are marked with ParentViewportId = main_viewport,
* expecting the platform back-end to setup a parent/child relationship between the OS windows (some back-end may ignore this).
* expecting the platform backend to setup a parent/child relationship between the OS windows (some backend may ignore this).
* Set to true if you want the default to be 0, then all viewports will be top-level OS windows.
*/
public native boolean getConfigViewportsNoDefaultParent(); /*
@@ -665,7 +679,7 @@ public final class ImGuiIO {
/**
* Disable default OS parenting to main viewport for secondary viewports.
* By default, viewports are marked with ParentViewportId = main_viewport,
* expecting the platform back-end to setup a parent/child relationship between the OS windows (some back-end may ignore this).
* expecting the platform backend to setup a parent/child relationship between the OS windows (some backend may ignore this).
* Set to true if you want the default to be 0, then all viewports will be top-level OS windows.
*/
public native void setConfigViewportsNoDefaultParent(boolean value); /*
@@ -769,14 +783,14 @@ public final class ImGuiIO {
*/
/**
* Mouse wheel Horizontal. Most users don't have a mouse with an horizontal wheel, may not be filled by all back-ends.
* Mouse wheel Horizontal. Most users don't have a mouse with an horizontal wheel, may not be filled by all backends.
*/
public native float getMouseWheelH(); /*
return ImGui::GetIO().MouseWheelH;
*/
/**
* Mouse wheel Horizontal. Most users don't have a mouse with an horizontal wheel, may not be filled by all back-ends.
* Mouse wheel Horizontal. Most users don't have a mouse with an horizontal wheel, may not be filled by all backends.
*/
public native void setMouseWheelH(float mouseDeltaX); /*
ImGui::GetIO().MouseWheelH = mouseDeltaX;
@@ -973,14 +987,14 @@ public final class ImGuiIO {
*/
/**
* MousePos has been altered, back-end should reposition mouse on next frame. Rarely used! Set only when ImGuiConfigFlags_NavEnableSetMousePos flag is enabled.
* MousePos has been altered, backend should reposition mouse on next frame. Rarely used! Set only when ImGuiConfigFlags_NavEnableSetMousePos flag is enabled.
*/
public native boolean getWantSetMousePos(); /*
return ImGui::GetIO().WantSetMousePos;
*/
/**
* MousePos has been altered, back-end should reposition mouse on next frame. Rarely used! Set only when ImGuiConfigFlags_NavEnableSetMousePos flag is enabled.
* MousePos has been altered, backend should reposition mouse on next frame. Rarely used! Set only when ImGuiConfigFlags_NavEnableSetMousePos flag is enabled.
*/
public native void setWantSetMousePos(boolean wantSetMousePos); /*
ImGui::GetIO().WantSetMousePos = wantSetMousePos;
@@ -11,63 +11,63 @@ import imgui.callback.ImPlatformFuncViewportSuppImVec2;
/**
* -----------------------------------------------------------------------------
* [BETA] Platform interface for multi-viewport support
* [BETA] Platform interface for multi-viewport support
* -----------------------------------------------------------------------------
* (Optional) This is completely optional, for advanced users!
* If you are new to Dear ImGui and trying to integrate it into your engine, you can probably ignore this for now.
* This feature allows you to seamlessly drag Dear ImGui windows outside of your application viewport.
* This is achieved by creating new Platform/OS windows on the fly, and rendering into them.
* Dear ImGui manages the viewport structures, and the back-end create and maintain one Platform/OS window for each of those viewports.
* See Glossary https://github.com/ocornut/imgui/wiki/Glossary for details about some of the terminology.
* See Thread https://github.com/ocornut/imgui/issues/1542 for gifs, news and questions about this evolving feature.
* About the coordinates system:
* - When multi-viewports are enabled, all Dear ImGui coordinates become absolute coordinates (same as OS coordinates!)
* - So e.g. ImGui::SetNextWindowPos(ImVec2(0,0)) will position a window relative to your primary monitor!
* - If you want to position windows relative to your main application viewport, use ImGui::GetMainViewport().Pos as a base position.
* Steps to use multi-viewports in your application, when using a default back-end from the examples/ folder:
* - Application: Enable feature with 'io.ConfigFlags |= ImGuiConfigFlags_ViewportsEnable'.
* - Back-end: The back-end initialization will setup all necessary ImGuiPlatformIO's functions and update monitors info every frame.
* - Application: In your main loop, call ImGui::UpdatePlatformWindows(), ImGui::RenderPlatformWindowsDefault() after EndFrame() or Render().
* - Application: Fix absolute coordinates used in ImGui::SetWindowPos() or ImGui::SetNextWindowPos() calls.
* Steps to use multi-viewports in your application, when using a custom back-end:
* - Important: THIS IS NOT EASY TO DO and comes with many subtleties not described here!
* It's also an experimental feature, so some of the requirements may evolve.
* Consider using default back-ends if you can. Either way, carefully follow and refer to examples/ back-ends for details.
* - Application: Enable feature with 'io.ConfigFlags |= ImGuiConfigFlags_ViewportsEnable'.
* - Back-end: Hook ImGuiPlatformIO's Platform_* and Renderer_* callbacks (see below).
* Set 'io.BackendFlags |= ImGuiBackendFlags_PlatformHasViewports' and 'io.BackendFlags |= ImGuiBackendFlags_PlatformHasViewports'.
* Update ImGuiPlatformIO's Monitors list every frame.
* Update MousePos every frame, in absolute coordinates.
* - Application: In your main loop, call ImGui::UpdatePlatformWindows(), ImGui::RenderPlatformWindowsDefault() after EndFrame() or Render().
* You may skip calling RenderPlatformWindowsDefault() if its API is not convenient for your needs. Read comments below.
* - Application: Fix absolute coordinates used in ImGui::SetWindowPos() or ImGui::SetNextWindowPos() calls.
* About ImGui::RenderPlatformWindowsDefault():
* - This function is a mostly a _helper_ for the common-most cases, and to facilitate using default back-ends.
* - You can check its simple source code to understand what it does.
* It basically iterates secondary viewports and call 4 functions that are setup in ImGuiPlatformIO, if available:
* Platform_RenderWindow(), Renderer_RenderWindow(), Platform_SwapBuffers(), Renderer_SwapBuffers()
* Those functions pointers exists only for the benefit of RenderPlatformWindowsDefault().
* - If you have very specific rendering needs (e.g. flipping multiple swap-chain simultaneously, unusual sync/threading issues, etc.),
* you may be tempted to ignore RenderPlatformWindowsDefault() and write customized code to perform your renderingg.
* You may decide to setup the platform_io's *RenderWindow and *SwapBuffers pointers and call your functions through those pointers,
* or you may decide to never setup those pointers and call your code directly. They are a convenience, not an obligatory interface.
* (Optional) This is completely optional, for advanced users!
* If you are new to Dear ImGui and trying to integrate it into your engine, you can probably ignore this for now.
* This feature allows you to seamlessly drag Dear ImGui windows outside of your application viewport.
* This is achieved by creating new Platform/OS windows on the fly, and rendering into them.
* Dear ImGui manages the viewport structures, and the backend create and maintain one Platform/OS window for each of those viewports.
* See Glossary https://github.com/ocornut/imgui/wiki/Glossary for details about some of the terminology.
* See Thread https://github.com/ocornut/imgui/issues/1542 for gifs, news and questions about this evolving feature.
* About the coordinates system:
* - When multi-viewports are enabled, all Dear ImGui coordinates become absolute coordinates (same as OS coordinates!)
* - So e.g. ImGui::SetNextWindowPos(ImVec2(0,0)) will position a window relative to your primary monitor!
* - If you want to position windows relative to your main application viewport, use ImGui::GetMainViewport().Pos as a base position.
* Steps to use multi-viewports in your application, when using a default backend from the examples/ folder:
* - Application: Enable feature with 'io.ConfigFlags |= ImGuiConfigFlags_ViewportsEnable'.
* - Backend: The backend initialization will setup all necessary ImGuiPlatformIO's functions and update monitors info every frame.
* - Application: In your main loop, call ImGui::UpdatePlatformWindows(), ImGui::RenderPlatformWindowsDefault() after EndFrame() or Render().
* - Application: Fix absolute coordinates used in ImGui::SetWindowPos() or ImGui::SetNextWindowPos() calls.
* Steps to use multi-viewports in your application, when using a custom backend:
* - Important: THIS IS NOT EASY TO DO and comes with many subtleties not described here!
* It's also an experimental feature, so some of the requirements may evolve.
* Consider using default backends if you can. Either way, carefully follow and refer to examples/ backends for details.
* - Application: Enable feature with 'io.ConfigFlags |= ImGuiConfigFlags_ViewportsEnable'.
* - Backend: Hook ImGuiPlatformIO's Platform_* and Renderer_* callbacks (see below).
* Set 'io.BackendFlags |= ImGuiBackendFlags_PlatformHasViewports' and 'io.BackendFlags |= ImGuiBackendFlags_PlatformHasViewports'.
* Update ImGuiPlatformIO's Monitors list every frame.
* Update MousePos every frame, in absolute coordinates.
* - Application: In your main loop, call ImGui::UpdatePlatformWindows(), ImGui::RenderPlatformWindowsDefault() after EndFrame() or Render().
* You may skip calling RenderPlatformWindowsDefault() if its API is not convenient for your needs. Read comments below.
* - Application: Fix absolute coordinates used in ImGui::SetWindowPos() or ImGui::SetNextWindowPos() calls.
* About ImGui::RenderPlatformWindowsDefault():
* - This function is a mostly a _helper_ for the common-most cases, and to facilitate using default backends.
* - You can check its simple source code to understand what it does.
* It basically iterates secondary viewports and call 4 functions that are setup in ImGuiPlatformIO, if available:
* Platform_RenderWindow(), Renderer_RenderWindow(), Platform_SwapBuffers(), Renderer_SwapBuffers()
* Those functions pointers exists only for the benefit of RenderPlatformWindowsDefault().
* - If you have very specific rendering needs (e.g. flipping multiple swap-chain simultaneously, unusual sync/threading issues, etc.),
* you may be tempted to ignore RenderPlatformWindowsDefault() and write customized code to perform your renderingg.
* You may decide to setup the platform_io's *RenderWindow and *SwapBuffers pointers and call your functions through those pointers,
* or you may decide to never setup those pointers and call your code directly. They are a convenience, not an obligatory interface.
* -----------------------------------------------------------------------------
* (Optional) Access via ImGui::GetPlatformIO()
*
* ------------------------------------------------------------------
* Input - Back-end interface/functions + Monitor List
* (Optional) Access via ImGui::GetPlatformIO()
* <p>
* ------------------------------------------------------------------
* (Optional) Platform functions (e.g. Win32, GLFW, SDL2)
* For reference, the second column shows which function are generally calling the Platform Functions:
* N = ImGui::NewFrame() ~ beginning of the dear imgui frame: read info from platform/OS windows (latest size/position)
* F = ImGui::Begin(), ImGui::EndFrame() ~ during the dear imgui frame
* U = ImGui::UpdatePlatformWindows() ~ after the dear imgui frame: create and update all platform/OS windows
* R = ImGui::RenderPlatformWindowsDefault() ~ render
* D = ImGui::DestroyPlatformWindows() ~ shutdown
* The general idea is that NewFrame() we will read the current Platform/OS state, and UpdatePlatformWindows() will write to it.
* The functions are designed so we can mix and match 2 imgui_impl_xxxx files, one for the Platform (~window/input handling), one for Renderer.
* Custom engine back-ends will often provide both Platform and Renderer interfaces and so may not need to use all functions.
* Platform functions are typically called before their Renderer counterpart, apart from Destroy which are called the other way.
* Input - Backend interface/functions + Monitor List
* ------------------------------------------------------------------
* (Optional) Platform functions (e.g. Win32, GLFW, SDL2)
* For reference, the second column shows which function are generally calling the Platform Functions:
* N = ImGui::NewFrame() ~ beginning of the dear imgui frame: read info from platform/OS windows (latest size/position)
* F = ImGui::Begin(), ImGui::EndFrame() ~ during the dear imgui frame
* U = ImGui::UpdatePlatformWindows() ~ after the dear imgui frame: create and update all platform/OS windows
* R = ImGui::RenderPlatformWindowsDefault() ~ render
* D = ImGui::DestroyPlatformWindows() ~ shutdown
* The general idea is that NewFrame() we will read the current Platform/OS state, and UpdatePlatformWindows() will write to it.
* The functions are designed so we can mix and match 2 imgui_impl_xxxx files, one for the Platform (~window/input handling), one for Renderer.
* Custom engine backends will often provide both Platform and Renderer interfaces and so may not need to use all functions.
* Platform functions are typically called before their Renderer counterpart, apart from Destroy which are called the other way.
*/
public final class ImGuiPlatformIO extends ImGuiStruct {
private static final ImGuiViewport MAIN_VIEWPORT = new ImGuiViewport(0);
@@ -336,7 +336,7 @@ public final class ImGuiPlatformIO extends ImGuiStruct {
*/
/**
* // . . U . . // (Optional) Called by UpdatePlatformWindows(). Optional hook to allow the platform back-end from doing general book-keeping every frame.
* // . . U . . // (Optional) Called by UpdatePlatformWindows(). Optional hook to allow the platform backend from doing general book-keeping every frame.
*/
public native void setPlatformUpdateWindow(ImPlatformFuncViewport func); /*
IM_PLATFORM_FUNC_VIEWPORT_METHOD_TMPL(UpdateWindow)
@@ -392,7 +392,7 @@ public final class ImGuiPlatformIO extends ImGuiStruct {
*/
/**
* // (Optional) [BETA] FIXME-DPI: DPI handling: Called during Begin() every time the viewport we are outputting into changes, so back-end has a chance to swap fonts to adjust style.
* // (Optional) [BETA] FIXME-DPI: DPI handling: Called during Begin() every time the viewport we are outputting into changes, so backend has a chance to swap fonts to adjust style.
*/
public native void setPlatformOnChangedViewport(ImPlatformFuncViewport func); /*
IM_PLATFORM_FUNC_VIEWPORT_METHOD_TMPL(OnChangedViewport)
@@ -489,7 +489,7 @@ public final class ImGuiPlatformIO extends ImGuiStruct {
*/
// (Optional) Monitor list
// - Updated by: app/back-end. Update every frame to dynamically support changing monitor or DPI configuration.
// - Updated by: app/backend. Update every frame to dynamically support changing monitor or DPI configuration.
// - Used by: dear imgui to query DPI info, clamp popups/tooltips within same monitor and not have them straddle monitors.
//------------------------------------------------------------------
@@ -349,6 +349,35 @@ public final class ImGuiStyle extends ImGuiStructDestroyable {
IMGUI_STYLE->ItemInnerSpacing.y = y;
*/
/**
* Padding within a table cell.
*/
public native void getCellPadding(ImVec2 dstImVec2); /*
Jni::ImVec2Cpy(env, &IMGUI_STYLE->CellPadding, dstImVec2);
*/
/**
* Padding within a table cell.
*/
public native float getCellPaddingX(); /*
return IMGUI_STYLE->CellPadding.x;
*/
/**
* Padding within a table cell.
*/
public native float getCellPaddingY(); /*
return IMGUI_STYLE->CellPadding.y;
*/
/**
* Padding within a table cell.
*/
public native void setCellPadding(float x, float y); /*
IMGUI_STYLE->CellPadding.x = x;
IMGUI_STYLE->CellPadding.y = y;
*/
/**
* Expand reactive bounding box for touch-based system where touch position is not accurate enough.
* Unfortunately we don't sort widgets so priority on overlap will always be given to the first widget. So don't grow this too much!
@@ -692,7 +721,7 @@ public final class ImGuiStyle extends ImGuiStructDestroyable {
/**
* Enable anti-aliased lines/borders using textures where possible.
* Require back-end to render with bilinear filtering.
* Require backend to render with bilinear filtering.
* Latched at the beginning of the frame (copied to ImDrawList).
*/
public native boolean getAntiAliasedLinesUseTex(); /*
@@ -701,7 +730,7 @@ public final class ImGuiStyle extends ImGuiStructDestroyable {
/**
* Enable anti-aliased lines/borders using textures where possible.
* Require back-end to render with bilinear filtering.
* Require backend to render with bilinear filtering.
* Latched at the beginning of the frame (copied to ImDrawList).
*/
public native void setAntiAliasedLinesUseTex(boolean antiAliasedLinesUseTex); /*
@@ -3,7 +3,7 @@ package imgui;
import imgui.binding.ImGuiStruct;
/**
* The viewports created and managed by Dear ImGui. The role of the platform back-end is to create the platform/OS windows corresponding to each viewport.
* The viewports created and managed by Dear ImGui. The role of the platform backend is to create the platform/OS windows corresponding to each viewport.
* - Main Area = entire viewport.
* - Work Area = entire viewport minus sections optionally used by menu bars, status bars. Some positioning code will prefer to use this. Window are also trying to stay within this area.
*/
@@ -215,23 +215,23 @@ public final class ImGuiViewport extends ImGuiStruct {
*/
/**
* (Advanced) 0: no parent. Instruct the platform back-end to setup a parent/child relationship between platform windows.
* (Advanced) 0: no parent. Instruct the platform backend to setup a parent/child relationship between platform windows.
*/
public native int getParentViewportId(); /*
return IMGUI_VIEWPORT->ParentViewportId;
*/
/**
* (Advanced) 0: no parent. Instruct the platform back-end to setup a parent/child relationship between platform windows.
* (Advanced) 0: no parent. Instruct the platform backend to setup a parent/child relationship between platform windows.
*/
public native void setParentViewportId(int parentViewportId); /*
IMGUI_VIEWPORT->ParentViewportId = parentViewportId;
*/
// Our design separate the Renderer and Platform back-ends to facilitate combining default back-ends with each others.
// When our create your own back-end for a custom engine, it is possible that both Renderer and Platform will be handled
// Our design separate the Renderer and Platform backends to facilitate combining default backends with each others.
// When our create your own backend for a custom engine, it is possible that both Renderer and Platform will be handled
// by the same system and you may not need to use all the UserData/Handle fields.
// The library never uses those fields, they are merely storage to facilitate back-end implementation.
// The library never uses those fields, they are merely storage to facilitate backend implementation.
/**
* void* to hold custom data structure for the renderer (e.g. swap chain, framebuffers etc.). generally set by your Renderer_CreateWindow function.
@@ -7,8 +7,8 @@ import imgui.binding.ImGuiStructDestroyable;
* Important: the content of this class is still highly WIP and likely to change and be refactored
* before we stabilize Docking features. Please be mindful if using this.
* Provide hints:
* - To the platform back-end via altered viewport flags (enable/disable OS decoration, OS task bar icons, etc.)
* - To the platform back-end for OS level parent/child relationships of viewport.
* - To the platform backend via altered viewport flags (enable/disable OS decoration, OS task bar icons, etc.)
* - To the platform backend for OS level parent/child relationships of viewport.
* - To the docking system for various options and filtering.
*/
public final class ImGuiWindowClass extends ImGuiStructDestroyable {
@@ -51,16 +51,16 @@ public final class ImGuiWindowClass extends ImGuiStructDestroyable {
*/
/**
* Hint for the platform back-end. If non-zero, the platform back-end can create a parent{@code <>}child relationship between the platform windows.
* Not conforming back-ends are free to e.g. parent every viewport to the main viewport or not.
* Hint for the platform backend. If non-zero, the platform backend can create a parent{@code <>}child relationship between the platform windows.
* Not conforming backends are free to e.g. parent every viewport to the main viewport or not.
*/
public native int getParentViewportId(); /*
return IMGUI_WINDOW_CLASS->ParentViewportId;
*/
/**
* Hint for the platform back-end. If non-zero, the platform back-end can create a parent{@code <>}child relationship between the platform windows.
* Not conforming back-ends are free to e.g. parent every viewport to the main viewport or not.
* Hint for the platform backend. If non-zero, the platform backend can create a parent{@code <>}child relationship between the platform windows.
* Not conforming backends are free to e.g. parent every viewport to the main viewport or not.
*/
public native void setParentViewportId(int parentViewportId); /*
IMGUI_WINDOW_CLASS->ParentViewportId = parentViewportId;
@@ -98,6 +98,22 @@ public final class ImGuiWindowClass extends ImGuiStructDestroyable {
IMGUI_WINDOW_CLASS->ViewportFlagsOverrideClear = viewportFlagsOverrideClear;
*/
/**
* [EXPERIMENTAL] TabItem flags to set when a window of this class gets submitted into a dock node tab bar.
* May use with ImGuiTabItemFlags_Leading or ImGuiTabItemFlags_Trailing.
*/
public native int getTabItemFlagsOverrideSet(); /*
return IMGUI_WINDOW_CLASS->TabItemFlagsOverrideSet;
*/
/**
* [EXPERIMENTAL] TabItem flags to set when a window of this class gets submitted into a dock node tab bar.
* May use with ImGuiTabItemFlags_Leading or ImGuiTabItemFlags_Trailing.
*/
public native void setTabItemFlagsOverrideSet(int tabItemFlagsOverrideSet); /*
IMGUI_WINDOW_CLASS->TabItemFlagsOverrideSet = tabItemFlagsOverrideSet;
*/
/**
* [EXPERIMENTAL] Dock node flags to set when a window of this class is hosted by a dock node (it doesn't have to be selected!)
*/
@@ -14,7 +14,7 @@ public final class ImDrawListFlags {
*/
public static final int AntiAliasedLines = 1;
/**
* Enable anti-aliased lines/borders using textures when possible. Require back-end to render with bilinear filtering.
* Enable anti-aliased lines/borders using textures when possible. Require backend to render with bilinear filtering.
*/
public static final int AntiAliasedLinesUseTex = 1 << 1;
/**
@@ -1,7 +1,7 @@
package imgui.flag;
/**
* Back-end capabilities flags stored in io.BackendFlags. Set by imgui_impl_xxx or custom back-end.
* Backend capabilities flags stored in io.BackendFlags. Set by imgui_impl_xxx or custom backend.
*/
public final class ImGuiBackendFlags {
private ImGuiBackendFlags() {
@@ -9,36 +9,36 @@ public final class ImGuiBackendFlags {
public static final int None = 0;
/**
* Back-end Platform supports gamepad and currently has one connected.
* Backend Platform supports gamepad and currently has one connected.
*/
public static final int HasGamepad = 1;
/**
* Back-end Platform supports honoring GetMouseCursor() value to change the OS cursor shape.
* Backend Platform supports honoring GetMouseCursor() value to change the OS cursor shape.
*/
public static final int HasMouseCursors = 1 << 1;
/**
* Back-end Platform supports io.WantSetMousePos requests to reposition the OS mouse position (only used if ImGuiConfigFlags_NavEnableSetMousePos is set).
* Backend Platform supports io.WantSetMousePos requests to reposition the OS mouse position (only used if ImGuiConfigFlags_NavEnableSetMousePos is set).
*/
public static final int HasSetMousePos = 1 << 2;
/**
* Back-end Renderer supports ImDrawCmd::VtxOffset. This enables output of large meshes (64K+ vertices) while still using 16-bit indices.
* Backend Renderer supports ImDrawCmd::VtxOffset. This enables output of large meshes (64K+ vertices) while still using 16-bit indices.
*/
public static final int RendererHasVtxOffset = 1 << 3;
// [BETA] Viewports
/**
* Back-end Platform supports multiple viewports.
* Backend Platform supports multiple viewports.
*/
public static final int PlatformHasViewports = 1 << 10;
/**
* Back-end Platform supports setting io.MouseHoveredViewport to the viewport directly under the mouse _IGNORING_ viewports
* Backend Platform supports setting io.MouseHoveredViewport to the viewport directly under the mouse _IGNORING_ viewports
* with the ImGuiViewportFlags_NoInputs flag and _REGARDLESS_ of whether another viewport is focused and may be capturing the mouse.
* This information is _NOT EASY_ to provide correctly with most high-level engines! Don't set this without studying how the examples/ back-end handle it!
* This information is _NOT EASY_ to provide correctly with most high-level engines! Don't set this without studying how the examples/ backend handle it!
*/
public static final int HasMouseHoveredViewport = 1 << 11;
/**
* Back-end Renderer supports multiple viewports.
* Backend Renderer supports multiple viewports.
*/
public static final int RendererHasViewports = 1 << 12;
}
@@ -72,23 +72,43 @@ public final class ImGuiCol {
public static final int PlotLinesHovered = 41;
public static final int PlotHistogram = 42;
public static final int PlotHistogramHovered = 43;
public static final int TextSelectedBg = 44;
public static final int DragDropTarget = 45;
/**
* Table header background
*/
public static final int TableHeaderBg = 44;
/**
* Table outer and header borders (prefer using Alpha=1.0 here)
*/
public static final int TableBorderStrong = 45;
/**
* Table inner borders (prefer using Alpha=1.0 here)
*/
public static final int TableBorderLight = 46;
/**
* Table row background (even rows)
*/
public static final int TableRowBg = 47;
/**
* Table row background (odd rows)
*/
public static final int TableRowBgAlt = 48;
public static final int TextSelectedBg = 49;
public static final int DragDropTarget = 50;
/**
* Gamepad/keyboard: current highlighted item
*/
public static final int NavHighlight = 46;
public static final int NavHighlight = 51;
/**
* Highlight window when using CTRL+TAB
*/
public static final int NavWindowingHighlight = 47;
public static final int NavWindowingHighlight = 52;
/**
* Darken/colorize entire screen behind the CTRL+TAB window list, when active
*/
public static final int NavWindowingDimBg = 48;
public static final int NavWindowingDimBg = 53;
/**
* Darken/colorize entire screen behind a modal window, when one is active
*/
public static final int ModalWindowDimBg = 49;
public static final int COUNT = 49;
public static final int ModalWindowDimBg = 54;
public static final int COUNT = 55;
}
@@ -13,7 +13,7 @@ public final class ImGuiConfigFlags {
*/
public static final int NavEnableKeyboard = 1;
/**
* Master gamepad navigation enable flag. This is mostly to instruct your imgui back-end to fill io.NavInputs[]. Back-end also needs to set ImGuiBackendFlags_HasGamepad.
* Master gamepad navigation enable flag. This is mostly to instruct your imgui backend to fill io.NavInputs[]. Backend also needs to set ImGuiBackendFlags_HasGamepad.
*/
public static final int NavEnableGamepad = 1 << 1;
/**
@@ -27,12 +27,12 @@ public final class ImGuiConfigFlags {
*/
public static final int NavNoCaptureKeyboard = 1 << 3;
/**
* Instruct imgui to clear mouse position/buttons in NewFrame(). This allows ignoring the mouse information set by the back-end.
* Instruct imgui to clear mouse position/buttons in NewFrame(). This allows ignoring the mouse information set by the backend.
*/
public static final int NoMouse = 1 << 4;
/**
* Instruct back-end to not alter mouse cursor shape and visibility.
* Use if the back-end cursor changes are interfering with yours and you don't want to use SetMouseCursor() to change mouse cursor.
* Instruct backend to not alter mouse cursor shape and visibility.
* Use if the backend cursor changes are interfering with yours and you don't want to use SetMouseCursor() to change mouse cursor.
* You may want to honor requests from imgui by reading GetMouseCursor() yourself instead.
*/
public static final int NoMouseCursorChange = 1 << 5;
@@ -47,7 +47,7 @@ public final class ImGuiConfigFlags {
// When using viewports it is recommended that your default value for ImGuiCol_WindowBg is opaque (Alpha=1.0) so transition to a viewport won't be noticeable.
/**
* Viewport enable flags (require both ImGuiBackendFlags_PlatformHasViewports + ImGuiBackendFlags_RendererHasViewports set by the respective back-ends)
* Viewport enable flags (require both ImGuiBackendFlags_PlatformHasViewports + ImGuiBackendFlags_RendererHasViewports set by the respective backends)
*/
public static final int ViewportsEnable = 1 << 10;
/**
@@ -61,7 +61,7 @@ public final class ImGuiConfigFlags {
*/
public static final int DpiEnableScaleFonts = 1 << 15;
// User storage (to allow your back-end/engine to communicate to code that may be shared between multiple projects. Those flags are not used by core Dear ImGui)
// User storage (to allow your backend/engine to communicate to code that may be shared between multiple projects. Those flags are not used by core Dear ImGui)
/**
* Application is SRGB-aware.
@@ -1,7 +1,7 @@
package imgui.flag;
/**
* To test io.KeyMods (which is a combination of individual fields io.KeyCtrl, io.KeyShift, io.KeyAlt set by user/back-end)
* To test io.KeyMods (which is a combination of individual fields io.KeyCtrl, io.KeyShift, io.KeyAlt set by user/backend)
*/
public final class ImGuiKeyModFlags {
private ImGuiKeyModFlags() {
@@ -5,9 +5,9 @@ package imgui.flag;
* Keyboard: Set io.ConfigFlags |= ImGuiConfigFlags_NavEnableKeyboard to enable.
* NewFrame() will automatically fill io.NavInputs[] based on your io.KeysDown[] + io.KeyMap[] arrays.
* Gamepad: Set io.ConfigFlags |= ImGuiConfigFlags_NavEnableGamepad to enable.
* Back-end: set ImGuiBackendFlags_HasGamepad and fill the io.NavInputs[] fields before calling NewFrame().
* Backend: set ImGuiBackendFlags_HasGamepad and fill the io.NavInputs[] fields before calling NewFrame().
* Note that io.NavInputs[] is cleared by EndFrame().
* Read instructions in imgui.cpp for more details. Download PNG/PSD at http://goo.gl/9LgVZW.
* Read instructions in imgui.cpp for more details. Download PNG/PSD at http://dearimgui.org/controls_sheets.
*/
public final class ImGuiNavInput {
private ImGuiNavInput() {
@@ -0,0 +1,19 @@
package imgui.flag;
/**
* A sorting direction
*/
public final class ImGuiSortDirection {
private ImGuiSortDirection() {
}
public static final int None = 0;
/**
* Ascending = {@code 0->9, A->Z} etc.
*/
public static final int Ascending = 1;
/**
* Descending = {@code 9->0, Z->A} etc.
*/
public static final int Descending = 2;
}
@@ -77,33 +77,37 @@ public final class ImGuiStyleVar {
* float IndentSpacing
*/
public static final int IndentSpacing = 15;
/**
* ImVec2 CellPadding
*/
public static final int CellPadding = 16;
/**
* float ScrollbarSize
*/
public static final int ScrollbarSize = 16;
public static final int ScrollbarSize = 17;
/**
* float ScrollbarRounding
*/
public static final int ScrollbarRounding = 17;
public static final int ScrollbarRounding = 18;
/**
* float GrabMinSize
*/
public static final int GrabMinSize = 18;
public static final int GrabMinSize = 19;
/**
* float GrabRounding
*/
public static final int GrabRounding = 19;
public static final int GrabRounding = 20;
/**
* float TabRounding
*/
public static final int TabRounding = 20;
public static final int TabRounding = 21;
/**
* ImVec2 ButtonTextAlign
*/
public static final int ButtonTextAlign = 21;
public static final int ButtonTextAlign = 22;
/**
* ImVec2 SelectableTextAlign
*/
public static final int SelectableTextAlign = 22;
public static final int COUNT = 23;
public static final int SelectableTextAlign = 23;
public static final int COUNT = 24;
}
@@ -0,0 +1,31 @@
package imgui.flag;
/**
* Enum for ImGui::TableSetBgColor()
* Background colors are rendering in 3 layers:
* - Layer 0: draw with RowBg0 color if set, otherwise draw with ColumnBg0 if set.
* - Layer 1: draw with RowBg1 color if set, otherwise draw with ColumnBg1 if set.
* - Layer 2: draw with CellBg color if set.
* The purpose of the two row/columns layers is to let you decide if a background color changes should override or blend with the existing color.
* When using ImGuiTableFlags_RowBg on the table, each row has the RowBg0 color automatically set for odd/even rows.
* If you set the color of RowBg0 target, your color will override the existing RowBg0 color.
* If you set the color of RowBg1 or ColumnBg1 target, your color will blend over the RowBg0 color.
*/
public final class ImGuiTableBgTarget {
private ImGuiTableBgTarget() {
}
public static final int None = 0;
/**
* Set row background color 0 (generally used for background, automatically set when ImGuiTableFlags_RowBg is used)
*/
public static final int RowBg0 = 1;
/**
* Set row background color 1 (generally used for selection marking)
*/
public static final int RowBg1 = 2;
/**
* Set cell background color (top-most color)
*/
public static final int CellBg = 3;
}
@@ -0,0 +1,94 @@
package imgui.flag;
/**
* Flags for {@link imgui.ImGui#tableSetupColumn(String, int)}
*/
public final class ImGuiTableColumnFlags {
private ImGuiTableColumnFlags() {
}
// Input configuration flags
public static final int None = 0;
/**
* Default as a hidden/disabled column.
*/
public static final int DefaultHide = 1;
/**
* Default as a sorting column.
*/
public static final int DefaultSort = 1 << 1;
/**
* Column will stretch. Preferable with horizontal scrolling disabled (default if table sizing policy is _SizingStretchSame or _SizingStretchProp).
*/
public static final int WidthStretch = 1 << 2;
/**
* Column will not stretch. Preferable with horizontal scrolling enabled (default if table sizing policy is _SizingFixedFit and table is resizable).
*/
public static final int WidthFixed = 1 << 3;
/**
* Disable manual resizing.
*/
public static final int NoResize = 1 << 4;
/**
* Disable manual reordering this column, this will also prevent other columns from crossing over this column.
*/
public static final int NoReorder = 1 << 5;
/**
* Disable ability to hide/disable this column.
*/
public static final int NoHide = 1 << 6;
/**
* Disable clipping for this column (all NoClip columns will render in a same draw command).
*/
public static final int NoClip = 1 << 7;
/**
* Disable ability to sort on this field (even if ImGuiTableFlags_Sortable is set on the table).
*/
public static final int NoSort = 1 << 8;
/**
* Disable ability to sort in the ascending direction.
*/
public static final int NoSortAscending = 1 << 9;
/**
* Disable ability to sort in the descending direction.
*/
public static final int NoSortDescending = 1 << 10;
/**
* Disable header text width contribution to automatic column width.
*/
public static final int NoHeaderWidth = 1 << 11;
/**
* Make the initial sort direction Ascending when first sorting on this column (default).
*/
public static final int PreferSortAscending = 1 << 12;
/**
* Make the initial sort direction Descending when first sorting on this column.
*/
public static final int PreferSortDescending = 1 << 13;
/**
* Use current Indent value when entering cell (default for column 0).
*/
public static final int IndentEnable = 1 << 14;
/**
* Ignore current Indent value when entering cell (default for columns {@code >} 0). Indentation changes _within_ the cell will still be honored.
*/
public static final int IndentDisable = 1 << 15;
// Output status flags, read-only via TableGetColumnFlags()
/**
* Status: is enabled == not hidden by user/api (referred to as "Hide" in _DefaultHide and _NoHide) flags.
*/
public static final int IsEnabled = 1 << 20;
/**
* Status: is visible == is enabled AND not clipped by scrolling.
*/
public static final int IsVisible = 1 << 21;
/**
* Status: is currently part of the sort specs
*/
public static final int IsSorted = 1 << 22;
/**
* Status: is hovered by mouse
*/
public static final int IsHovered = 1 << 23;
}
@@ -0,0 +1,184 @@
package imgui.flag;
/**
* Flags for ImGui::BeginTable()
* [BETA API] API may evolve slightly! If you use this, please update to the next version when it comes out!
* - Important! Sizing policies have complex and subtle side effects, more so than you would expect.
* Read comments/demos carefully + experiment with live demos to get acquainted with them.
* - The DEFAULT sizing policies are:
* - Default to SizingFixedFit if ScrollX is on, or if host window has ImGuiWindowFlags_AlwaysAutoResize.
* - Default to SizingStretchSame if ScrollX is off.
* - When ScrollX is off:
* - Table defaults to SizingStretchSame {@code ->} all Columns defaults to ImGuiTableColumnFlags_WidthStretch with same weight.
* - Columns sizing policy allowed: Stretch (default), Fixed/Auto.
* - Fixed Columns will generally obtain their requested width (unless the table cannot fit them all).
* - Stretch Columns will share the remaining width.
* - Mixed Fixed/Stretch columns is possible but has various side-effects on resizing behaviors.
* The typical use of mixing sizing policies is: any number of LEADING Fixed columns, followed by one or two TRAILING Stretch columns.
* (this is because the visible order of columns have subtle but necessary effects on how they react to manual resizing).
* - When ScrollX is on:
* - Table defaults to SizingFixedFit {@code ->} all Columns defaults to ImGuiTableColumnFlags_WidthFixed
* - Columns sizing policy allowed: Fixed/Auto mostly.
* - Fixed Columns can be enlarged as needed. Table will show an horizontal scrollbar if needed.
* - When using auto-resizing (non-resizable) fixed columns, querying the content width to use item right-alignment e.g. SetNextItemWidth(-FLT_MIN) doesn't make sense, would create a feedback loop.
* - Using Stretch columns OFTEN DOES NOT MAKE SENSE if ScrollX is on, UNLESS you have specified a value for 'inner_width' in BeginTable().
* If you specify a value for 'inner_width' then effectively the scrolling space is known and Stretch or mixed Fixed/Stretch columns become meaningful again.
* - Read on documentation at the top of imgui_tables.cpp for details.
*/
public final class ImGuiTableFlags {
private ImGuiTableFlags() {
}
// Features
public static final int None = 0;
/**
* Enable resizing columns.
*/
public static final int Resizable = 1;
/**
* Enable reordering columns in header row (need calling TableSetupColumn() + TableHeadersRow() to display headers)
*/
public static final int Reorderable = 1 << 1;
/**
* Enable hiding/disabling columns in context menu.
*/
public static final int Hideable = 1 << 2;
/**
* Enable sorting. Call TableGetSortSpecs() to obtain sort specs. Also see SortMulti and SortTristate.
*/
public static final int Sortable = 1 << 3;
/**
* Disable persisting columns order, width and sort settings in the .ini file.
*/
public static final int NoSavedSettings = 1 << 4;
/**
* Right-click on columns body/contents will display table context menu. By default it is available in TableHeadersRow().
*/
public static final int ContextMenuInBody = 1 << 5;
// Decorations
/**
* Set each RowBg color with ImGuiCol_TableRowBg or ImGuiCol_TableRowBgAlt (equivalent of calling TableSetBgColor with ImGuiTableBgFlags_RowBg0 on each row manually)
*/
public static final int RowBg = 1 << 6;
/**
* Draw horizontal borders between rows.
*/
public static final int BordersInnerH = 1 << 7;
/**
* Draw horizontal borders at the top and bottom.
*/
public static final int BordersOuterH = 1 << 8;
/**
* Draw vertical borders between columns.
*/
public static final int BordersInnerV = 1 << 9;
/**
* Draw vertical borders on the left and right sides.
*/
public static final int BordersOuterV = 1 << 10;
/**
* Draw horizontal borders.
*/
public static final int BordersH = BordersInnerH | BordersOuterH;
/**
* Draw vertical borders.
*/
public static final int BordersV = BordersInnerV | BordersOuterV;
/**
* Draw inner borders.
*/
public static final int BordersInner = BordersInnerV | BordersInnerH;
/**
* Draw outer borders.
*/
public static final int BordersOuter = BordersOuterV | BordersOuterH;
/**
* Draw all borders.
*/
public static final int Borders = BordersInner | BordersOuter;
/**
* [ALPHA] Disable vertical borders in columns Body (borders will always appears in Headers). {@code ->} May move to style
*/
public static final int NoBordersInBody = 1 << 11;
/**
* [ALPHA] Disable vertical borders in columns Body until hovered for resize (borders will always appears in Headers). {@code ->} May move to style
*/
public static final int NoBordersInBodyUntilResize = 1 << 12;
// Sizing Policy (read above for defaults)
/**
* Columns default to _WidthFixed or _WidthAuto (if resizable or not resizable), matching contents width.
*/
public static final int SizingFixedFit = 1 << 13;
/**
* Columns default to _WidthFixed or _WidthAuto (if resizable or not resizable), matching the maximum contents width of all columns. Implicitly enable NoKeepColumnsVisible.
*/
public static final int SizingFixedSame = 2 << 13;
/**
* Columns default to _WidthStretch with default weights proportional to each columns contents widths.
*/
public static final int SizingStretchProp = 3 << 13;
/**
* Columns default to _WidthStretch with default weights all equal, unless overriden by TableSetupColumn().
*/
public static final int SizingStretchSame = 4 << 13;
// Sizing Extra Options
/**
* Make outer width auto-fit to columns, overriding outer_size.x value. Only available when ScrollX/ScrollY are disabled and Stretch columns are not used.
*/
public static final int NoHostExtendX = 1 << 16;
/**
* Make outer height stop exactly at outer_size.y (prevent auto-extending table past the limit). Only available when ScrollX/ScrollY are disabled. Data below the limit will be clipped and not visible.
*/
public static final int NoHostExtendY = 1 << 17;
/**
* Disable keeping column always minimally visible when ScrollX is off and table gets too small. Not recommended if columns are resizable.
*/
public static final int NoKeepColumnsVisible = 1 << 18;
/**
* Disable distributing remainder width to stretched columns (width allocation on a 100-wide table with 3 columns: Without this flag: 33,33,34. With this flag: 33,33,33).
* With larger number of columns, resizing will appear to be less smooth.
*/
public static final int PreciseWidths = 1 << 19;
// Clipping
/**
* Disable clipping rectangle for every individual columns (reduce draw command count, items will be able to overflow into other columns). Generally incompatible with TableSetupScrollFreeze().
*/
public static final int NoClip = 1 << 20;
// Padding
/**
* Default if BordersOuterV is on. Enable outer-most padding. Generally desirable if you have headers.
*/
public static final int PadOuterX = 1 << 21;
/**
* Default if BordersOuterV is off. Disable outer-most padding.
*/
public static final int NoPadOuterX = 1 << 22;
public static final int NoPadInnerX = 1 << 23;
// Scrolling
/**
* Enable horizontal scrolling. Require 'outer_size' parameter of BeginTable() to specify the container size. Changes default sizing policy.
* Because this create a child window, ScrollY is currently generally recommended when using ScrollX.
*/
public static final int ScrollX = 1 << 24;
/**
* Enable vertical scrolling. Require 'outer_size' parameter of BeginTable() to specify the container size.
*/
public static final int ScrollY = 1 << 25;
// Sorting
/**
* Hold shift when clicking headers to sort on multiple column. TableGetSortSpecs() may return specs where (SpecsCount {@code >} 1).
*/
public static final int SortMulti = 1 << 26;
/**
* Allow no sorting, disable default sorting. TableGetSortSpecs() may return specs where (SpecsCount == 0).
*/
public static final int SortTristate = 1 << 27;
}
@@ -0,0 +1,15 @@
package imgui.flag;
/**
* Flags for {@link imgui.ImGui#tableNextRow(int)}
*/
public final class ImGuiTableRowFlags {
private ImGuiTableRowFlags() {
}
public static final int None = 0;
/**
* Identify header row (set default background color + width of its contents accounted different for auto column width)
*/
public static final int Headers = 1;
}
@@ -1,7 +1,7 @@
package imgui.flag;
/**
* Flags stored in ImGuiViewport::Flags, giving indications to the platform back-ends.
* Flags stored in ImGuiViewport::Flags, giving indications to the platform backends.
*/
public final class ImGuiViewportFlags {
private ImGuiViewportFlags() {