diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2022-05-17 17:24:03 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2022-06-22 07:51:41 +0000 |
commit | 774f54339e5db91f785733232d3950366db65d07 (patch) | |
tree | 068e1b47bd1af94d77094ed12b604a6b83d9c22a /chromium/third_party/blink/renderer/core/layout/ng/grid/ng_grid_layout_algorithm.h | |
parent | f7eaed5286974984ba5f9e3189d8f49d03e99f81 (diff) | |
download | qtwebengine-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.h | 130 |
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; |