2024-03-17 04:30:21 +00:00
|
|
|
using TUI.Engine.Attributes;
|
2024-03-15 19:13:09 +00:00
|
|
|
using TUI.Engine.Attributes.Alignments;
|
|
|
|
using TUI.Engine.Attributes.Paddings;
|
|
|
|
using TUI.Engine.Nodes;
|
|
|
|
using TUI.Engine.Theme;
|
|
|
|
|
|
|
|
namespace TUI.Engine.Components;
|
|
|
|
|
2024-03-16 20:31:13 +00:00
|
|
|
public abstract class ComponentBase : NodeBase, IComponent
|
2024-03-15 19:13:09 +00:00
|
|
|
{
|
2024-03-17 04:30:21 +00:00
|
|
|
protected abstract Sketch DrawComponent(Size minSize);
|
2024-03-15 19:13:09 +00:00
|
|
|
|
2024-03-17 19:57:31 +00:00
|
|
|
public bool IsRelative { get; private set; } = true;
|
|
|
|
|
|
|
|
public void SetRelative()
|
|
|
|
{
|
|
|
|
IsRelative = true;
|
|
|
|
}
|
|
|
|
|
|
|
|
public void SetAbsolute()
|
|
|
|
{
|
|
|
|
IsRelative = false;
|
|
|
|
}
|
|
|
|
|
2024-03-17 04:30:21 +00:00
|
|
|
Sketch IComponent.MakeSketch(Size minSize) => DrawComponent(minSize);
|
2024-03-15 19:13:09 +00:00
|
|
|
|
|
|
|
#region Alignments
|
|
|
|
|
|
|
|
Alignment IWithAlignment.Alignment => Alignment;
|
|
|
|
|
2024-03-16 20:31:13 +00:00
|
|
|
internal Alignment Alignment { get; private set; } = new(Defaults.HorizontalAlignment, Defaults.VerticalAlignment);
|
|
|
|
|
|
|
|
public void SetAlignment(Vertical vertical) => Alignment = Alignment with { Vertical = vertical };
|
2024-03-15 19:13:09 +00:00
|
|
|
|
2024-03-16 20:31:13 +00:00
|
|
|
public void SetAlignment(Horizontal horizontal) => Alignment = Alignment with { Horizontal = horizontal };
|
2024-03-15 19:13:09 +00:00
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region Paddings
|
|
|
|
|
|
|
|
Padding IWithPadding.Padding => Padding;
|
|
|
|
|
2024-03-16 20:31:13 +00:00
|
|
|
internal Padding Padding { get; private set; } = new(Defaults.Padding);
|
|
|
|
|
2024-03-15 19:13:09 +00:00
|
|
|
public void SetPadding(Level level) => Padding = new Padding(level);
|
|
|
|
|
|
|
|
public void SetPaddingTop(Level level) => Padding = Padding with { Top = level };
|
|
|
|
|
|
|
|
public void SetPaddingRight(Level level) => Padding = Padding with { Right = level };
|
|
|
|
|
|
|
|
public void SetPaddingBottom(Level level) => Padding = Padding with { Bottom = level };
|
|
|
|
|
|
|
|
public void SetPaddingLeft(Level level) => Padding = Padding with { Left = level };
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
}
|