You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

55 lines
1.8 KiB

using System.Numerics;
using ImGuiNET;
using ImGuiInternal = ImGuiNET.Internal.ImGui;
namespace gaemstone.Client.Utility;
public static class ImGuiUtility
{
public static bool UIButtonToggle(int index, string label, string tooltip, ref bool enabled)
{ if (UIButton(index, label, tooltip, enabled)) enabled = !enabled; return enabled; }
public static bool UIButton(int index, string label, string tooltip, bool active)
{
var start = new Vector2(4, 4);
var buttonSize = new Vector2(32, 32);
var pos = start + new Vector2(buttonSize.X + 4, 0) * index;
ImGui.SetNextWindowPos(pos, ImGuiCond.Always);
ImGui.PushStyleVar(ImGuiStyleVar.WindowPadding, Vector2.Zero);
ImGui.Begin("UIToggle" + index,
ImGuiWindowFlags.NoTitleBar | ImGuiWindowFlags.NoBackground |
ImGuiWindowFlags.NoMove | ImGuiWindowFlags.NoResize |
ImGuiWindowFlags.NoBringToFrontOnFocus | ImGuiWindowFlags.NoDocking);
ImGui.PopStyleVar();
if (!active) ImGui.PushStyleVar(ImGuiStyleVar.Alpha, 0.6f);
var clicked = ImGui.Button(label, buttonSize);
if (!active) ImGui.PopStyleVar();
if (ImGui.IsItemHovered()) ImGui.SetTooltip(tooltip);
ImGui.End();
return clicked;
}
// public static void AdvancedTooltip(string brief, string detail)
// {
// if (!ImGui.IsItemHovered()) return;
// ImGui.BeginTooltip();
// ImGui.PushFont(ImGui.GetIO().Fonts.Fonts[1]);
// ImGui.TextUnformatted(brief);
// ImGui.PopFont();
// ImGui.Text(detail);
// ImGui.EndTooltip();
// }
public static void TextCentered(string text, Vector2 size)
{
var pos = ImGui.GetCursorScreenPos();
ImGuiInternal.ItemSize(size, 0);
if (!ImGuiInternal.ItemAdd(new() { Min = pos, Max = pos + size }, 0)) return;
var textSize = ImGui.CalcTextSize(text);
var textPos = pos + (size - textSize) / 2;
ImGuiInternal.RenderText(textPos, text);
}
}