mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 01:17:34 +00:00
LibWeb: Remove get_count_of_tracks()
in GFC
This method is not needed, as we calculate the number of tracks in the first step of grid layout by expanding the track definitions.
This commit is contained in:
parent
a32046ea50
commit
042d3b79c2
2 changed files with 15 additions and 31 deletions
|
@ -71,25 +71,6 @@ CSSPixels GridFormattingContext::resolve_definite_track_size(CSS::GridSize const
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int GridFormattingContext::get_count_of_tracks(Vector<CSS::ExplicitGridTrack> const& track_list)
|
|
||||||
{
|
|
||||||
auto track_count = 0;
|
|
||||||
for (auto const& explicit_grid_track : track_list) {
|
|
||||||
if (explicit_grid_track.is_repeat() && explicit_grid_track.repeat().is_default())
|
|
||||||
track_count += explicit_grid_track.repeat().repeat_count() * explicit_grid_track.repeat().grid_track_size_list().track_list().size();
|
|
||||||
else
|
|
||||||
track_count += 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (track_list.size() == 1
|
|
||||||
&& track_list.first().is_repeat()
|
|
||||||
&& (track_list.first().repeat().is_auto_fill() || track_list.first().repeat().is_auto_fit())) {
|
|
||||||
track_count = count_of_repeated_auto_fill_or_fit_tracks(track_list);
|
|
||||||
}
|
|
||||||
|
|
||||||
return track_count;
|
|
||||||
}
|
|
||||||
|
|
||||||
int GridFormattingContext::count_of_repeated_auto_fill_or_fit_tracks(Vector<CSS::ExplicitGridTrack> const& track_list)
|
int GridFormattingContext::count_of_repeated_auto_fill_or_fit_tracks(Vector<CSS::ExplicitGridTrack> const& track_list)
|
||||||
{
|
{
|
||||||
// https://www.w3.org/TR/css-grid-2/#auto-repeat
|
// https://www.w3.org/TR/css-grid-2/#auto-repeat
|
||||||
|
@ -628,14 +609,18 @@ void GridFormattingContext::place_item_with_no_declared_position(Box const& chil
|
||||||
.column_span = column_span });
|
.column_span = column_span });
|
||||||
}
|
}
|
||||||
|
|
||||||
void GridFormattingContext::initialize_grid_tracks_from_definition(Vector<CSS::ExplicitGridTrack> const& tracks_definition, Vector<GridTrack>& tracks)
|
void GridFormattingContext::initialize_grid_tracks_from_definition(GridDimension dimension)
|
||||||
{
|
{
|
||||||
auto track_count = get_count_of_tracks(tracks_definition);
|
auto const& grid_computed_values = grid_container().computed_values();
|
||||||
|
auto const& tracks_definition = dimension == GridDimension::Column ? grid_computed_values.grid_template_columns().track_list() : grid_computed_values.grid_template_rows().track_list();
|
||||||
|
auto& tracks = dimension == GridDimension::Column ? m_grid_columns : m_grid_rows;
|
||||||
for (auto const& track_definition : tracks_definition) {
|
for (auto const& track_definition : tracks_definition) {
|
||||||
auto repeat_count = (track_definition.is_repeat() && track_definition.repeat().is_default()) ? track_definition.repeat().repeat_count() : 1;
|
int repeat_count = 1;
|
||||||
if (track_definition.is_repeat()) {
|
if (track_definition.is_repeat()) {
|
||||||
if (track_definition.repeat().is_auto_fill() || track_definition.repeat().is_auto_fit())
|
if (track_definition.repeat().is_auto_fill() || track_definition.repeat().is_auto_fit())
|
||||||
repeat_count = track_count;
|
repeat_count = count_of_repeated_auto_fill_or_fit_tracks(tracks_definition);
|
||||||
|
else
|
||||||
|
repeat_count = track_definition.repeat().repeat_count();
|
||||||
}
|
}
|
||||||
for (auto _ = 0; _ < repeat_count; _++) {
|
for (auto _ = 0; _ < repeat_count; _++) {
|
||||||
switch (track_definition.type()) {
|
switch (track_definition.type()) {
|
||||||
|
@ -672,7 +657,7 @@ void GridFormattingContext::initialize_grid_tracks_for_columns_and_rows()
|
||||||
}
|
}
|
||||||
implicit_column_index++;
|
implicit_column_index++;
|
||||||
}
|
}
|
||||||
initialize_grid_tracks_from_definition(grid_computed_values.grid_template_columns().track_list(), m_grid_columns);
|
initialize_grid_tracks_from_definition(GridDimension::Column);
|
||||||
for (size_t column_index = m_grid_columns.size(); column_index < m_occupation_grid.column_count(); column_index++) {
|
for (size_t column_index = m_grid_columns.size(); column_index < m_occupation_grid.column_count(); column_index++) {
|
||||||
if (grid_auto_columns.size() > 0) {
|
if (grid_auto_columns.size() > 0) {
|
||||||
auto definition = grid_auto_columns[implicit_column_index % grid_auto_columns.size()];
|
auto definition = grid_auto_columns[implicit_column_index % grid_auto_columns.size()];
|
||||||
|
@ -696,7 +681,7 @@ void GridFormattingContext::initialize_grid_tracks_for_columns_and_rows()
|
||||||
}
|
}
|
||||||
implicit_row_index++;
|
implicit_row_index++;
|
||||||
}
|
}
|
||||||
initialize_grid_tracks_from_definition(grid_computed_values.grid_template_rows().track_list(), m_grid_rows);
|
initialize_grid_tracks_from_definition(GridDimension::Row);
|
||||||
for (size_t row_index = m_grid_rows.size(); row_index < m_occupation_grid.row_count(); row_index++) {
|
for (size_t row_index = m_grid_rows.size(); row_index < m_occupation_grid.row_count(); row_index++) {
|
||||||
if (grid_auto_rows.size() > 0) {
|
if (grid_auto_rows.size() > 0) {
|
||||||
auto definition = grid_auto_rows[implicit_row_index % grid_auto_rows.size()];
|
auto definition = grid_auto_rows[implicit_row_index % grid_auto_rows.size()];
|
||||||
|
@ -1413,8 +1398,8 @@ void GridFormattingContext::place_grid_items()
|
||||||
{
|
{
|
||||||
auto grid_template_columns = grid_container().computed_values().grid_template_columns();
|
auto grid_template_columns = grid_container().computed_values().grid_template_columns();
|
||||||
auto grid_template_rows = grid_container().computed_values().grid_template_rows();
|
auto grid_template_rows = grid_container().computed_values().grid_template_rows();
|
||||||
auto column_count = get_count_of_tracks(grid_template_columns.track_list());
|
auto column_count = m_column_lines.size();
|
||||||
auto row_count = get_count_of_tracks(grid_template_rows.track_list());
|
auto row_count = m_row_lines.size();
|
||||||
|
|
||||||
// https://drafts.csswg.org/css-grid/#overview-placement
|
// https://drafts.csswg.org/css-grid/#overview-placement
|
||||||
// 2.2. Placing Items
|
// 2.2. Placing Items
|
||||||
|
@ -1931,8 +1916,8 @@ void GridFormattingContext::run(Box const&, LayoutMode, AvailableSpace const& av
|
||||||
auto const& grid_computed_values = grid_container().computed_values();
|
auto const& grid_computed_values = grid_container().computed_values();
|
||||||
|
|
||||||
// NOTE: We store explicit grid sizes to later use in determining the position of items with negative index.
|
// NOTE: We store explicit grid sizes to later use in determining the position of items with negative index.
|
||||||
m_explicit_columns_line_count = get_count_of_tracks(grid_computed_values.grid_template_columns().track_list()) + 1;
|
m_explicit_columns_line_count = m_column_lines.size() + 1;
|
||||||
m_explicit_rows_line_count = get_count_of_tracks(grid_computed_values.grid_template_rows().track_list()) + 1;
|
m_explicit_rows_line_count = m_row_lines.size() + 1;
|
||||||
|
|
||||||
place_grid_items();
|
place_grid_items();
|
||||||
|
|
||||||
|
|
|
@ -245,7 +245,6 @@ private:
|
||||||
Optional<int> get_line_index_by_line_name(GridDimension dimension, String const&);
|
Optional<int> get_line_index_by_line_name(GridDimension dimension, String const&);
|
||||||
CSSPixels resolve_definite_track_size(CSS::GridSize const&, AvailableSpace const&);
|
CSSPixels resolve_definite_track_size(CSS::GridSize const&, AvailableSpace const&);
|
||||||
int count_of_repeated_auto_fill_or_fit_tracks(Vector<CSS::ExplicitGridTrack> const& track_list);
|
int count_of_repeated_auto_fill_or_fit_tracks(Vector<CSS::ExplicitGridTrack> const& track_list);
|
||||||
int get_count_of_tracks(Vector<CSS::ExplicitGridTrack> const&);
|
|
||||||
|
|
||||||
void build_grid_areas();
|
void build_grid_areas();
|
||||||
|
|
||||||
|
@ -255,7 +254,7 @@ private:
|
||||||
void place_item_with_column_position(Box const& child_box, int& auto_placement_cursor_x, int& auto_placement_cursor_y);
|
void place_item_with_column_position(Box const& child_box, int& auto_placement_cursor_x, int& auto_placement_cursor_y);
|
||||||
void place_item_with_no_declared_position(Box const& child_box, int& auto_placement_cursor_x, int& auto_placement_cursor_y);
|
void place_item_with_no_declared_position(Box const& child_box, int& auto_placement_cursor_x, int& auto_placement_cursor_y);
|
||||||
|
|
||||||
void initialize_grid_tracks_from_definition(Vector<CSS::ExplicitGridTrack> const& tracks_definition, Vector<GridTrack>& tracks);
|
void initialize_grid_tracks_from_definition(GridDimension);
|
||||||
void initialize_grid_tracks_for_columns_and_rows();
|
void initialize_grid_tracks_for_columns_and_rows();
|
||||||
void initialize_gap_tracks(AvailableSpace const&);
|
void initialize_gap_tracks(AvailableSpace const&);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue