#pragma once #include "../../Widgets/Widget.h" #include namespace UI { class GridLayout : public Widget { float reasonableColumnWidth; float spacing; float maximumRowHeight; std::size_t columnCount = 1; std::size_t CalculateColumnCount(float availableWidth) const; float CalculateColumnWidth(float availableWidth) const; void ArrangeChildInCell(Widget* child, Rect cellBounds) const; public: explicit GridLayout( float reasonableColumnWidth = 200.0f, float spacing = 24.0f, float maximumRowHeight = 0.0f ); void SetReasonableColumnWidth(float width); float GetReasonableColumnWidth() const; void SetSpacing(float value); float GetSpacing() const; std::size_t GetColumnCount() const; void Measure(Size availableSpace) override; void Arrange(Rect finalBounds) override; }; }