From f7749237eea2af2240686a74fe66958820d84706 Mon Sep 17 00:00:00 2001 From: Soreepeong <3614868+Soreepeong@users.noreply.github.com> Date: Tue, 29 Jul 2025 01:37:54 +0900 Subject: [PATCH] Add more overloads --- .../Custom/ImGui.DragScalar.cs | 57 ++++++++++++++++++- .../Custom/ImGui.InputScalar.cs | 4 +- .../Custom/ImGui.SliderScalar.cs | 55 ++++++++++++++++++ 3 files changed, 112 insertions(+), 4 deletions(-) diff --git a/imgui/Dalamud.Bindings.ImGui/Custom/ImGui.DragScalar.cs b/imgui/Dalamud.Bindings.ImGui/Custom/ImGui.DragScalar.cs index a0d929ec8..13c06ad2b 100644 --- a/imgui/Dalamud.Bindings.ImGui/Custom/ImGui.DragScalar.cs +++ b/imgui/Dalamud.Bindings.ImGui/Custom/ImGui.DragScalar.cs @@ -300,7 +300,7 @@ public static unsafe partial class ImGui public static bool DragScalar( ImU8String label, ImGuiDataType dataType, scoped ref T v, float vSpeed, scoped in T vMin, scoped in T vMax, ImU8String format = default, - ImGuiSliderFlags flags = ImGuiSliderFlags.None) where T : unmanaged, INumber, IBinaryNumber + ImGuiSliderFlags flags = ImGuiSliderFlags.None) where T : unmanaged, IBinaryNumber { fixed (byte* labelPtr = &label.GetPinnableNullTerminatedReference()) fixed (byte* formatPtr = &format.GetPinnableNullTerminatedReference()) @@ -318,7 +318,7 @@ public static unsafe partial class ImGui public static bool DragScalar( ImU8String label, ImGuiDataType dataType, Span v, float vSpeed, scoped in T vMin, scoped in T vMax, ImU8String format = default, - ImGuiSliderFlags flags = ImGuiSliderFlags.None) where T : unmanaged, INumber, IBinaryNumber + ImGuiSliderFlags flags = ImGuiSliderFlags.None) where T : unmanaged, IBinaryNumber { fixed (byte* labelPtr = &label.GetPinnableNullTerminatedReference()) fixed (byte* formatPtr = &format.GetPinnableNullTerminatedReference()) @@ -342,6 +342,59 @@ public static unsafe partial class ImGui } } + public static bool DragScalar( + ImU8String label, scoped ref T v, float vSpeed, + scoped in T vMin, scoped in T vMax, ImU8String format = default, + ImGuiSliderFlags flags = ImGuiSliderFlags.None) where T : unmanaged, IBinaryNumber + { + fixed (byte* labelPtr = &label.GetPinnableNullTerminatedReference()) + fixed (byte* formatPtr = &format.GetPinnableNullTerminatedReference()) + fixed (T* vPtr = &v) + fixed (T* vMinPtr = &vMin) + fixed (T* vMaxPtr = &vMax) + { + var res = ImGuiNative.DragScalar( + labelPtr, + GetImGuiDataType(), + vPtr, + vSpeed, + vMinPtr, + vMaxPtr, + formatPtr, + flags) != 0; + label.Dispose(); + format.Dispose(); + return res; + } + } + + public static bool DragScalar( + ImU8String label, Span v, float vSpeed, + scoped in T vMin, scoped in T vMax, ImU8String format = default, + ImGuiSliderFlags flags = ImGuiSliderFlags.None) where T : unmanaged, IBinaryNumber + { + fixed (byte* labelPtr = &label.GetPinnableNullTerminatedReference()) + fixed (byte* formatPtr = &format.GetPinnableNullTerminatedReference()) + fixed (T* vPtr = v) + fixed (T* vMinPtr = &vMin) + fixed (T* vMaxPtr = &vMax) + { + var res = ImGuiNative.DragScalarN( + labelPtr, + GetImGuiDataType(), + vPtr, + v.Length, + vSpeed, + vMinPtr, + vMaxPtr, + formatPtr, + flags) != 0; + label.Dispose(); + format.Dispose(); + return res; + } + } + public static bool DragFloatRange2( ImU8String label, scoped ref float vCurrentMin, scoped ref float vCurrentMax, float vSpeed = 1.0f, float vMin = 0.0f, float vMax = 0.0f, diff --git a/imgui/Dalamud.Bindings.ImGui/Custom/ImGui.InputScalar.cs b/imgui/Dalamud.Bindings.ImGui/Custom/ImGui.InputScalar.cs index 390000ca9..7138d8a92 100644 --- a/imgui/Dalamud.Bindings.ImGui/Custom/ImGui.InputScalar.cs +++ b/imgui/Dalamud.Bindings.ImGui/Custom/ImGui.InputScalar.cs @@ -285,7 +285,7 @@ public static unsafe partial class ImGui scoped in T step, scoped in T stepFast, ImU8String format = default, ImGuiInputTextFlags flags = ImGuiInputTextFlags.None) - where T : unmanaged, INumber, IBinaryNumber + where T : unmanaged, IBinaryNumber { fixed (byte* labelPtr = &label.GetPinnableNullTerminatedReference()) fixed (byte* formatPtr = &format.GetPinnableNullTerminatedReference()) @@ -340,7 +340,7 @@ public static unsafe partial class ImGui scoped in T step, scoped in T stepFast, ImU8String format = default, ImGuiInputTextFlags flags = ImGuiInputTextFlags.None) - where T : unmanaged, INumber, IBinaryNumber + where T : unmanaged, IBinaryNumber { fixed (byte* labelPtr = &label.GetPinnableNullTerminatedReference()) fixed (byte* formatPtr = &format.GetPinnableNullTerminatedReference()) diff --git a/imgui/Dalamud.Bindings.ImGui/Custom/ImGui.SliderScalar.cs b/imgui/Dalamud.Bindings.ImGui/Custom/ImGui.SliderScalar.cs index c0e727b69..e37eaec65 100644 --- a/imgui/Dalamud.Bindings.ImGui/Custom/ImGui.SliderScalar.cs +++ b/imgui/Dalamud.Bindings.ImGui/Custom/ImGui.SliderScalar.cs @@ -311,6 +311,61 @@ public static unsafe partial class ImGui } } + public static bool SliderScalar( + ImU8String label, scoped ref T v, + scoped in T vMin, scoped in T vMax, + ImU8String format = default, + ImGuiSliderFlags flags = ImGuiSliderFlags.None) + where T : unmanaged, IBinaryNumber + { + fixed (byte* labelPtr = &label.GetPinnableNullTerminatedReference()) + fixed (byte* formatPtr = &format.GetPinnableNullTerminatedReference()) + fixed (T* vPtr = &v) + fixed (T* vMinPtr = &vMin) + fixed (T* vMaxPtr = &vMax) + { + var res = ImGuiNative.SliderScalar( + labelPtr, + GetImGuiDataType(), + vPtr, + vMinPtr, + vMaxPtr, + formatPtr, + flags) != 0; + label.Dispose(); + format.Dispose(); + return res; + } + } + + public static bool SliderScalar( + ImU8String label, Span v, scoped in T vMin, + scoped in T vMax, + ImU8String format = default, + ImGuiSliderFlags flags = ImGuiSliderFlags.None) + where T : unmanaged, INumber, IBinaryNumber + { + fixed (byte* labelPtr = &label.GetPinnableNullTerminatedReference()) + fixed (byte* formatPtr = &format.GetPinnableNullTerminatedReference()) + fixed (T* vPtr = v) + fixed (T* vMinPtr = &vMin) + fixed (T* vMaxPtr = &vMax) + { + var res = ImGuiNative.SliderScalarN( + labelPtr, + GetImGuiDataType(), + vPtr, + v.Length, + vMinPtr, + vMaxPtr, + formatPtr, + flags) != 0; + label.Dispose(); + format.Dispose(); + return res; + } + } + public static bool SliderAngle( ImU8String label, ref float vRad, float vDegreesMin = -360.0f, float vDegreesMax = +360.0f,