Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(127)

Side by Side Diff: third_party/WebKit/Source/core/layout/GridTrackSizingAlgorithm.h

Issue 2808453002: [css-grid] Use Optional to represent indefinite lengths (Closed)
Patch Set: Changes after review Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | third_party/WebKit/Source/core/layout/GridTrackSizingAlgorithm.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2017 The Chromium Authors. All rights reserved. 1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef GridTrackSizingAlgorithm_h 5 #ifndef GridTrackSizingAlgorithm_h
6 #define GridTrackSizingAlgorithm_h 6 #define GridTrackSizingAlgorithm_h
7 7
8 #include "core/style/GridPositionsResolver.h" 8 #include "core/style/GridPositionsResolver.h"
9 #include "core/style/GridTrackSize.h" 9 #include "core/style/GridTrackSize.h"
10 #include "platform/LayoutUnit.h" 10 #include "platform/LayoutUnit.h"
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
77 GridTrackSizingAlgorithm(const LayoutGrid* layoutGrid, Grid& grid) 77 GridTrackSizingAlgorithm(const LayoutGrid* layoutGrid, Grid& grid)
78 : m_grid(grid), 78 : m_grid(grid),
79 m_layoutGrid(layoutGrid), 79 m_layoutGrid(layoutGrid),
80 m_sizingState(ColumnSizingFirstIteration) {} 80 m_sizingState(ColumnSizingFirstIteration) {}
81 81
82 // setup() must be run before calling run() as it configures the behaviour of 82 // setup() must be run before calling run() as it configures the behaviour of
83 // the algorithm. 83 // the algorithm.
84 void setup(GridTrackSizingDirection, 84 void setup(GridTrackSizingDirection,
85 size_t numTracks, 85 size_t numTracks,
86 SizingOperation, 86 SizingOperation,
87 LayoutUnit availableSpace, 87 Optional<LayoutUnit> availableSpace,
88 LayoutUnit freeSpace); 88 Optional<LayoutUnit> freeSpace);
89 void run(); 89 void run();
90 void reset(); 90 void reset();
91 91
92 // Required by LayoutGrid. Try to minimize the exposed surface. 92 // Required by LayoutGrid. Try to minimize the exposed surface.
93 const Grid& grid() const { return m_grid; } 93 const Grid& grid() const { return m_grid; }
94 GridTrackSize gridTrackSize(GridTrackSizingDirection, 94 GridTrackSize gridTrackSize(GridTrackSizingDirection,
95 size_t translatedIndex, 95 size_t translatedIndex,
96 SizingOperation) const; 96 SizingOperation) const;
97 LayoutUnit minContentSize() const { return m_minContentSize; }; 97 LayoutUnit minContentSize() const { return m_minContentSize; };
98 LayoutUnit maxContentSize() const { return m_maxContentSize; }; 98 LayoutUnit maxContentSize() const { return m_maxContentSize; };
99 99
100 Vector<GridTrack>& tracks(GridTrackSizingDirection); 100 Vector<GridTrack>& tracks(GridTrackSizingDirection);
101 const Vector<GridTrack>& tracks(GridTrackSizingDirection) const; 101 const Vector<GridTrack>& tracks(GridTrackSizingDirection) const;
102 102
103 LayoutUnit& freeSpace(GridTrackSizingDirection); 103 Optional<LayoutUnit> freeSpace(GridTrackSizingDirection);
104 void setFreeSpace(GridTrackSizingDirection, Optional<LayoutUnit>);
104 105
105 #if DCHECK_IS_ON() 106 #if DCHECK_IS_ON()
106 bool tracksAreWiderThanMinTrackBreadth() const; 107 bool tracksAreWiderThanMinTrackBreadth() const;
107 bool isTrackSizingOperation() const { 108 bool isTrackSizingOperation() const {
108 return m_sizingOperation == TrackSizing; 109 return m_sizingOperation == TrackSizing;
109 }; 110 };
110 #endif 111 #endif
111 112
112 private: 113 private:
113 GridTrackSize gridTrackSize(GridTrackSizingDirection, 114 GridTrackSize gridTrackSize(GridTrackSizingDirection,
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
157 Vector<LayoutUnit>& increments, 158 Vector<LayoutUnit>& increments,
158 LayoutUnit& totalGrowth) const; 159 LayoutUnit& totalGrowth) const;
159 double findFrUnitSize(const GridSpan& tracksSpan, 160 double findFrUnitSize(const GridSpan& tracksSpan,
160 LayoutUnit leftOverSpace) const; 161 LayoutUnit leftOverSpace) const;
161 162
162 // Track sizing algorithm steps. Note that the "Maximize Tracks" step is done 163 // Track sizing algorithm steps. Note that the "Maximize Tracks" step is done
163 // entirely inside the strategies, that's why we don't need an additional 164 // entirely inside the strategies, that's why we don't need an additional
164 // method at thise level. 165 // method at thise level.
165 void initializeTrackSizes(); 166 void initializeTrackSizes();
166 void resolveIntrinsicTrackSizes(); 167 void resolveIntrinsicTrackSizes();
167 void stretchFlexibleTracks(LayoutUnit freeSpace); 168 void stretchFlexibleTracks(Optional<LayoutUnit> freeSpace);
168 169
169 // State machine. 170 // State machine.
170 void advanceNextState(); 171 void advanceNextState();
171 bool isValidTransition() const; 172 bool isValidTransition() const;
172 173
173 // Data. 174 // Data.
174 bool m_needsSetup{true}; 175 bool m_needsSetup{true};
175 LayoutUnit m_availableSpace; 176 Optional<LayoutUnit> m_availableSpace;
176 177
177 LayoutUnit m_freeSpaceColumns; 178 Optional<LayoutUnit> m_freeSpaceColumns;
178 LayoutUnit m_freeSpaceRows; 179 Optional<LayoutUnit> m_freeSpaceRows;
179 180
180 // We need to keep both alive in order to properly size grids with orthogonal 181 // We need to keep both alive in order to properly size grids with orthogonal
181 // writing modes. 182 // writing modes.
182 Vector<GridTrack> m_columns; 183 Vector<GridTrack> m_columns;
183 Vector<GridTrack> m_rows; 184 Vector<GridTrack> m_rows;
184 Vector<size_t> m_contentSizedTracksIndex; 185 Vector<size_t> m_contentSizedTracksIndex;
185 Vector<size_t> m_flexibleSizedTracksIndex; 186 Vector<size_t> m_flexibleSizedTracksIndex;
186 187
187 GridTrackSizingDirection m_direction; 188 GridTrackSizingDirection m_direction;
188 SizingOperation m_sizingOperation; 189 SizingOperation m_sizingOperation;
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
224 225
225 class GridTrackSizingAlgorithmStrategy { 226 class GridTrackSizingAlgorithmStrategy {
226 WTF_MAKE_NONCOPYABLE(GridTrackSizingAlgorithmStrategy); 227 WTF_MAKE_NONCOPYABLE(GridTrackSizingAlgorithmStrategy);
227 USING_FAST_MALLOC(GridTrackSizingAlgorithmStrategy); 228 USING_FAST_MALLOC(GridTrackSizingAlgorithmStrategy);
228 229
229 public: 230 public:
230 LayoutUnit minContentForChild(LayoutBox&) const; 231 LayoutUnit minContentForChild(LayoutBox&) const;
231 LayoutUnit maxContentForChild(LayoutBox&) const; 232 LayoutUnit maxContentForChild(LayoutBox&) const;
232 LayoutUnit minSizeForChild(LayoutBox&) const; 233 LayoutUnit minSizeForChild(LayoutBox&) const;
233 234
234 virtual void maximizeTracks(Vector<GridTrack>&, LayoutUnit& freeSpace) = 0; 235 virtual void maximizeTracks(Vector<GridTrack>&,
235 virtual double findUsedFlexFraction(Vector<size_t>& flexibleSizedTracksIndex, 236 Optional<LayoutUnit>& freeSpace) = 0;
236 GridTrackSizingDirection, 237 virtual double findUsedFlexFraction(
237 LayoutUnit initialFreeSpace) const = 0; 238 Vector<size_t>& flexibleSizedTracksIndex,
239 GridTrackSizingDirection,
240 Optional<LayoutUnit> initialFreeSpace) const = 0;
238 virtual bool recomputeUsedFlexFractionIfNeeded( 241 virtual bool recomputeUsedFlexFractionIfNeeded(
239 Vector<size_t>& flexibleSizedTracksIndex, 242 Vector<size_t>& flexibleSizedTracksIndex,
240 double& flexFraction, 243 double& flexFraction,
241 Vector<LayoutUnit>& increments, 244 Vector<LayoutUnit>& increments,
242 LayoutUnit& totalGrowth) const = 0; 245 LayoutUnit& totalGrowth) const = 0;
243 246
244 protected: 247 protected:
245 GridTrackSizingAlgorithmStrategy(GridTrackSizingAlgorithm& algorithm) 248 GridTrackSizingAlgorithmStrategy(GridTrackSizingAlgorithm& algorithm)
246 : m_algorithm(algorithm) {} 249 : m_algorithm(algorithm) {}
247 250
(...skipping 18 matching lines...) Expand all
266 LayoutUnit leftOverSpace) const; 269 LayoutUnit leftOverSpace) const;
267 void distributeSpaceToTracks(Vector<GridTrack*>& tracks, 270 void distributeSpaceToTracks(Vector<GridTrack*>& tracks,
268 LayoutUnit& availableLogicalSpace) const; 271 LayoutUnit& availableLogicalSpace) const;
269 const LayoutGrid* layoutGrid() const { return m_algorithm.m_layoutGrid; } 272 const LayoutGrid* layoutGrid() const { return m_algorithm.m_layoutGrid; }
270 273
271 GridTrackSizingAlgorithm& m_algorithm; 274 GridTrackSizingAlgorithm& m_algorithm;
272 }; 275 };
273 } 276 }
274 277
275 #endif // GridTrackSizingAlgorithm_h 278 #endif // GridTrackSizingAlgorithm_h
OLDNEW
« no previous file with comments | « no previous file | third_party/WebKit/Source/core/layout/GridTrackSizingAlgorithm.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698