mirror of
https://github.com/goatcorp/Dalamud.git
synced 2025-12-12 18:27:23 +01:00
70 lines
1.8 KiB
C#
70 lines
1.8 KiB
C#
using ImGuiNET;
|
|
|
|
namespace Dalamud.Interface.Raii;
|
|
|
|
public static partial class ImRaii
|
|
{
|
|
public static Indent PushIndent(float f, bool scaled = true, bool condition = true)
|
|
=> new Indent().Push(f, scaled, condition);
|
|
|
|
public static Indent PushIndent(int i = 1, bool condition = true)
|
|
=> new Indent().Push(i, condition);
|
|
|
|
public sealed class Indent : IDisposable
|
|
{
|
|
public float Indentation { get; private set; }
|
|
|
|
public Indent Push(float indent, bool scaled = true, bool condition = true)
|
|
{
|
|
if (condition)
|
|
{
|
|
if (scaled)
|
|
indent *= InterfaceHelpers.GlobalScale;
|
|
|
|
IndentInternal(indent);
|
|
this.Indentation += indent;
|
|
}
|
|
|
|
return this;
|
|
}
|
|
|
|
public Indent Push(int i = 1, bool condition = true)
|
|
{
|
|
if (condition)
|
|
{
|
|
var spacing = i * ImGui.GetStyle().IndentSpacing;
|
|
IndentInternal(spacing);
|
|
this.Indentation += spacing;
|
|
}
|
|
|
|
return this;
|
|
}
|
|
|
|
public void Pop(float indent, bool scaled = true)
|
|
{
|
|
if (scaled)
|
|
indent *= InterfaceHelpers.GlobalScale;
|
|
|
|
IndentInternal(-indent);
|
|
this.Indentation -= indent;
|
|
}
|
|
|
|
public void Pop(int i)
|
|
{
|
|
var spacing = i * ImGui.GetStyle().IndentSpacing;
|
|
IndentInternal(-spacing);
|
|
this.Indentation -= spacing;
|
|
}
|
|
|
|
private static void IndentInternal(float indent)
|
|
{
|
|
if (indent < 0)
|
|
ImGui.Unindent(-indent);
|
|
else if (indent > 0)
|
|
ImGui.Indent(indent);
|
|
}
|
|
|
|
public void Dispose()
|
|
=> this.Pop(this.Indentation, false);
|
|
}
|
|
}
|