More additions from my assemblybrowser side project

internals
Eric Mellino 9 years ago
parent af11e21acc
commit 6ab2d0e573
  1. 3
      src/ImGui.NET/ImGui.NET.csproj
  2. 229
      src/ImGui.NET/ImGui.cs
  3. 43
      src/ImGui.NET/ImGuiNative.cs
  4. 49
      src/ImGui.NET/TextInputBuffer.cs
  5. 3
      src/ImGui.NET/project.json

@ -5,7 +5,7 @@
<MinimumVisualStudioVersion>14.0</MinimumVisualStudioVersion>
<ProjectGuid>{2665014F-0FEC-4268-8F77-7B029921AB09}</ProjectGuid>
<OutputType>Library</OutputType>
<RootNamespace>ImGui</RootNamespace>
<RootNamespace>ImGuiNET</RootNamespace>
<AssemblyName>ImGui.NET</AssemblyName>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
</PropertyGroup>
@ -15,6 +15,7 @@
<Compile Include="MouseCursorKind.cs" />
<Compile Include="SelectableFlags.cs" />
<Compile Include="StyleVar.cs" />
<Compile Include="TextInputBuffer.cs" />
<Compile Include="WindowFlags.cs" />
<Compile Include="ColorEditMode.cs" />
<Compile Include="GuiKey.cs" />

