24 std::span<const ElementRect> children);
28 std::span<const ElementRect> children);
31 std::span<ElementRect> childRects);
36 std::span<ElementRect> childRects);
41 std::vector<int32_t> columnSizes;
42 std::vector<int32_t> rowSizes;
43 std::vector<int32_t> columnOffsets;
44 std::vector<int32_t> rowOffsets;
45 size_t effectiveColumnCount = 0;
46 size_t effectiveRowCount = 0;
52 std::vector<int2> cellPositions;
53 size_t effectiveColumnCount = 0;
54 size_t effectiveRowCount = 0;
57 static void BuildTrackDefinitions(std::span<const ElementRect> childRects,
58 const GridPlacement& placement,
59 std::vector<GridTrack>& outColumnTracks,
60 std::vector<GridTrack>& outRowTracks);
63 static void DeterminePlacement(std::span<const ElementRect> childRects,
64 GridPlacement& outPlacement);
67 static void ComputeIntrinsicTrackSizes(std::span<const ElementRect> childRects,
68 const GridPlacement& placement,
69 std::vector<int32_t>& outColumnIntrinsics,
70 std::vector<int32_t>& outRowIntrinsics);
73 static void ResolveFinalLayout(
const GridProperties& grid,
74 std::span<const ElementRect> childRects,
75 const GridPlacement& placement,
76 const std::span<int32_t> intrinsicColumnSizes,
77 const std::span<int32_t> intrinsicRowSizes,
78 int32_t availableWidth,
79 int32_t availableHeight,
80 GridLayout& outLayout);
82 static void ResolveTrackSizes(std::span<const GridTrack> tracks,
83 std::span<const int32_t> intrinsicSizes,
84 int32_t availableSpace,
85 std::span<int32_t> outSizes);
87 static void ComputeOffsets(std::span<const int32_t> sizes, int16_t gap,
88 std::span<int32_t> outOffsets);
91 static void ComputeGridLayout(
const GridProperties& grid,
92 std::span<const ElementRect> childRects,
93 int32_t availableWidth,
94 int32_t availableHeight,
95 GridLayout& outLayout,
96 GridPlacement* outPlacement =
nullptr);