mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 19:27:45 +00:00
LibWeb: Add some helpers for TemporaryTrack
Add some helpers to the TemporaryTrack struct to assist in making future commits more legible.
This commit is contained in:
parent
9e6612c49b
commit
2b69fa5649
2 changed files with 31 additions and 13 deletions
|
@ -684,19 +684,19 @@ void GridFormattingContext::run(Box const& box, LayoutMode, AvailableSpace const
|
||||||
for (auto _ = 0; _ < repeat_count; _++) {
|
for (auto _ = 0; _ < repeat_count; _++) {
|
||||||
switch (track_in_list.type()) {
|
switch (track_in_list.type()) {
|
||||||
case CSS::ExplicitGridTrack::Type::MinMax:
|
case CSS::ExplicitGridTrack::Type::MinMax:
|
||||||
m_grid_columns.append({ track_in_list.minmax().min_grid_size(), track_in_list.minmax().max_grid_size() });
|
m_grid_columns.append(TemporaryTrack(track_in_list.minmax().min_grid_size(), track_in_list.minmax().max_grid_size()));
|
||||||
break;
|
break;
|
||||||
case CSS::ExplicitGridTrack::Type::Repeat:
|
case CSS::ExplicitGridTrack::Type::Repeat:
|
||||||
for (auto& explicit_grid_track : track_in_list.repeat().grid_track_size_list().track_list()) {
|
for (auto& explicit_grid_track : track_in_list.repeat().grid_track_size_list().track_list()) {
|
||||||
auto track_sizing_function = explicit_grid_track;
|
auto track_sizing_function = explicit_grid_track;
|
||||||
if (track_sizing_function.is_minmax())
|
if (track_sizing_function.is_minmax())
|
||||||
m_grid_columns.append({ track_sizing_function.minmax().min_grid_size(), track_sizing_function.minmax().max_grid_size() });
|
m_grid_columns.append(TemporaryTrack(track_sizing_function.minmax().min_grid_size(), track_sizing_function.minmax().max_grid_size()));
|
||||||
else
|
else
|
||||||
m_grid_columns.append({ track_sizing_function.grid_size(), track_sizing_function.grid_size() });
|
m_grid_columns.append(TemporaryTrack(track_sizing_function.grid_size()));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case CSS::ExplicitGridTrack::Type::Default:
|
case CSS::ExplicitGridTrack::Type::Default:
|
||||||
m_grid_columns.append({ track_in_list.grid_size(), track_in_list.grid_size() });
|
m_grid_columns.append(TemporaryTrack(track_in_list.grid_size()));
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
VERIFY_NOT_REACHED();
|
VERIFY_NOT_REACHED();
|
||||||
|
@ -712,19 +712,19 @@ void GridFormattingContext::run(Box const& box, LayoutMode, AvailableSpace const
|
||||||
for (auto _ = 0; _ < repeat_count; _++) {
|
for (auto _ = 0; _ < repeat_count; _++) {
|
||||||
switch (track_in_list.type()) {
|
switch (track_in_list.type()) {
|
||||||
case CSS::ExplicitGridTrack::Type::MinMax:
|
case CSS::ExplicitGridTrack::Type::MinMax:
|
||||||
m_grid_rows.append({ track_in_list.minmax().min_grid_size(), track_in_list.minmax().max_grid_size() });
|
m_grid_rows.append(TemporaryTrack(track_in_list.minmax().min_grid_size(), track_in_list.minmax().max_grid_size()));
|
||||||
break;
|
break;
|
||||||
case CSS::ExplicitGridTrack::Type::Repeat:
|
case CSS::ExplicitGridTrack::Type::Repeat:
|
||||||
for (auto& explicit_grid_track : track_in_list.repeat().grid_track_size_list().track_list()) {
|
for (auto& explicit_grid_track : track_in_list.repeat().grid_track_size_list().track_list()) {
|
||||||
auto track_sizing_function = explicit_grid_track;
|
auto track_sizing_function = explicit_grid_track;
|
||||||
if (track_sizing_function.is_minmax())
|
if (track_sizing_function.is_minmax())
|
||||||
m_grid_rows.append({ track_sizing_function.minmax().min_grid_size(), track_sizing_function.minmax().max_grid_size() });
|
m_grid_rows.append(TemporaryTrack(track_sizing_function.minmax().min_grid_size(), track_sizing_function.minmax().max_grid_size()));
|
||||||
else
|
else
|
||||||
m_grid_rows.append({ track_sizing_function.grid_size(), track_sizing_function.grid_size() });
|
m_grid_rows.append(TemporaryTrack(track_sizing_function.grid_size()));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case CSS::ExplicitGridTrack::Type::Default:
|
case CSS::ExplicitGridTrack::Type::Default:
|
||||||
m_grid_rows.append({ track_in_list.grid_size(), track_in_list.grid_size() });
|
m_grid_rows.append(TemporaryTrack(track_in_list.grid_size()));
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
VERIFY_NOT_REACHED();
|
VERIFY_NOT_REACHED();
|
||||||
|
@ -733,9 +733,9 @@ void GridFormattingContext::run(Box const& box, LayoutMode, AvailableSpace const
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int column_index = m_grid_columns.size(); column_index < occupation_grid.column_count(); column_index++)
|
for (int column_index = m_grid_columns.size(); column_index < occupation_grid.column_count(); column_index++)
|
||||||
m_grid_columns.append({ CSS::GridSize::make_auto(), CSS::GridSize::make_auto() });
|
m_grid_columns.append(TemporaryTrack());
|
||||||
for (int row_index = m_grid_rows.size(); row_index < occupation_grid.row_count(); row_index++)
|
for (int row_index = m_grid_rows.size(); row_index < occupation_grid.row_count(); row_index++)
|
||||||
m_grid_rows.append({ CSS::GridSize::make_auto(), CSS::GridSize::make_auto() });
|
m_grid_rows.append(TemporaryTrack());
|
||||||
|
|
||||||
// https://www.w3.org/TR/css-grid-2/#algo-overview
|
// https://www.w3.org/TR/css-grid-2/#algo-overview
|
||||||
// 12.1. Grid Sizing Algorithm
|
// 12.1. Grid Sizing Algorithm
|
||||||
|
|
|
@ -26,17 +26,35 @@ private:
|
||||||
bool is_auto_positioned_column(CSS::GridTrackPlacement const&, CSS::GridTrackPlacement const&) const;
|
bool is_auto_positioned_column(CSS::GridTrackPlacement const&, CSS::GridTrackPlacement const&) const;
|
||||||
bool is_auto_positioned_track(CSS::GridTrackPlacement const&, CSS::GridTrackPlacement const&) const;
|
bool is_auto_positioned_track(CSS::GridTrackPlacement const&, CSS::GridTrackPlacement const&) const;
|
||||||
|
|
||||||
struct GridTrackSizeConstraints {
|
struct TemporaryTrack {
|
||||||
CSS::GridSize min_track_sizing_function;
|
CSS::GridSize min_track_sizing_function;
|
||||||
CSS::GridSize max_track_sizing_function;
|
CSS::GridSize max_track_sizing_function;
|
||||||
float base_size { 0 };
|
float base_size { 0 };
|
||||||
float growth_limit { 0 };
|
float growth_limit { 0 };
|
||||||
float space_to_distribute { 0 };
|
float space_to_distribute { 0 };
|
||||||
float planned_increase { 0 };
|
float planned_increase { 0 };
|
||||||
|
|
||||||
|
TemporaryTrack(CSS::GridSize min_track_sizing_function, CSS::GridSize max_track_sizing_function)
|
||||||
|
: min_track_sizing_function(min_track_sizing_function)
|
||||||
|
, max_track_sizing_function(max_track_sizing_function)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
TemporaryTrack(CSS::GridSize track_sizing_function)
|
||||||
|
: min_track_sizing_function(track_sizing_function)
|
||||||
|
, max_track_sizing_function(track_sizing_function)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
TemporaryTrack()
|
||||||
|
: min_track_sizing_function(CSS::GridSize::make_auto())
|
||||||
|
, max_track_sizing_function(CSS::GridSize::make_auto())
|
||||||
|
{
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
Vector<GridTrackSizeConstraints> m_grid_rows;
|
Vector<TemporaryTrack> m_grid_rows;
|
||||||
Vector<GridTrackSizeConstraints> m_grid_columns;
|
Vector<TemporaryTrack> m_grid_columns;
|
||||||
|
|
||||||
float get_free_space_x(AvailableSpace const& available_space);
|
float get_free_space_x(AvailableSpace const& available_space);
|
||||||
float get_free_space_y(Box const&);
|
float get_free_space_y(Box const&);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue