Add documentation to containers.

This commit is contained in:
2025-06-20 20:16:36 +02:00
parent f0c721bb0f
commit 5b29ea012e
4 changed files with 66 additions and 0 deletions

View File

@@ -11,27 +11,69 @@ public enum FlexDirection
public enum JustifyContent
{
/// <summary>
/// Align children to the start of the line.
/// </summary>
Start,
/// <summary>
/// Align children to the center of the line.
/// </summary>
Center,
/// <summary>
/// Align children to the end of the line.
/// </summary>
End,
/// <summary>
/// Equal space between items (no space at edges if multiple).
/// </summary>
SpaceBetween
}
public enum AlignItems
{
/// <summary>
/// Align to the top or left (cross-axis)
/// </summary>
Start,
/// <summary>
/// Center along the cross-axis.
/// </summary>
Center,
/// <summary>
/// Align to the bottom or right.
/// </summary>
End
}
/// <summary>
/// A flexible layout container that arranges its child elements in rows or columns, similar to CSS flexbox. Supports wrapping, alignment, spacing, and space distribution.
/// </summary>
public class FlexContainer : Container
{
/// <summary>
/// Layout direction to use with this <see cref="FlexContainer"/>.
/// </summary>
public FlexDirection Direction { get; set; } = FlexDirection.Row;
/// <summary>
/// Controls main-axis alignment of child elements. By default, children will be positioned at the start of a line.
/// </summary>
public JustifyContent Justify { get; set; } = JustifyContent.Start;
/// <summary>
/// Controls cross-axis alignment (start, center, end).
/// </summary>
public AlignItems Align { get; set; } = AlignItems.Start;
/// <summary>
/// If true, children wrap onto multiple lines (rows or columns).
/// </summary>
public bool Wrap { get; set; } = false;
/// <summary>
/// Space between child elements.
/// </summary>
public float Gap { get; set; } = 16f;
/// <summary>
/// (Reserved) If true, distributes extra space among children (not implemented)
/// </summary>
public bool DistributeRemainingSpace { get; set; } = false;
public FlexContainer() : base() { }

View File

@@ -3,10 +3,22 @@ using Voile.Rendering;
namespace Voile.UI.Containers;
/// <summary>
/// A grid container arranges its children in a grid layout with a given column count, and column and row spacing between child elements.
/// </summary>
public class GridContainer : Container
{
/// <summary>
/// Amount of columns this grid has.
/// </summary>
public int Columns { get; set; } = 2;
/// <summary>
/// Spacing between each grid column.
/// </summary>
public float ColumnSpacing { get; set; } = 16.0f;
/// <summary>
/// Spacing between each grid row.
/// </summary>
public float RowSpacing { get; set; } = 16.0f;
public GridContainer(Rect minimumSize, List<IElement> children, int columns = 2, float colSpacing = 16.0f, float rowSpacing = 16.0f)

View File

@@ -3,8 +3,14 @@ using Voile.Rendering;
namespace Voile.UI.Containers;
/// <summary>
/// A horizontal container arranges its children horizontally, with a given horizontal spacing between child elements.
/// </summary>
public class HorizontalContainer : Container
{
/// <summary>
/// Horizontal spacing between child elements.
/// </summary>
public float Spacing { get; set; } = 16.0f;
public HorizontalContainer(Rect minimumSize, List<IElement> children, float spacing = 16.0f) : base(minimumSize, children)

View File

@@ -3,8 +3,14 @@ using Voile.Rendering;
namespace Voile.UI.Containers;
/// <summary>
/// A vertical container arranges its children vertically, with a given vertical spacing between child elements.
/// </summary>
public class VerticalContainer : Container
{
/// <summary>
/// Vertical spacing between child elements.
/// </summary>
public float Spacing { get; set; } = 16.0f;
public VerticalContainer(Rect minimumSize, List<IElement> children, float spacing = 16.0f) : base(minimumSize, children)