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

Side by Side Diff: Source/core/rendering/RenderGrid.cpp

Issue 653053002: Oilpan: fix build after r183657. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 6 years, 2 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 | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2011 Apple Inc. All rights reserved. 2 * Copyright (C) 2011 Apple Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
(...skipping 15 matching lines...) Expand all
26 #include "config.h" 26 #include "config.h"
27 #include "core/rendering/RenderGrid.h" 27 #include "core/rendering/RenderGrid.h"
28 28
29 #include "core/paint/GridPainter.h" 29 #include "core/paint/GridPainter.h"
30 #include "core/rendering/RenderLayer.h" 30 #include "core/rendering/RenderLayer.h"
31 #include "core/rendering/RenderView.h" 31 #include "core/rendering/RenderView.h"
32 #include "core/rendering/TextAutosizer.h" 32 #include "core/rendering/TextAutosizer.h"
33 #include "core/rendering/style/GridCoordinate.h" 33 #include "core/rendering/style/GridCoordinate.h"
34 #include "core/rendering/style/RenderStyle.h" 34 #include "core/rendering/style/RenderStyle.h"
35 #include "platform/LengthFunctions.h" 35 #include "platform/LengthFunctions.h"
36 #include "wtf/VectorTraits.h"
36 37
37 namespace blink { 38 namespace blink {
38 39
39 static const int infinity = -1; 40 static const int infinity = -1;
40 41
41 class GridTrack { 42 class GridTrack {
42 public: 43 public:
43 GridTrack() 44 GridTrack()
44 : m_usedBreadth(0) 45 : m_usedBreadth(0)
45 , m_maxBreadth(0) 46 , m_maxBreadth(0)
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
165 private: 166 private:
166 const GridRepresentation& m_grid; 167 const GridRepresentation& m_grid;
167 GridTrackSizingDirection m_direction; 168 GridTrackSizingDirection m_direction;
168 size_t m_rowIndex; 169 size_t m_rowIndex;
169 size_t m_columnIndex; 170 size_t m_columnIndex;
170 size_t m_childIndex; 171 size_t m_childIndex;
171 }; 172 };
172 173
173 struct RenderGrid::GridSizingData { 174 struct RenderGrid::GridSizingData {
174 WTF_MAKE_NONCOPYABLE(GridSizingData); 175 WTF_MAKE_NONCOPYABLE(GridSizingData);
176 STACK_ALLOCATED();
175 public: 177 public:
176 GridSizingData(size_t gridColumnCount, size_t gridRowCount) 178 GridSizingData(size_t gridColumnCount, size_t gridRowCount)
177 : columnTracks(gridColumnCount) 179 : columnTracks(gridColumnCount)
178 , rowTracks(gridRowCount) 180 , rowTracks(gridRowCount)
179 { 181 {
180 } 182 }
181 183
182 Vector<GridTrack> columnTracks; 184 Vector<GridTrack> columnTracks;
183 Vector<GridTrack> rowTracks; 185 Vector<GridTrack> rowTracks;
184 Vector<size_t> contentSizedTracksIndex; 186 Vector<size_t> contentSizedTracksIndex;
185 187
186 // Performance optimization: hold onto these Vectors until the end of Layout to avoid repeated malloc / free. 188 // Performance optimization: hold onto these Vectors until the end of Layout to avoid repeated malloc / free.
187 Vector<LayoutUnit> distributeTrackVector; 189 Vector<LayoutUnit> distributeTrackVector;
188 Vector<GridTrack*> filteredTracks; 190 Vector<GridTrack*> filteredTracks;
189 Vector<GridItemWithSpan> itemsSortedByIncreasingSpan; 191 WillBeHeapVector<GridItemWithSpan> itemsSortedByIncreasingSpan;
190 }; 192 };
191 193
192 RenderGrid::RenderGrid(Element* element) 194 RenderGrid::RenderGrid(Element* element)
193 : RenderBlock(element) 195 : RenderBlock(element)
194 , m_gridIsDirty(true) 196 , m_gridIsDirty(true)
195 , m_orderIterator(this) 197 , m_orderIterator(this)
196 { 198 {
197 ASSERT(!childrenInline()); 199 ASSERT(!childrenInline());
198 } 200 }
199 201
(...skipping 461 matching lines...) Expand 10 before | Expand all | Expand 10 after
661 663
662 return logicalHeightForChild(child, columnTracks); 664 return logicalHeightForChild(child, columnTracks);
663 } 665 }
664 666
665 // We're basically using a class instead of a std::pair for two reasons. First o f all, accessing gridItem() or 667 // We're basically using a class instead of a std::pair for two reasons. First o f all, accessing gridItem() or
666 // coordinate() is much more self-explanatory that using .first or .second membe rs in the pair. Secondly the class 668 // coordinate() is much more self-explanatory that using .first or .second membe rs in the pair. Secondly the class
667 // allows us to precompute the value of the span, something which is quite conve nient for the sorting. Having a 669 // allows us to precompute the value of the span, something which is quite conve nient for the sorting. Having a
668 // std::pair<RenderBox*, size_t> does not work either because we still need the GridCoordinate so we'd have to add an 670 // std::pair<RenderBox*, size_t> does not work either because we still need the GridCoordinate so we'd have to add an
669 // extra hash lookup for each item at the beginning of RenderGrid::resolveConten tBasedTrackSizingFunctionsForItems(). 671 // extra hash lookup for each item at the beginning of RenderGrid::resolveConten tBasedTrackSizingFunctionsForItems().
670 class GridItemWithSpan { 672 class GridItemWithSpan {
673 ALLOW_ONLY_INLINE_ALLOCATION();
671 public: 674 public:
672 GridItemWithSpan(RenderBox& gridItem, const GridCoordinate& coordinate, Grid TrackSizingDirection direction) 675 GridItemWithSpan(RenderBox& gridItem, const GridCoordinate& coordinate, Grid TrackSizingDirection direction)
673 : m_gridItem(gridItem) 676 : m_gridItem(gridItem)
674 , m_coordinate(coordinate) 677 , m_coordinate(coordinate)
675 { 678 {
676 const GridSpan& span = (direction == ForRows) ? coordinate.rows : coordi nate.columns; 679 const GridSpan& span = (direction == ForRows) ? coordinate.rows : coordi nate.columns;
677 m_span = span.resolvedFinalPosition.toInt() - span.resolvedInitialPositi on.toInt() + 1; 680 m_span = span.resolvedFinalPosition.toInt() - span.resolvedInitialPositi on.toInt() + 1;
678 } 681 }
679 682
680 RenderBox& gridItem() const { return *m_gridItem; } 683 RenderBox& gridItem() const { return *m_gridItem; }
681 GridCoordinate coordinate() const { return m_coordinate; } 684 GridCoordinate coordinate() const { return m_coordinate; }
682 685
683 bool operator<(const GridItemWithSpan other) const { return m_span < other.m _span; } 686 bool operator<(const GridItemWithSpan other) const { return m_span < other.m _span; }
684 687
688 void trace(Visitor* visitor)
689 {
690 visitor->trace(m_gridItem);
691 }
692
685 private: 693 private:
686 RawPtrWillBeMember<RenderBox> m_gridItem; 694 RawPtrWillBeMember<RenderBox> m_gridItem;
687 GridCoordinate m_coordinate; 695 GridCoordinate m_coordinate;
688 size_t m_span; 696 size_t m_span;
689 }; 697 };
690 698
699 } // namespace blink
700
701 namespace WTF {
702
703 template<>
704 struct VectorTraits<blink::GridItemWithSpan> : SimpleClassVectorTraits<blink::Gr idItemWithSpan> {
705 // needsDestruction is by default defined in terms of IsPod<>, but as
706 // it doesn't handle embedded structs/enums (e.g., GridCoordinate),
707 // override it here.
708 static const bool needsDestruction = false;
709 };
haraken 2014/10/14 11:41:30 Can't we use WTF_ALLOW_INIT_WITH_MEM_FUNCTIONS ins
sof 2014/10/14 11:47:21 Same as for GradientStop, the reason why not is th
710
711 } // namespace WTF
712
713 namespace blink {
714
691 void RenderGrid::resolveContentBasedTrackSizingFunctions(GridTrackSizingDirectio n direction, GridSizingData& sizingData, LayoutUnit& availableLogicalSpace) 715 void RenderGrid::resolveContentBasedTrackSizingFunctions(GridTrackSizingDirectio n direction, GridSizingData& sizingData, LayoutUnit& availableLogicalSpace)
692 { 716 {
693 sizingData.itemsSortedByIncreasingSpan.shrink(0); 717 sizingData.itemsSortedByIncreasingSpan.shrink(0);
694 HashSet<RenderBox*> itemsSet; 718 HashSet<RenderBox*> itemsSet;
695 size_t contentSizedTracksCount = sizingData.contentSizedTracksIndex.size(); 719 size_t contentSizedTracksCount = sizingData.contentSizedTracksIndex.size();
696 for (size_t i = 0; i < contentSizedTracksCount; ++i) { 720 for (size_t i = 0; i < contentSizedTracksCount; ++i) {
697 GridIterator iterator(m_grid, direction, sizingData.contentSizedTracksIn dex[i]); 721 GridIterator iterator(m_grid, direction, sizingData.contentSizedTracksIn dex[i]);
698 while (RenderBox* gridItem = iterator.nextGridItem()) { 722 while (RenderBox* gridItem = iterator.nextGridItem()) {
699 if (itemsSet.add(gridItem).isNewEntry) 723 if (itemsSet.add(gridItem).isNewEntry)
700 sizingData.itemsSortedByIncreasingSpan.append(GridItemWithSpan(* gridItem, cachedGridCoordinate(*gridItem), direction)); 724 sizingData.itemsSortedByIncreasingSpan.append(GridItemWithSpan(* gridItem, cachedGridCoordinate(*gridItem), direction));
(...skipping 693 matching lines...) Expand 10 before | Expand all | Expand 10 after
1394 if (isOutOfFlowPositioned()) 1418 if (isOutOfFlowPositioned())
1395 return "RenderGrid (positioned)"; 1419 return "RenderGrid (positioned)";
1396 if (isAnonymous()) 1420 if (isAnonymous())
1397 return "RenderGrid (generated)"; 1421 return "RenderGrid (generated)";
1398 if (isRelPositioned()) 1422 if (isRelPositioned())
1399 return "RenderGrid (relative positioned)"; 1423 return "RenderGrid (relative positioned)";
1400 return "RenderGrid"; 1424 return "RenderGrid";
1401 } 1425 }
1402 1426
1403 } // namespace blink 1427 } // namespace blink
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698