diff --git a/src/ImGui.NET/ImGui.cs b/src/ImGui.NET/ImGui.cs index 4e387e6..b8784e6 100644 --- a/src/ImGui.NET/ImGui.cs +++ b/src/ImGui.NET/ImGui.cs @@ -1,6 +1,7 @@ using System; using System.Numerics; using System.Runtime.InteropServices; +using System.Diagnostics; namespace ImGuiNET { @@ -92,6 +93,11 @@ namespace ImGuiNET ImGuiNative.igTextWrapped(text); } + public static void TextUnformatted(string message) + { + ImGuiNative.igTextUnformatted(message, null); + } + public static void LabelText(string label, string text) { ImGuiNative.igLabelText(label, text); @@ -451,6 +457,18 @@ namespace ImGuiNET return ImGuiNative.igGetWindowWidth(); } + public static Vector2 GetWindowSize() + { + Vector2 size; + ImGuiNative.igGetWindowSize(out size); + return size; + } + + public static void SetWindowSize(Vector2 size, SetCondition cond) + { + ImGuiNative.igSetWindowSize(size, cond); + } + public static bool BeginWindow(string windowTitle) => BeginWindow(windowTitle, WindowFlags.Default); public static bool BeginWindow(string windowTitle, WindowFlags flags) @@ -534,6 +552,20 @@ namespace ImGuiNET return ImGuiNative.igMenuItem(label, shortcut, selected, enabled); } + public static unsafe bool InputText(string label, byte[] textBuffer, uint bufferSize, InputTextFlags flags, TextEditCallback textEditCallback) + { + return InputText(label, textBuffer, bufferSize, flags, textEditCallback, IntPtr.Zero); + } + + public static unsafe bool InputText(string label, byte[] textBuffer, uint bufferSize, InputTextFlags flags, TextEditCallback textEditCallback, IntPtr userData) + { + Debug.Assert(bufferSize <= textBuffer.Length); + fixed (byte* ptrBuf = textBuffer) + { + return InputText(label, new IntPtr(ptrBuf), bufferSize, flags, textEditCallback, userData); + } + } + public static unsafe bool InputText(string label, IntPtr textBuffer, uint bufferSize, InputTextFlags flags, TextEditCallback textEditCallback) { return InputText(label, textBuffer, bufferSize, flags, textEditCallback, IntPtr.Zero); @@ -688,6 +720,18 @@ namespace ImGuiNET } } + public static Vector2 GetCursorStartPos() + { + Vector2 retVal; + ImGuiNative.igGetCursorStartPos(out retVal); + return retVal; + } + + public static bool BeginChild(string id, bool border = false, WindowFlags flags = 0) + { + return BeginChild(id, new Vector2(0, 0), border, flags); + } + public static bool BeginChild(string id, Vector2 size, bool border, WindowFlags flags) { return ImGuiNative.igBeginChild(id, size, border, flags); @@ -1011,5 +1055,10 @@ namespace ImGuiNET { ImGuiNative.igSetKeyboardFocusHere(offset); } + + public static void CalcListClipping(int itemsCount, float itemsHeight, ref int outItemsDisplayStart, ref int outItemsDisplayEnd) + { + ImGuiNative.igCalcListClipping(itemsCount, itemsHeight, ref outItemsDisplayStart, ref outItemsDisplayEnd); + } } } diff --git a/src/ImGui.NET/ImGuiNative.cs b/src/ImGui.NET/ImGuiNative.cs index d462233..da22ad8 100644 --- a/src/ImGui.NET/ImGuiNative.cs +++ b/src/ImGui.NET/ImGuiNative.cs @@ -225,7 +225,7 @@ namespace ImGuiNET [DllImport(cimguiLib)] public static extern void igSetCursorPosY(float y); [DllImport(cimguiLib)] - public static extern void igGetCursorStartPos(Vector2* pOut); + public static extern void igGetCursorStartPos(out Vector2 pOut); [DllImport(cimguiLib)] public static extern void igGetCursorScreenPos(Vector2* pOut); [DllImport(cimguiLib)] @@ -272,7 +272,7 @@ namespace ImGuiNET public static extern void igTextWrapped(string fmt); [DllImport(cimguiLib)] - public static extern void igTextUnformatted(byte* text, byte* text_end); + public static extern void igTextUnformatted(string text, string text_end); [DllImport(cimguiLib)] public static extern void igLabelText(string label, string fmt); @@ -658,7 +658,7 @@ namespace ImGuiNET [DllImport(cimguiLib)] public static extern void igCalcTextSize(out Vector2 pOut, char* text, char* text_end, bool hide_text_after_double_hash, float wrap_width); [DllImport(cimguiLib)] - public static extern void igCalcListClipping(int items_count, float items_height, int* out_items_display_start, int* out_items_display_end); + public static extern void igCalcListClipping(int items_count, float items_height, ref int out_items_display_start, ref int out_items_display_end); [DllImport(cimguiLib)] [return: MarshalAs(UnmanagedType.I1)]