diff --git a/deps/cimgui/win-x64/cimgui.dll b/deps/cimgui/win-x64/cimgui.dll index 0cfaa6e..6187c47 100644 Binary files a/deps/cimgui/win-x64/cimgui.dll and b/deps/cimgui/win-x64/cimgui.dll differ diff --git a/src/ImGui.NET.SampleProgram/SampleWindow.cs b/src/ImGui.NET.SampleProgram/SampleWindow.cs index 34259d8..d9938a1 100644 --- a/src/ImGui.NET.SampleProgram/SampleWindow.cs +++ b/src/ImGui.NET.SampleProgram/SampleWindow.cs @@ -202,8 +202,8 @@ namespace ImGuiNET { ImGui.GetStyle().WindowRounding = 0; - ImGui.SetNextWindowSize(new System.Numerics.Vector2(_nativeWindow.Width - 10, _nativeWindow.Height - 20), SetCondition.Always); - ImGui.SetNextWindowPosCenter(SetCondition.Always); + ImGui.SetNextWindowSize(new System.Numerics.Vector2(_nativeWindow.Width - 10, _nativeWindow.Height - 20), Condition.Always); + ImGui.SetNextWindowPosCenter(Condition.Always); ImGui.BeginWindow("ImGUI.NET Sample Program", ref _mainWindowOpened, WindowFlags.NoResize | WindowFlags.NoTitleBar | WindowFlags.NoMove); ImGui.BeginMainMenuBar(); @@ -247,8 +247,8 @@ namespace ImGuiNET } if (ImGui.TreeNode("Second Item")) { - ImGui.ColorButton(_buttonColor, false, true); - if (ImGui.Button("Push me to change color", new System.Numerics.Vector2(120, 30))) + ImGui.ColorButton("Color button", _buttonColor, ColorEditFlags.Default, new System.Numerics.Vector2(0, 0)); + if (ImGui.Button("Push me to change color", new System.Numerics.Vector2(0, 30))) { _buttonColor = new System.Numerics.Vector4(_buttonColor.Y + .25f, _buttonColor.Z, _buttonColor.X, _buttonColor.W); if (_buttonColor.X > 1.0f) diff --git a/src/ImGui.NET/ColorEditFlags.cs b/src/ImGui.NET/ColorEditFlags.cs new file mode 100644 index 0000000..e55bbb5 --- /dev/null +++ b/src/ImGui.NET/ColorEditFlags.cs @@ -0,0 +1,29 @@ +namespace ImGuiNET +{ + /// + /// Enumeration for ColorEdit3() / ColorEdit4() / ColorPicker3() / ColorPicker4() / ColorButton() + /// + public enum ColorEditFlags : int + { + Default = 0, + NoAlpha = 1 << 1, + NoPicker = 1 << 2, + NoOptions = 1 << 3, + NoSmallPreview = 1 << 4, + NoInputs = 1 << 5, + NoTooltip = 1 << 6, + NoLabel = 1 << 7, + NoSidePreview = 1 << 8, + AlphaBar = 1 << 9, + AlphaPreview = 1 << 10, + AlphaPreviewHalf = 1 << 11, + HDR = 1 << 12, + RGB = 1 << 13, + HSV = 1 << 14, + HEX = 1 << 15, + Uint8 = 1 << 16, + Float = 1 << 17, + PickerHueBar = 1 << 18, + PickerHueWheel = 1 << 19, + } +} diff --git a/src/ImGui.NET/ColorEditMode.cs b/src/ImGui.NET/ColorEditMode.cs deleted file mode 100644 index d6c0d11..0000000 --- a/src/ImGui.NET/ColorEditMode.cs +++ /dev/null @@ -1,14 +0,0 @@ -namespace ImGuiNET -{ - /// - /// Enumeration for ColorEditMode() - /// - public enum ColorEditMode - { - UserSelect = -2, - UserSelectShowButton = -1, - RGB = 0, - HSV = 1, - HEX = 2 - } -} diff --git a/src/ImGui.NET/ColorTarget.cs b/src/ImGui.NET/ColorTarget.cs index 6237d30..87d90eb 100644 --- a/src/ImGui.NET/ColorTarget.cs +++ b/src/ImGui.NET/ColorTarget.cs @@ -36,9 +36,9 @@ Header, HeaderHovered, HeaderActive, - Column, - ColumnHovered, - ColumnActive, + Separator, + SeparatorHovered, + SeparatorActive, ResizeGrip, ResizeGripHovered, ResizeGripActive, diff --git a/src/ImGui.NET/SetCondition.cs b/src/ImGui.NET/Condition.cs similarity index 96% rename from src/ImGui.NET/SetCondition.cs rename to src/ImGui.NET/Condition.cs index b048ed6..1b8da55 100644 --- a/src/ImGui.NET/SetCondition.cs +++ b/src/ImGui.NET/Condition.cs @@ -4,7 +4,7 @@ /// Condition flags for ImGui::SetWindow***(), SetNextWindow***(), SetNextTreeNode***() functions. /// All those functions treat 0 as a shortcut to Always. /// - public enum SetCondition + public enum Condition { /// /// Set the variable. diff --git a/src/ImGui.NET/ImGui.cs b/src/ImGui.NET/ImGui.cs index db4c81b..29450fc 100644 --- a/src/ImGui.NET/ImGui.cs +++ b/src/ImGui.NET/ImGui.cs @@ -181,15 +181,15 @@ namespace ImGuiNET return ImGuiNative.igCombo(label, ref current_item, items, items.Length, heightInItems); } - public static bool ColorButton(Vector4 color, bool smallHeight, bool outlineBorder) + public static bool ColorButton(string desc_id, Vector4 color, ColorEditFlags flags, Vector2 size) { - return ImGuiNative.igColorButton(color, smallHeight, outlineBorder); + return ImGuiNative.igColorButton(desc_id, color, flags, size); } - public static unsafe bool ColorEdit3(string label, ref float r, ref float g, ref float b, bool showAlpha) + public static unsafe bool ColorEdit3(string label, ref float r, ref float g, ref float b, ColorEditFlags flags = ColorEditFlags.Default) { Vector3 localColor = new Vector3(r, g, b); - bool result = ImGuiNative.igColorEdit3(label, &localColor); + bool result = ImGuiNative.igColorEdit3(label, &localColor, flags); if (result) { r = localColor.X; @@ -200,10 +200,10 @@ namespace ImGuiNET return result; } - public static unsafe bool ColorEdit3(string label, ref Vector3 color, bool showAlpha) + public static unsafe bool ColorEdit3(string label, ref Vector3 color, ColorEditFlags flags = ColorEditFlags.Default) { Vector3 localColor = color; - bool result = ImGuiNative.igColorEdit3(label, &localColor); + bool result = ImGuiNative.igColorEdit3(label, &localColor, flags); if (result) { color = localColor; @@ -212,10 +212,10 @@ namespace ImGuiNET return result; } - public static unsafe bool ColorEdit4(string label, ref float r, ref float g, ref float b, ref float a, bool showAlpha) + public static unsafe bool ColorEdit4(string label, ref float r, ref float g, ref float b, ref float a, ColorEditFlags flags = ColorEditFlags.Default) { Vector4 localColor = new Vector4(r, g, b, a); - bool result = ImGuiNative.igColorEdit4(label, &localColor, showAlpha); + bool result = ImGuiNative.igColorEdit4(label, &localColor, flags); if (result) { r = localColor.X; @@ -227,10 +227,10 @@ namespace ImGuiNET return result; } - public static unsafe bool ColorEdit4(string label, ref Vector4 color, bool showAlpha) + public static unsafe bool ColorEdit4(string label, ref Vector4 color, ColorEditFlags flags = ColorEditFlags.Default) { Vector4 localColor = color; - bool result = ImGuiNative.igColorEdit4(label, &localColor, showAlpha); + bool result = ImGuiNative.igColorEdit4(label, &localColor, flags); if (result) { color = localColor; @@ -239,9 +239,26 @@ namespace ImGuiNET return result; } - public static void ColorEditMode(ColorEditMode mode) + public static unsafe bool ColorPicker3(string label, ref Vector3 color, ColorEditFlags flags = ColorEditFlags.Default) { - ImGuiNative.igColorEditMode(mode); + Vector3 localColor = color; + bool result = ImGuiNative.igColorPicker3(label, &localColor, flags); + if (result) + { + color = localColor; + } + return result; + } + + public static unsafe bool ColorPicker4(string label, ref Vector4 color, ColorEditFlags flags = ColorEditFlags.Default) + { + Vector4 localColor = color; + bool result = ImGuiNative.igColorPicker4(label, &localColor, flags); + if (result) + { + color = localColor; + } + return result; } public unsafe static void PlotLines( @@ -416,7 +433,7 @@ namespace ImGuiNET return ImGuiNative.igButton(message, size); } - public static void SetNextWindowSize(Vector2 size, SetCondition condition) + public static void SetNextWindowSize(Vector2 size, Condition condition) { ImGuiNative.igSetNextWindowSize(size, condition); } @@ -426,12 +443,12 @@ namespace ImGuiNET ImGuiNative.igSetNextWindowFocus(); } - public static void SetNextWindowPos(Vector2 position, SetCondition condition) + public static void SetNextWindowPos(Vector2 position, Condition condition) { ImGuiNative.igSetNextWindowPos(position, condition); } - public static void SetNextWindowPosCenter(SetCondition condition) + public static void SetNextWindowPosCenter(Condition condition) { ImGuiNative.igSetNextWindowPosCenter(condition); } @@ -488,7 +505,7 @@ namespace ImGuiNET } - public static void SetWindowSize(Vector2 size, SetCondition cond = 0) + public static void SetWindowSize(Vector2 size, Condition cond = 0) { ImGuiNative.igSetWindowSize(size, cond); } @@ -712,14 +729,14 @@ namespace ImGuiNET return ImGuiNative.igIsMouseReleased(button); } - public static bool IsMouseHoveringWindow() + public static bool IsWindowRectHovered() { - return ImGuiNative.igIsMouseHoveringWindow(); + return ImGuiNative.igIsWindowRectHovered(); } - public static bool IsMouseHoveringAnyWindow() + public static bool IsAnyWindowHovered() { - return ImGuiNative.igIsMouseHoveringAnyWindow(); + return ImGuiNative.igIsAnyWindowHovered(); } public static bool IsWindowFocused() @@ -956,6 +973,11 @@ namespace ImGuiNET ImGuiNative.igEndPopup(); } + public static bool IsPopupOpen(string id) + { + return ImGuiNative.igIsPopupOpen(id); + } + public static unsafe void Dummy(Vector2 size) { ImGuiNative.igDummy(&size); @@ -996,6 +1018,11 @@ namespace ImGuiNET return ImGuiNative.igGetColumnWidth(columnIndex); } + public static void SetColumnWidth(int columnIndex, float width) + { + ImGuiNative.igSetColumnWidth(columnIndex, width); + } + public static int GetColumnsCount() { return ImGuiNative.igGetColumnsCount(); @@ -1026,9 +1053,9 @@ namespace ImGuiNET return ImGuiNative.igIsItemHovered(); } - public static bool IsLastItemHoveredRect() + public static bool IsItemRectHovered() { - return ImGuiNative.igIsItemHoveredRect(); + return ImGuiNative.igIsItemRectHovered(); } public static bool IsLastItemActive() @@ -1058,10 +1085,10 @@ namespace ImGuiNET public static void SetNextTreeNodeOpen(bool opened) { - ImGuiNative.igSetNextTreeNodeOpen(opened, SetCondition.Always); + ImGuiNative.igSetNextTreeNodeOpen(opened, Condition.Always); } - public static void SetNextTreeNodeOpen(bool opened, SetCondition setCondition) + public static void SetNextTreeNodeOpen(bool opened, Condition setCondition) { ImGuiNative.igSetNextTreeNodeOpen(opened, setCondition); } diff --git a/src/ImGui.NET/ImGuiNative.cs b/src/ImGui.NET/ImGuiNative.cs index e244543..db06a4a 100644 --- a/src/ImGui.NET/ImGuiNative.cs +++ b/src/ImGui.NET/ImGuiNative.cs @@ -87,11 +87,11 @@ namespace ImGuiNET public static extern bool igIsWindowCollapsed(); [DllImport(cimguiLib)] - public static extern void igSetNextWindowPos(Vector2 pos, SetCondition cond); + public static extern void igSetNextWindowPos(Vector2 pos, Condition cond); [DllImport(cimguiLib)] - public static extern void igSetNextWindowPosCenter(SetCondition cond); + public static extern void igSetNextWindowPosCenter(Condition cond); [DllImport(cimguiLib)] - public static extern void igSetNextWindowSize(Vector2 size, SetCondition cond); + public static extern void igSetNextWindowSize(Vector2 size, Condition cond); public delegate void ImGuiSizeConstraintCallback(IntPtr data); [DllImport(cimguiLib)] public static extern void igSetNextWindowSizeConstraints(Vector2 size_min, Vector2 size_max, ImGuiSizeConstraintCallback custom_callback, void* custom_callback_data); @@ -100,23 +100,23 @@ namespace ImGuiNET [DllImport(cimguiLib)] public static extern void igSetNextWindowContentWidth(float width); [DllImport(cimguiLib)] - public static extern void igSetNextWindowCollapsed(bool collapsed, SetCondition cond); + public static extern void igSetNextWindowCollapsed(bool collapsed, Condition cond); [DllImport(cimguiLib)] public static extern void igSetNextWindowFocus(); [DllImport(cimguiLib)] - public static extern void igSetWindowPos(Vector2 pos, SetCondition cond); //(not recommended) + public static extern void igSetWindowPos(Vector2 pos, Condition cond); //(not recommended) [DllImport(cimguiLib)] - public static extern void igSetWindowSize(Vector2 size, SetCondition cond); //(not recommended) + public static extern void igSetWindowSize(Vector2 size, Condition cond); //(not recommended) [DllImport(cimguiLib)] - public static extern void igSetWindowCollapsed(bool collapsed, SetCondition cond); //(not recommended) + public static extern void igSetWindowCollapsed(bool collapsed, Condition cond); //(not recommended) [DllImport(cimguiLib)] public static extern void igSetWindowFocus(); //(not recommended) [DllImport(cimguiLib)] - public static extern void igSetWindowPosByName(string name, Vector2 pos, SetCondition cond); + public static extern void igSetWindowPosByName(string name, Vector2 pos, Condition cond); [DllImport(cimguiLib)] - public static extern void igSetWindowSize2(string name, Vector2 size, SetCondition cond); + public static extern void igSetWindowSize2(string name, Vector2 size, Condition cond); [DllImport(cimguiLib)] - public static extern void igSetWindowCollapsed2(string name, bool collapsed, SetCondition cond); + public static extern void igSetWindowCollapsed2(string name, bool collapsed, Condition cond); [DllImport(cimguiLib)] public static extern void igSetWindowFocus2(string name); @@ -250,6 +250,8 @@ namespace ImGuiNET [DllImport(cimguiLib)] public static extern float igGetColumnWidth(int column_index); [DllImport(cimguiLib)] + public static extern void igSetColumnWidth(int column_index, float width); + [DllImport(cimguiLib)] public static extern int igGetColumnsCount(); @@ -346,15 +348,22 @@ namespace ImGuiNET [DllImport(cimguiLib)] [return: MarshalAs(UnmanagedType.I1)] - public static extern bool igColorButton(Vector4 col, bool small_height, bool outline_border); + public static extern bool igColorButton(string desc_id, Vector4 col, ColorEditFlags flags, Vector2 size); + [DllImport(cimguiLib)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool igColorEdit3(string label, Vector3* col, ColorEditFlags flags = 0); [DllImport(cimguiLib)] [return: MarshalAs(UnmanagedType.I1)] - public static extern bool igColorEdit3(string label, Vector3* col); + public static extern bool igColorEdit4(string label, Vector4* col, ColorEditFlags flags = 0); [DllImport(cimguiLib)] [return: MarshalAs(UnmanagedType.I1)] - public static extern bool igColorEdit4(string label, Vector4* col, bool show_alpha); + public static extern bool igColorPicker3(string label, Vector3* col, ColorEditFlags flags = 0); [DllImport(cimguiLib)] - public static extern void igColorEditMode(ColorEditMode mode); + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool igColorPicker4(string label, Vector4* col, ColorEditFlags flags = 0, float* ref_col = null); + [DllImport(cimguiLib)] + public static extern void SetColorEditOptions(ColorEditFlags flags); + [DllImport(cimguiLib)] public static extern void igPlotLines(string label, float* values, int values_count, int values_offset, string overlay_text, float scale_min, float scale_max, Vector2 graph_size, int stride); public delegate float ImGuiPlotHistogramValuesGetter(IntPtr data, int idx); @@ -497,7 +506,7 @@ namespace ImGuiNET [DllImport(cimguiLib)] public static extern float igGetTreeNodeToLabelSpacing(); [DllImport(cimguiLib)] - public static extern void igSetNextTreeNodeOpen(bool opened, SetCondition cond); + public static extern void igSetNextTreeNodeOpen(bool opened, Condition cond); [DllImport(cimguiLib)] [return: MarshalAs(UnmanagedType.I1)] public static extern bool igCollapsingHeader(string label, TreeNodeFlags flags = 0); @@ -538,10 +547,6 @@ namespace ImGuiNET public static extern void igValueUInt(string prefix, uint v); [DllImport(cimguiLib)] public static extern void igValueFloat(string prefix, float v, string float_format); - [DllImport(cimguiLib)] - public static extern void igValueColor(string prefix, Vector4 v); - [DllImport(cimguiLib)] - public static extern void igValueColor2(string prefix, uint v); // Tooltip [DllImport(cimguiLib)] @@ -589,13 +594,15 @@ namespace ImGuiNET public static extern bool igBeginPopupContextItem(string str_id, int mouse_button); [DllImport(cimguiLib)] [return: MarshalAs(UnmanagedType.I1)] - public static extern bool igBeginPopupContextWindow(bool also_over_items, string str_id, int mouse_button); + public static extern bool igBeginPopupContextWindow(string str_id, int mouse_button, bool also_over_items); [DllImport(cimguiLib)] [return: MarshalAs(UnmanagedType.I1)] public static extern bool igBeginPopupContextVoid(string str_id, int mouse_button); [DllImport(cimguiLib)] public static extern void igEndPopup(); [DllImport(cimguiLib)] + public static extern bool igIsPopupOpen(string str_id); + [DllImport(cimguiLib)] public static extern void igCloseCurrentPopup(); // Logging: all text output from interface is redirected to tty/file/clipboard. Tree nodes are automatically opened. @@ -626,7 +633,7 @@ namespace ImGuiNET public static extern bool igIsItemHovered(); [DllImport(cimguiLib)] [return: MarshalAs(UnmanagedType.I1)] - public static extern bool igIsItemHoveredRect(); + public static extern bool igIsItemRectHovered(); [DllImport(cimguiLib)] [return: MarshalAs(UnmanagedType.I1)] public static extern bool igIsItemActive(); @@ -673,14 +680,11 @@ namespace ImGuiNET [return: MarshalAs(UnmanagedType.I1)] public static extern bool igIsRectVisible2(Vector2* rect_min, Vector2* rect_max); [DllImport(cimguiLib)] - [return: MarshalAs(UnmanagedType.I1)] - public static extern bool igIsPosHoveringAnyWindow(Vector2 pos); - [DllImport(cimguiLib)] public static extern float igGetTime(); [DllImport(cimguiLib)] public static extern int igGetFrameCount(); [DllImport(cimguiLib)] - public static extern string igGetStyleColName(ColorTarget idx); + public static extern string igGetStyleColorName(ColorTarget idx); [DllImport(cimguiLib)] public static extern void igCalcItemRectClosestPoint(out Vector2 pOut, Vector2 pos, bool on_edge, float outward); [DllImport(cimguiLib)] @@ -728,10 +732,10 @@ namespace ImGuiNET public static extern bool igIsMouseReleased(int button); [DllImport(cimguiLib)] [return: MarshalAs(UnmanagedType.I1)] - public static extern bool igIsMouseHoveringWindow(); + public static extern bool igIsWindowRectHovered(); [DllImport(cimguiLib)] [return: MarshalAs(UnmanagedType.I1)] - public static extern bool igIsMouseHoveringAnyWindow(); + public static extern bool igIsAnyWindowHovered(); [DllImport(cimguiLib)] [return: MarshalAs(UnmanagedType.I1)] public static extern bool igIsMouseHoveringRect(Vector2 pos_min, Vector2 pos_max, bool clip);