1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 00:37:45 +00:00

LibWeb: Add for_each_spanned_track to iterate spanned tracks in GFC

Introducing for_each_spanned_track that allows to iterate tracks
spanned by a specific items allow to delete a lot of repeated code.
This commit is contained in:
Aliaksandr Kalenik 2023-05-17 15:34:33 +03:00 committed by Andreas Kling
parent 628efda754
commit 5312a140fe
2 changed files with 36 additions and 35 deletions

View file

@ -160,6 +160,32 @@ private:
Vector<TemporaryTrack> m_grid_rows;
Vector<TemporaryTrack> m_grid_columns;
template<typename Callback>
void for_each_spanned_track_by_item(GridItem const& item, GridDimension const dimension, Callback callback)
{
auto& tracks = dimension == GridDimension::Column ? m_grid_columns : m_grid_rows;
for (size_t span = 0; span < item.span(dimension); span++) {
if (item.raw_position(dimension) + span >= tracks.size())
break;
auto& track = tracks[item.raw_position(dimension) + span];
callback(track);
}
}
template<typename Callback>
void for_each_spanned_track_by_item(GridItem const& item, GridDimension const dimension, Callback callback) const
{
auto const& tracks = dimension == GridDimension::Column ? m_grid_columns : m_grid_rows;
for (size_t span = 0; span < item.span(dimension); span++) {
if (item.raw_position(dimension) + span >= tracks.size())
break;
auto const& track = tracks[item.raw_position(dimension) + span];
callback(track);
}
}
Vector<TemporaryTrack> m_row_gap_tracks;
Vector<TemporaryTrack> m_column_gap_tracks;