Add more overloads

This commit is contained in:
Soreepeong 2025-07-29 01:37:54 +09:00
parent 97738f5a67
commit f7749237ee
3 changed files with 112 additions and 4 deletions

View file

@ -300,7 +300,7 @@ public static unsafe partial class ImGui
public static bool DragScalar<T>(
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<T>, IBinaryNumber<T>
ImGuiSliderFlags flags = ImGuiSliderFlags.None) where T : unmanaged, IBinaryNumber<T>
{
fixed (byte* labelPtr = &label.GetPinnableNullTerminatedReference())
fixed (byte* formatPtr = &format.GetPinnableNullTerminatedReference())
@ -318,7 +318,7 @@ public static unsafe partial class ImGui
public static bool DragScalar<T>(
ImU8String label, ImGuiDataType dataType, Span<T> v, float vSpeed,
scoped in T vMin, scoped in T vMax, ImU8String format = default,
ImGuiSliderFlags flags = ImGuiSliderFlags.None) where T : unmanaged, INumber<T>, IBinaryNumber<T>
ImGuiSliderFlags flags = ImGuiSliderFlags.None) where T : unmanaged, IBinaryNumber<T>
{
fixed (byte* labelPtr = &label.GetPinnableNullTerminatedReference())
fixed (byte* formatPtr = &format.GetPinnableNullTerminatedReference())
@ -342,6 +342,59 @@ public static unsafe partial class ImGui
}
}
public static bool DragScalar<T>(
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<T>
{
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<T>(),
vPtr,
vSpeed,
vMinPtr,
vMaxPtr,
formatPtr,
flags) != 0;
label.Dispose();
format.Dispose();
return res;
}
}
public static bool DragScalar<T>(
ImU8String label, Span<T> v, float vSpeed,
scoped in T vMin, scoped in T vMax, ImU8String format = default,
ImGuiSliderFlags flags = ImGuiSliderFlags.None) where T : unmanaged, IBinaryNumber<T>
{
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<T>(),
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,

View file

@ -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<T>, IBinaryNumber<T>
where T : unmanaged, IBinaryNumber<T>
{
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<T>, IBinaryNumber<T>
where T : unmanaged, IBinaryNumber<T>
{
fixed (byte* labelPtr = &label.GetPinnableNullTerminatedReference())
fixed (byte* formatPtr = &format.GetPinnableNullTerminatedReference())

View file

@ -311,6 +311,61 @@ public static unsafe partial class ImGui
}
}
public static bool SliderScalar<T>(
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<T>
{
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<T>(),
vPtr,
vMinPtr,
vMaxPtr,
formatPtr,
flags) != 0;
label.Dispose();
format.Dispose();
return res;
}
}
public static bool SliderScalar<T>(
ImU8String label, Span<T> v, scoped in T vMin,
scoped in T vMax,
ImU8String format = default,
ImGuiSliderFlags flags = ImGuiSliderFlags.None)
where T : unmanaged, INumber<T>, IBinaryNumber<T>
{
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<T>(),
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,