layout/grid.go

Functions Structs

Functions

func AutoTrack

AutoTrack creates an auto-sized track.

func AutoTrack() GridTrack {
	return GridTrack{Sizing: GridTrackAuto}
}

func Compute

Compute performs grid layout on the tree starting at root.

func (g *GridLayout) Compute(tree LayoutTree, root NodeID, available geometry.Size) Result {
	childCount := tree.ChildCount(root)
	if childCount == 0 {
		return Result{}
	}

	columns := g.getColumns()
	cells, maxRow := g.buildCells(tree, root, childCount, len(columns))
	rows := g.buildRows(maxRow)

	columnSizes := g.calculateTrackSizes(columns, available.Width, g.ColumnGap)
	rowSizes := g.initRowSizes(rows)

	g.measureCells(tree, cells, rows, columnSizes, rowSizes)
	g.resolveFractionalRows(rows, rowSizes, available.Height)

	g.positionCells(tree, cells, columnSizes, rowSizes)

	return Result{
		Size: geometry.Size{
			Width:	g.totalSize(columnSizes, g.ColumnGap),
			Height:	g.totalSize(rowSizes, g.RowGap),
		},
	}
}

func FixedTrack

FixedTrack creates a fixed-size track.

func FixedTrack(size float32) GridTrack {
	return GridTrack{Sizing: GridTrackFixed, Value: size}
}

func FractionTrack

FractionTrack creates a fractional track.

func FractionTrack(fr float32) GridTrack {
	return GridTrack{Sizing: GridTrackFraction, Value: fr}
}

func Name

Name returns "grid".

func (g *GridLayout) Name() string {
	return gridLayoutName
}

func SimpleGrid

SimpleGrid creates a grid layout with equal fractional columns.

func SimpleGrid(numColumns int, gap float32) *GridLayout {
	columns := make([]GridTrack, numColumns)
	for i := range columns {
		columns[i] = FractionTrack(1)
	}
	return &GridLayout{
		Columns:	columns,
		ColumnGap:	gap,
		RowGap:		gap,
	}
}

Structs

type GridTrack struct

GridTrack defines a grid row or column.

type GridTrack struct {
	// Sizing specifies how the track is sized.
	Sizing	GridTrackSizing

	// Value is the size value. Meaning depends on Sizing:
	//   - GridTrackAuto: ignored
	//   - GridTrackFixed: pixel size
	//   - GridTrackFraction: fraction value (like 1fr, 2fr)
	Value	float32
}

type GridLayout struct

GridLayout implements CSS Grid-style layout.

 

GridLayout arranges children in a grid of rows and columns,

with support for fixed, auto, and fractional track sizes.

type GridLayout struct {
	// Columns defines the column tracks.
	Columns	[]GridTrack

	// Rows defines the row tracks.
	Rows	[]GridTrack

	// ColumnGap is the space between columns.
	ColumnGap	float32

	// RowGap is the space between rows.
	RowGap	float32
}