Dalamud/imgui/Dalamud.Bindings.ImGui/Custom/ImGuiNative.Custom.cs
srkizer c69329f592
Manual overloads for ImGui functions accepting text (#2319)
* wip2

* Implement AutoUtf8Buffer

* reformat

* Work on manual bindings

* restructure

* Name scripts properly

* Update utility functions to use ImU8String

* add overloads

* Add more overloads

* Use ImGuiWindow from gen, support AddCallback

* Use LibraryImport for custom ImGuiNative functinos

* Make manual overloads for string-returning functinos

* Make all overloads with self as its first parameter extension methods

* Fix overload resolution by removing unnecessary

* in => scoped in

* Fix compilation errors
2025-08-04 11:14:00 -07:00

40 lines
1.3 KiB
C#

using System.Numerics;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
namespace Dalamud.Bindings.ImGui;
public static unsafe partial class ImGuiNative
{
private const string LibraryName = "cimgui";
static ImGuiNative()
{
if (LibraryName != ImGui.GetLibraryName())
{
throw new(
$"{nameof(LibraryName)}(={LibraryName})" +
$" does not match " +
$"{nameof(ImGui)}.{nameof(ImGui.GetLibraryName)}(={ImGui.GetLibraryName()})");
}
}
[LibraryImport(LibraryName, EntryPoint = "ImDrawList_AddCallback")]
[UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
public static partial void AddCallback(
ImDrawList* self,
delegate*<ImDrawList*, ImDrawCmd*, void> callback,
void* callbackData = null);
[LibraryImport(LibraryName, EntryPoint = "igInputTextEx")]
[UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
public static partial int InputTextEx(
byte* label,
byte* hint,
byte* buf,
int bufSize,
Vector2 sizeArg,
ImGuiInputTextFlags flags = ImGuiInputTextFlags.None,
delegate* unmanaged[Cdecl]<ImGuiInputTextCallbackData*, int> callback = null,
void* userData = null);
}