summaryrefslogtreecommitdiff
path: root/chromium/third_party/blink/renderer/core/layout/ng/grid/ng_grid_layout_algorithm.h
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2022-05-17 17:24:03 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2022-06-22 07:51:41 +0000
commit774f54339e5db91f785733232d3950366db65d07 (patch)
tree068e1b47bd1af94d77094ed12b604a6b83d9c22a /chromium/third_party/blink/renderer/core/layout/ng/grid/ng_grid_layout_algorithm.h
parentf7eaed5286974984ba5f9e3189d8f49d03e99f81 (diff)
downloadqtwebengine-chromium-774f54339e5db91f785733232d3950366db65d07.tar.gz
BASELINE: Update Chromium to 102.0.5005.57
Change-Id: I885f714bb40ee724c28f94ca6bd8dbdb39915158 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'chromium/third_party/blink/renderer/core/layout/ng/grid/ng_grid_layout_algorithm.h')
-rw-r--r--chromium/third_party/blink/renderer/core/layout/ng/grid/ng_grid_layout_algorithm.h130
1 files changed, 61 insertions, 69 deletions
diff --git a/chromium/third_party/blink/renderer/core/layout/ng/grid/ng_grid_layout_algorithm.h b/chromium/third_party/blink/renderer/core/layout/ng/grid/ng_grid_layout_algorithm.h
index 3562a393902..2ed849e93df 100644
--- a/chromium/third_party/blink/renderer/core/layout/ng/grid/ng_grid_layout_algorithm.h
+++ b/chromium/third_party/blink/renderer/core/layout/ng/grid/ng_grid_layout_algorithm.h
@@ -5,9 +5,12 @@
#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_GRID_NG_GRID_LAYOUT_ALGORITHM_H_
#define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_GRID_NG_GRID_LAYOUT_ALGORITHM_H_
-#include "third_party/blink/renderer/core/layout/ng/grid/ng_grid_geometry.h"
+#include "third_party/blink/renderer/core/core_export.h"
+#include "third_party/blink/renderer/core/layout/ng/grid/ng_grid_break_token_data.h"
+#include "third_party/blink/renderer/core/layout/ng/grid/ng_grid_data.h"
#include "third_party/blink/renderer/core/layout/ng/grid/ng_grid_item.h"
#include "third_party/blink/renderer/core/layout/ng/grid/ng_grid_node.h"
+#include "third_party/blink/renderer/core/layout/ng/grid/ng_grid_placement.h"
#include "third_party/blink/renderer/core/layout/ng/grid/ng_grid_properties.h"
#include "third_party/blink/renderer/core/layout/ng/grid/ng_grid_track_collection.h"
#include "third_party/blink/renderer/core/layout/ng/ng_block_break_token.h"
@@ -18,9 +21,6 @@
namespace blink {
-class NGGridPlacement;
-struct GridItemOffsets;
-
// This enum corresponds to each step used to accommodate grid items across
// intrinsic tracks according to their min and max track sizing functions, as
// defined in https://drafts.csswg.org/css-grid-2/#algo-spanning-items.
@@ -54,7 +54,7 @@ class CORE_EXPORT NGGridLayoutAlgorithm
// Helper that computes tracks sizes in a given range.
static Vector<std::div_t> ComputeTrackSizesInRange(
- const SetGeometry& set_geometry,
+ const NGGridLayoutTrackCollection& track_collection,
wtf_size_t range_starting_set_index,
wtf_size_t range_set_count);
@@ -63,108 +63,99 @@ class CORE_EXPORT NGGridLayoutAlgorithm
const NGLayoutResult* LayoutInternal();
- LayoutUnit Baseline(const NGGridGeometry& grid_geometry,
+ LayoutUnit Baseline(const NGGridLayoutData& layout_data,
const GridItemData& grid_item,
const GridTrackSizingDirection track_direction) const;
- NGGridGeometry ComputeGridGeometry(
- const NGGridBlockTrackCollection& column_block_track_collection,
- const NGGridBlockTrackCollection& row_block_track_collection,
- GridItems* grid_items,
- LayoutUnit* intrinsic_block_size,
- NGGridLayoutAlgorithmTrackCollection* column_track_collection,
- NGGridLayoutAlgorithmTrackCollection* row_track_collection);
+ void ComputeGridGeometry(const NGGridPlacementData& placement_data,
+ GridItems* grid_items,
+ NGGridLayoutData* layout_data,
+ LayoutUnit* intrinsic_block_size);
LayoutUnit ComputeIntrinsicBlockSizeIgnoringChildren() const;
// Returns the size that a grid item will distribute across the tracks with an
// intrinsic sizing function it spans in the relevant track direction.
LayoutUnit ContributionSizeForGridItem(
- const NGGridGeometry& grid_geometry,
+ const NGGridLayoutData& layout_data,
const SizingConstraint sizing_constraint,
const GridTrackSizingDirection track_direction,
const GridItemContributionType contribution_type,
GridItemData* grid_item) const;
- wtf_size_t ComputeAutomaticRepetitions(
- const GridTrackSizingDirection track_direction) const;
+ NGGridPlacementData PlacementData() const;
- void BuildBlockTrackCollections(
+ std::unique_ptr<NGGridLayoutTrackCollection> LayoutTrackCollection(
const NGGridPlacementData& placement_data,
- GridItems* grid_items,
- NGGridBlockTrackCollection* column_track_collection,
- NGGridBlockTrackCollection* row_track_collection) const;
+ const GridTrackSizingDirection track_direction,
+ GridItems* grid_items) const;
- // Ensure coverage in block collection after grid items have been placed.
- void EnsureTrackCoverageForGridItems(
+ wtf_size_t ComputeAutomaticRepetitions(
+ const GridTrackSizingDirection track_direction) const;
+
+ void BuildBlockTrackCollection(
GridItems* grid_items,
NGGridBlockTrackCollection* track_collection) const;
// Determines the major/minor alignment baselines for each row/column based on
- // each item in |grid_items|, and stores the results in |grid_geometry|.
+ // each item in |grid_items|, and stores the results in |track_collection|.
void CalculateAlignmentBaselines(
- const GridTrackSizingDirection track_direction,
+ const NGGridLayoutData& layout_data,
const SizingConstraint sizing_constraint,
- NGGridGeometry* grid_geometry,
GridItems* grid_items,
+ NGGridSizingTrackCollection* track_collection,
bool* needs_additional_pass = nullptr) const;
// Initializes the given track collection, and returns the base set geometry.
- SetGeometry InitializeTrackSizes(
+ void InitializeTrackSizes(
const NGGridProperties& grid_properties,
- NGGridLayoutAlgorithmTrackCollection* track_collection) const;
+ NGGridLayoutTrackCollection* track_collection) const;
// Calculates from the min and max track sizing functions the used track size.
- SetGeometry ComputeUsedTrackSizes(
- const NGGridGeometry& grid_geometry,
- const NGGridProperties& grid_properties,
- const SizingConstraint sizing_constraint,
- NGGridLayoutAlgorithmTrackCollection* track_collection,
- GridItems* grid_items) const;
+ void ComputeUsedTrackSizes(const NGGridLayoutData& layout_data,
+ const NGGridProperties& grid_properties,
+ const SizingConstraint sizing_constraint,
+ GridItems* grid_items,
+ NGGridLayoutTrackCollection* track_collection,
+ bool* needs_additional_pass = nullptr) const;
// These methods implement the steps of the algorithm for intrinsic track size
// resolution defined in https://drafts.csswg.org/css-grid-2/#algo-content.
- void ResolveIntrinsicTrackSizes(
- const NGGridGeometry& grid_geometry,
- const SizingConstraint sizing_constraint,
- NGGridLayoutAlgorithmTrackCollection* track_collection,
- GridItems* grid_items) const;
+ void ResolveIntrinsicTrackSizes(const NGGridLayoutData& layout_data,
+ const SizingConstraint sizing_constraint,
+ NGGridSizingTrackCollection* track_collection,
+ GridItems* grid_items) const;
void IncreaseTrackSizesToAccommodateGridItems(
GridItems::Iterator group_begin,
GridItems::Iterator group_end,
- const NGGridGeometry& grid_geometry,
+ const NGGridLayoutData& layout_data,
const bool is_group_spanning_flex_track,
const SizingConstraint sizing_constraint,
const GridItemContributionType contribution_type,
- NGGridLayoutAlgorithmTrackCollection* track_collection) const;
+ NGGridSizingTrackCollection* track_collection) const;
- void MaximizeTracks(
- const SizingConstraint sizing_constraint,
- NGGridLayoutAlgorithmTrackCollection* track_collection) const;
+ void MaximizeTracks(const SizingConstraint sizing_constraint,
+ NGGridSizingTrackCollection* track_collection) const;
- void StretchAutoTracks(
- const SizingConstraint sizing_constraint,
- NGGridLayoutAlgorithmTrackCollection* track_collection) const;
+ void StretchAutoTracks(const SizingConstraint sizing_constraint,
+ NGGridSizingTrackCollection* track_collection) const;
- void ExpandFlexibleTracks(
- const NGGridGeometry& grid_geometry,
- const SizingConstraint sizing_constraint,
- NGGridLayoutAlgorithmTrackCollection* track_collection,
- GridItems* grid_items) const;
+ void ExpandFlexibleTracks(const NGGridLayoutData& layout_data,
+ const SizingConstraint sizing_constraint,
+ NGGridSizingTrackCollection* track_collection,
+ GridItems* grid_items) const;
- SetGeometry ComputeSetGeometry(
- const NGGridLayoutAlgorithmTrackCollection& track_collection) const;
-
- // Gets the row or column gap of the grid.
- LayoutUnit GridGap(const GridTrackSizingDirection track_direction) const;
+ // Gets the specified [column|row]-gap of the grid.
+ LayoutUnit GutterSize(const GridTrackSizingDirection track_direction) const;
LayoutUnit DetermineFreeSpace(
SizingConstraint sizing_constraint,
- const NGGridLayoutAlgorithmTrackCollection& track_collection) const;
+ const NGGridSizingTrackCollection& track_collection) const;
const NGConstraintSpace CreateConstraintSpace(
const GridItemData& grid_item,
+ const NGGridLayoutData& layout_data,
const LogicalSize& containing_grid_area_size,
NGCacheSlot cache_slot,
absl::optional<LayoutUnit> opt_fixed_block_size,
@@ -173,8 +164,8 @@ class CORE_EXPORT NGGridLayoutAlgorithm
bool opt_min_block_size_should_encompass_intrinsic_size = false) const;
const NGConstraintSpace CreateConstraintSpaceForLayout(
- const NGGridGeometry& grid_geometry,
const GridItemData& grid_item,
+ const NGGridLayoutData& layout_data,
LogicalRect* containing_grid_area,
absl::optional<LayoutUnit> opt_fragment_relative_block_offset =
absl::nullopt,
@@ -182,21 +173,23 @@ class CORE_EXPORT NGGridLayoutAlgorithm
const NGConstraintSpace CreateConstraintSpaceForMeasure(
const GridItemData& grid_item,
- const NGGridGeometry& grid_geometry,
+ const NGGridLayoutData& layout_data,
const GridTrackSizingDirection track_direction,
absl::optional<LayoutUnit> opt_fixed_block_size = absl::nullopt) const;
// Layout the |grid_items|, and add them to the builder.
//
- // If |out_offsets| is present determine the offset for each of the
- // |grid_items| but *don't* add the resulting fragment to the builder.
+ // If |out_grid_items_placement_data| is present determine the offset for
+ // each of the |grid_items| but *don't* add the resulting fragment to the
+ // builder.
//
// This is used for fragmentation which requires us to know the final offset
// of each item before fragmentation occurs.
- void PlaceGridItems(const GridItems& grid_items,
- const NGGridGeometry& grid_geometry,
- Vector<EBreakBetween>* out_row_break_between,
- Vector<GridItemOffsets>* out_offsets = nullptr);
+ void PlaceGridItems(
+ const GridItems& grid_items,
+ const NGGridLayoutData& layout_data,
+ Vector<EBreakBetween>* out_row_break_between,
+ Vector<GridItemPlacementData>* out_grid_items_placement_data = nullptr);
// Layout the |grid_items| for fragmentation (when there is a known
// fragmentainer size).
@@ -206,8 +199,8 @@ class CORE_EXPORT NGGridLayoutAlgorithm
void PlaceGridItemsForFragmentation(
const GridItems& grid_items,
const Vector<EBreakBetween>& row_break_between,
- NGGridGeometry* grid_geometry,
- Vector<GridItemOffsets>* offsets,
+ NGGridLayoutData* layout_data,
+ Vector<GridItemPlacementData>* grid_item_placement_data,
Vector<LayoutUnit>* row_offset_adjustments,
LayoutUnit* intrinsic_block_size);
@@ -218,8 +211,7 @@ class CORE_EXPORT NGGridLayoutAlgorithm
void ComputeGridItemOffsetAndSize(
const GridItemData& grid_item,
- const SetGeometry& set_geometry,
- const GridTrackSizingDirection track_direction,
+ const NGGridLayoutTrackCollection& track_collection,
LayoutUnit* start_offset,
LayoutUnit* size) const;