Files
AetherBags/KamiToolKit/Nodes/Layout/HorizontalFlexNode.cs
T
KnackAtNite 8db4ce6094
Debug Build and Test / Build against Latest Dalamud (push) Has been cancelled
Debug Build and Test / Build against Staging Dalamud (push) Has been cancelled
Initial commit: AetherBags + KamiToolKit for FC Gitea
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-08 14:46:31 -05:00

50 lines
1.4 KiB
C#

using System.Linq;
using KamiToolKit.Enums;
namespace KamiToolKit.Nodes;
public class HorizontalFlexNode : LayoutListNode {
public FlexFlags AlignmentFlags { get; set; } = FlexFlags.FitContentHeight;
public float FitPadding { get; set; } = 4.0f;
public override float Width {
get => base.Width;
set {
base.Width = value;
RecalculateLayout();
}
}
protected override void OnRecalculateLayout() {
var step = Width / NodeList.Count;
if (NodeList.Count != 0 && AlignmentFlags.HasFlag(FlexFlags.FitContentHeight)) {
Height = NodeList.Max(node => node.Height);
}
foreach (var index in Enumerable.Range(0, NodeList.Count)) {
if (AlignmentFlags.HasFlag(FlexFlags.CenterHorizontally)) {
NodeList[index].X = step * index + step / 2.0f - NodeList[index].Width / 2.0f;
}
else {
NodeList[index].X = step * index;
}
if (AlignmentFlags.HasFlag(FlexFlags.FitHeight)) {
NodeList[index].Height = Height;
}
if (AlignmentFlags.HasFlag(FlexFlags.CenterVertically)) {
NodeList[index].Y = Height / 2 - NodeList[index].Height / 2;
}
if (AlignmentFlags.HasFlag(FlexFlags.FitWidth)) {
NodeList[index].Width = step - FitPadding;
}
}
}
}