@ -1,4 +1,6 @@
using System.Numerics;
using System;
using System.Numerics;
using System.Runtime.InteropServices;
namespace ImGuiNET
{
@ -25,6 +27,16 @@ namespace ImGuiNET
ImGuiNative.igText(message);
}
public static void PushId(string id)
{
ImGuiNative.igPushIdStr(id);
}
public static void PopId()
{
ImGuiNative.igPopId();
}
public static void Text(string message, Vector4 color)
{
ImGuiNative.igTextColored(color, message);
@ -35,6 +47,16 @@ namespace ImGuiNET
return ImGuiNative.igButton(message, size);
}
public static void SetNextWindowSize(Vector2 size, SetCondition condition)
{
ImGuiNative.igSetNextWindowSize(size, condition);
}
public static void SetNextWindowPosCenter(SetCondition condition)
{
ImGuiNative.igSetNextWindowPosCenter(condition);
}
/// <summary>
/// Helper to scale the ClipRect field of each ImDrawCmd.
/// Use if your final output buffer is at a different scale than ImGui expects,
@ -55,5 +77,210 @@ namespace ImGuiNET
}
}
}
public static float GetWindowHeight()
{
return ImGuiNative.igGetWindowHeight();
}
public static bool ColorButton(Vector4 color, bool smallHeight, bool outlineBorder)
{
return ImGuiNative.igColorButton(color, smallHeight, outlineBorder);
}
public static float GetWindowWidth()
{
return ImGuiNative.igGetWindowWidth();
}
public static bool BeginWindow(string windowTitle) => BeginWindow(windowTitle, WindowFlags.Default);
public static bool BeginWindow(string windowTitle, WindowFlags flags)
{
bool opened = true;
return ImGuiNative.igBegin(windowTitle, ref opened, flags);
}
public static bool BeginWindow(string windowTitle, ref bool opened, WindowFlags flags)
{
return ImGuiNative.igBegin(windowTitle, ref opened, flags);
}
public static bool BeginWindow(string windowTitle, ref bool opened, float backgroundAlpha, WindowFlags flags)
{
return ImGuiNative.igBegin2(windowTitle, ref opened, new Vector2(), backgroundAlpha, flags);
}
public static bool BeginMenu(string label, bool enabled)
{
return ImGuiNative.igBeginMenu(label, enabled);
}
public static void BeginMenuBar()
{
ImGuiNative.igBeginMenuBar();
}
public static bool BeginWindow(string windowTitle, ref bool opened, Vector2 startingSize, WindowFlags flags)
{
return ImGuiNative.igBegin2(windowTitle, ref opened, startingSize, 1f, flags);
}
public static void EndMenuBar()
{
ImGuiNative.igEndMenuBar();
}
public static void EndMenu()
{
ImGuiNative.igEndMenu();
}
public static bool BeginWindow(string windowTitle, ref bool opened, Vector2 startingSize, float backgroundAlpha, WindowFlags flags)
{
return ImGuiNative.igBegin2(windowTitle, ref opened, startingSize, backgroundAlpha, flags);
}
public static void Separator()
{
ImGuiNative.igSeparator();
}
public static bool MenuItem(string label, string shortcut)
{
return MenuItem(label, shortcut, false, true);
}
public static unsafe bool InputText(string label, IntPtr textBuffer, uint bufferSize, InputTextFlags flags, TextEditCallback textEditCallback)
{
return InputText(label, textBuffer, bufferSize, flags, textEditCallback, IntPtr.Zero);
}
public static unsafe bool InputText(string label, IntPtr textBuffer, uint bufferSize, InputTextFlags flags, TextEditCallback textEditCallback, IntPtr userData)
{
return ImGuiNative.igInputText(label, textBuffer, bufferSize, flags, textEditCallback, userData.ToPointer());
}
public static bool MenuItem(string label, string shortcut, bool selected, bool enabled)
{
return ImGuiNative.igMenuItem(label, shortcut, selected, enabled);
}
public static void EndWindow()
{
ImGuiNative.igEnd();
}
public static void PushStyleColor(ColorTarget target, Vector4 color)
{
ImGuiNative.igPushStyleColor(target, color);
}
public static unsafe void InputTextMultiline(string label, IntPtr textBuffer, uint bufferSize, Vector2 size, InputTextFlags flags, TextEditCallback callback, IntPtr userData)
{
ImGuiNative.igInputTextMultiline(label, textBuffer, bufferSize, size, flags, callback, userData.ToPointer());
}
public static void PopStyleColor()
{
PopStyleColor(1);
}
public static void PopStyleColor(int numStyles)
{
ImGuiNative.igPopStyleColor(numStyles);
}
public static bool BeginChildFrame(uint id, Vector2 size, WindowFlags flags)
{
return ImGuiNative.igBeginChildFrame(id, size, flags);
}
public static void EndChildFrame()
{
ImGuiNative.igEndChildFrame();
}
public static bool BeginChild(string id, Vector2 size, bool border, WindowFlags flags)
{
return ImGuiNative.igBeginChild(id, size, border, flags);
}
public static bool BeginChild(uint id, Vector2 size, bool border, WindowFlags flags)
{
return ImGuiNative.igBeginChildEx(id, size, border, flags);
}
public static void EndChild()
{
ImGuiNative.igEndChild();
}
public static bool Selectable(string label, bool isSelected)
{
return Selectable(label, isSelected, SelectableFlags.Default);
}
public static bool Selectable(string label, bool isSelected, SelectableFlags flags)
{
return Selectable(label, isSelected, flags, new Vector2());
}
public static bool Selectable(string label, bool isSelected, SelectableFlags flags, Vector2 size)
{
return ImGuiNative.igSelectable(label, isSelected, flags, size);
}
public static unsafe Vector2 GetTextSize(string text, float wrapWidth = Int32.MaxValue)
{
Vector2 result;
IntPtr buffer = Marshal.StringToHGlobalAnsi(text);
byte* textStart = (byte*)buffer.ToPointer();
byte* textEnd = textStart + text.Length;
ImGuiNative.igCalcTextSize(out result, (char*)textStart, (char*)textEnd, false, wrapWidth);
return result;
}
public static void SameLine()
{
ImGuiNative.igSameLine(0, 0);
}
public static void SameLine(float localPositionX, float spacingW)
{
ImGuiNative.igSameLine(localPositionX, spacingW);
}
public static bool IsLastItemHovered()
{
return ImGuiNative.igIsItemHovered();
}
public static void ShowTooltip(string text)
{
ImGuiNative.igSetTooltip(text);
}
public static void SetNextTreeNodeOpened(bool opened)
{
ImGuiNative.igSetNextTreeNodeOpened(opened, SetCondition.Always);
}
public static bool TreeNode(string label)
{
return ImGuiNative.igTreeNode(label);
}
public static void TreePop()
{
ImGuiNative.igTreePop();
}
public static Vector2 GetLastItemRect()
{
Vector2 result;
ImGuiNative.igGetItemRectSize(out result);
return result;
}
}
}

@ -31,16 +31,6 @@ namespace ImGuiNET
[DllImport(cimguiLib)]
public static extern void igShowStyleEditor(ref Style @ref);
public static void igBegin(string v, ref object _mainWindowOpened, WindowFlags windowFlags)
{
throw new NotImplementedException();
}
public static void igBeginChildFrame(uint _leftFrameId, Vector2 vector2)
{
throw new NotImplementedException();
}
[DllImport(cimguiLib)]
public static extern void igShowTestWindow(ref bool opened);
[DllImport(cimguiLib)]
@ -64,11 +54,6 @@ namespace ImGuiNET
[DllImport(cimguiLib)]
public static extern void igGetContentRegionAvail(out Vector2 @out);
public static void igSliderFloat(string v1, ref object _sliderVal, float v2, float v3, string v4, int v5)
{
throw new NotImplementedException();
}
[DllImport(cimguiLib)]
public static extern float igGetContentRegionAvailWidth();
[DllImport(cimguiLib)]
@ -416,20 +401,11 @@ namespace ImGuiNET
public static extern bool igTreeNode(string str_label_id);
[DllImport(cimguiLib)]
//public static extern bool igTreeNodeStr(string str_id, string fmt, ...);
public static extern bool igTreeNodeStr(string str_id, string fmt);
[DllImport(cimguiLib)]
//public static extern bool igTreeNodePtr(void* ptr_id, string fmt, ...);
public static extern bool igTreeNodePtr(void* ptr_id, string fmt);
/*
[DllImport(LibName)]
public static extern bool igTreeNodeStrV(string str_id, string fmt, va_list args);
[DllImport(LibName)]
public static extern bool igTreeNodePtrV(void* ptr_id, string fmt, va_list args);
*/
[DllImport(cimguiLib)]
public static extern void igTreePushStr(string str_id);
[DllImport(cimguiLib)]
@ -443,7 +419,7 @@ namespace ImGuiNET
[DllImport(cimguiLib)]
public static extern bool igSelectable(string label, bool selected, SelectableFlags flags, Vector2 size);
[DllImport(cimguiLib)]
public static extern bool igSelectableEx(string label, bool* p_selected, SelectableFlags flags, Vector2 size);
public static extern bool igSelectableEx(string label, ref bool p_selected, SelectableFlags flags, Vector2 size);
[DllImport(cimguiLib)]
public static extern bool igListBox(string label, int* current_item, char** items, int items_count, int height_in_items);
@ -473,14 +449,7 @@ namespace ImGuiNET
// Tooltip
[DllImport(cimguiLib)]
//public static extern void igSetTooltip(string fmt, ...);
public static extern void igSetTooltip(string fmt);
/*
[DllImport(LibName)]
public static extern void igSetTooltipV(string fmt, va_list args);
*/
[DllImport(cimguiLib)]
public static extern void igBeginTooltip();
[DllImport(cimguiLib)]
@ -569,11 +538,11 @@ namespace ImGuiNET
[DllImport(cimguiLib)]
public static extern bool igIsAnyItemActive();
[DllImport(cimguiLib)]
public static extern void igGetItemRectMin(Vector2* pOut);
public static extern void igGetItemRectMin(out Vector2 pOut);
[DllImport(cimguiLib)]
public static extern void igGetItemRectMax(Vector2* pOut);
public static extern void igGetItemRectMax(out Vector2 pOut);
[DllImport(cimguiLib)]
public static extern void igGetItemRectSize(Vector2* pOut);
public static extern void igGetItemRectSize(out Vector2 pOut);
[DllImport(cimguiLib)]
public static extern bool igIsWindowHovered();
[DllImport(cimguiLib)]
@ -593,9 +562,9 @@ namespace ImGuiNET
[DllImport(cimguiLib)]
public static extern string igGetStyleColName(ColorTarget idx);
[DllImport(cimguiLib)]
public static extern void igCalcItemRectClosestPoint(Vector2* pOut, Vector2 pos, bool on_edge, float outward);
public static extern void igCalcItemRectClosestPoint(out Vector2 pOut, Vector2 pos, bool on_edge, float outward);
[DllImport(cimguiLib)]
public static extern void igCalcTextSize(Vector2* pOut, string text, string text_end, bool hide_text_after_double_hash, float wrap_width);
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);

@ -0,0 +1,49 @@
using System;
using System.Runtime.InteropServices;
namespace ImGuiNET
{
public class TextInputBuffer : IDisposable
{
public IntPtr Buffer { get; private set; }
public uint Length { get; private set; }
public TextInputBuffer(int length)
{
CreateBuffer(length);
}
public TextInputBuffer(string initialText)
{
Buffer = Marshal.StringToHGlobalAnsi(initialText);
Length = (uint)initialText.Length;
}
public void Resize(int newSize)
{
ClearBuffer();
CreateBuffer(newSize);
}
private void CreateBuffer(int size)
{
Buffer = Marshal.AllocHGlobal(size);
Length = Length;
}
private void ClearBuffer()
{
Marshal.FreeHGlobal(Buffer);
Buffer = IntPtr.Zero;
Length = 0;
}
public void Dispose()
{
if (Buffer != IntPtr.Zero)
{
ClearBuffer();
}
}
}
}

@ -1,7 +1,6 @@
{
"dependencies": {
"Microsoft.NETCore.Console": "1.0.0-beta-23413",
"System.Console": "4.0.0-beta-23427"
"Microsoft.NETCore.Console": "1.0.0-beta-23504"
},
"runtimes": {
"win10-x64": { },

Loading…
Cancel
Save