No subject
Fri Mar 7 15:32:22 PST 2014
No new tests as it is already covered by current tests
(fast/css-grid-layout/).
* rendering/RenderGrid.cpp:
(WebCore::RenderGrid::computeNormalizedFractionBreadth): Change loop to
ranged-based for.
(WebCore::RenderGrid::insertItemIntoGrid): Ditto.
(WebCore::RenderGrid::gridAreaBreadthForChild): Ditto.
* rendering/style/GridCoordinate.h: Define GridSpan::iterator.
(WebCore::GridSpan::begin): Return resolved initial position.
(WebCore::GridSpan::end): Return next to resolved final position.
* rendering/style/GridResolvedPosition.h:
(WebCore::GridResolvedPosition::operator*): Add operator required by
range-based for loops.
(WebCore::GridResolvedPosition::operator!=3D): Add not equal operator.</p=
re>
<h3>Modified Paths</h3>
<ul>
<li><a href=3D"#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeL=
og</a></li>
<li><a href=3D"#trunkSourceWebCorerenderingRenderGridcpp">trunk/Source/We=
bCore/rendering/RenderGrid.cpp</a></li>
<li><a href=3D"#trunkSourceWebCorerenderingstyleGridCoordinateh">trunk/So=
urce/WebCore/rendering/style/GridCoordinate.h</a></li>
<li><a href=3D"#trunkSourceWebCorerenderingstyleGridResolvedPositionh">tr=
unk/Source/WebCore/rendering/style/GridResolvedPosition.h</a></li>
</ul>
</div>
<div id=3D"patch">
<h3>Diff</h3>
<a id=3D"trunkSourceWebCoreChangeLog"></a>
<div class=3D"modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (1701=
81 =3D> 170182)</h4>
<pre class=3D"diff"><span>
<span class=3D"info">--- trunk/Source/WebCore/ChangeLog 2014-06-20 07:55:=
37 UTC (rev 170181)
+++ trunk/Source/WebCore/ChangeLog 2014-06-20 08:28:59 UTC (rev 170182)
</span><span class=3D"lines">@@ -1,3 +1,31 @@
</span><ins>+2014-06-20 Manuel Rego Casasnovas <rego at igalia.com>
+
+ [CSS Grid Layout] Add GridSpan::iterator
+ https://bugs.webkit.org/show_bug.cgi?id=3D134058
+
+ Reviewed by Bem Jones-Bey.
+
+ Once that GridResolvedPosition has been introduced in r169934, t=
his
+ patch adds a GridSpan::iterator which allows to simplify the loo=
ps over
+ GridResolvedPositions.
+ From now on we could use range-based for loops.
+
+ No new tests as it is already covered by current tests
+ (fast/css-grid-layout/).
+
+ * rendering/RenderGrid.cpp:
+ (WebCore::RenderGrid::computeNormalizedFractionBreadth): Change =
loop to
+ ranged-based for.
+ (WebCore::RenderGrid::insertItemIntoGrid): Ditto.
+ (WebCore::RenderGrid::gridAreaBreadthForChild): Ditto.
+ * rendering/style/GridCoordinate.h: Define GridSpan::iterator.
+ (WebCore::GridSpan::begin): Return resolved initial position.
+ (WebCore::GridSpan::end): Return next to resolved final position=
.
+ * rendering/style/GridResolvedPosition.h:
+ (WebCore::GridResolvedPosition::operator*): Add operator require=
d by
+ range-based for loops.
+ (WebCore::GridResolvedPosition::operator!=3D): Add not equal ope=
rator.
+
</ins><span class=3D"cx"> 2014-06-20 Carlos Garcia Campos <cgarcia at i=
galia.com>
</span><span class=3D"cx">=20
</span><span class=3D"cx"> Unreviewed. Fix GTK+ debug build after=
r170174.
</span></span></pre></div>
<a id=3D"trunkSourceWebCorerenderingRenderGridcpp"></a>
<div class=3D"modfile"><h4>Modified: trunk/Source/WebCore/rendering/Rende=
rGrid.cpp (170181 =3D> 170182)</h4>
<pre class=3D"diff"><span>
<span class=3D"info">--- trunk/Source/WebCore/rendering/RenderGrid.cpp 20=
14-06-20 07:55:37 UTC (rev 170181)
+++ trunk/Source/WebCore/rendering/RenderGrid.cpp 2014-06-20 08:28:59 UTC=
(rev 170182)
</span><span class=3D"lines">@@ -401,7 +401,7 @@
</span><span class=3D"cx"> // |availableLogicalSpace| already account=
s for the used breadths so no need to remove it here.
</span><span class=3D"cx">=20
</span><span class=3D"cx"> Vector<GridTrackForNormalization> tr=
acksForNormalization;
</span><del>- for (GridResolvedPosition position =3D tracksSpan.resolv=
edInitialPosition; position <=3D tracksSpan.resolvedFinalPosition; ++p=
osition) {
</del><ins>+ for (auto position : tracksSpan) {
</ins><span class=3D"cx"> const GridTrackSize& trackSize =3D =
gridTrackSize(direction, position.toInt());
</span><span class=3D"cx"> if (!trackSize.maxTrackBreadth().isFle=
x())
</span><span class=3D"cx"> continue;
</span><span class=3D"lines">@@ -623,8 +623,8 @@
</span><span class=3D"cx">=20
</span><span class=3D"cx"> void RenderGrid::insertItemIntoGrid(RenderBox*=
child, const GridCoordinate& coordinate)
</span><span class=3D"cx"> {
</span><del>- for (GridResolvedPosition row =3D coordinate.rows.resolv=
edInitialPosition; row <=3D coordinate.rows.resolvedFinalPosition; ++r=
ow) {
- for (GridResolvedPosition column =3D coordinate.columns.resolved=
InitialPosition; column <=3D coordinate.columns.resolvedFinalPosition;=
++column)
</del><ins>+ for (auto row : coordinate.rows) {
+ for (auto column : coordinate.columns)
</ins><span class=3D"cx"> m_grid[row.toInt()][column.toInt()]=
.append(child);
</span><span class=3D"cx"> }
</span><span class=3D"cx"> m_gridItemCoordinate.set(child, coordinate=
);
</span><span class=3D"lines">@@ -837,7 +837,7 @@
</span><span class=3D"cx"> const GridCoordinate& coordinate =3D c=
achedGridCoordinate(child);
</span><span class=3D"cx"> const GridSpan& span =3D (direction =3D=
=3D ForColumns) ? coordinate.columns : coordinate.rows;
</span><span class=3D"cx"> LayoutUnit gridAreaBreadth =3D 0;
</span><del>- for (GridResolvedPosition trackPosition =3D span.resolve=
dInitialPosition; trackPosition <=3D span.resolvedFinalPosition; ++tra=
ckPosition)
</del><ins>+ for (auto trackPosition : span)
</ins><span class=3D"cx"> gridAreaBreadth +=3D tracks[trackPositi=
on.toInt()].m_usedBreadth;
</span><span class=3D"cx"> return gridAreaBreadth;
</span><span class=3D"cx"> }
</span></span></pre></div>
<a id=3D"trunkSourceWebCorerenderingstyleGridCoordinateh"></a>
<div class=3D"modfile"><h4>Modified: trunk/Source/WebCore/rendering/style=
/GridCoordinate.h (170181 =3D> 170182)</h4>
<pre class=3D"diff"><span>
<span class=3D"info">--- trunk/Source/WebCore/rendering/style/GridCoordin=
ate.h 2014-06-20 07:55:37 UTC (rev 170181)
+++ trunk/Source/WebCore/rendering/style/GridCoordinate.h 2014-06-20 08:2=
8:59 UTC (rev 170182)
</span><span class=3D"lines">@@ -59,6 +59,18 @@
</span><span class=3D"cx">=20
</span><span class=3D"cx"> GridResolvedPosition resolvedInitialPositi=
on;
</span><span class=3D"cx"> GridResolvedPosition resolvedFinalPosition=
;
</span><ins>+
+ typedef GridResolvedPosition iterator;
+
+ iterator begin() const
+ {
+ return resolvedInitialPosition;
+ }
+
+ iterator end() const
+ {
+ return resolvedFinalPosition.next();
+ }
</ins><span class=3D"cx"> };
</span><span class=3D"cx">=20
</span><span class=3D"cx"> // This represents a grid area that spans in b=
oth rows' and columns' direction.
</span></span></pre></div>
<a id=3D"trunkSourceWebCorerenderingstyleGridResolvedPositionh"></a>
<div class=3D"modfile"><h4>Modified: trunk/Source/WebCore/rendering/style=
/GridResolvedPosition.h (170181 =3D> 170182)</h4>
<pre class=3D"diff"><span>
<span class=3D"info">--- trunk/Source/WebCore/rendering/style/GridResolve=
dPosition.h 2014-06-20 07:55:37 UTC (rev 170181)
+++ trunk/Source/WebCore/rendering/style/GridResolvedPosition.h 2014-06-2=
0 08:28:59 UTC (rev 170182)
</span><span class=3D"lines">@@ -95,6 +95,11 @@
</span><span class=3D"cx"> m_integerPosition =3D adjustGridPositi=
onForSide(integerPosition, side).m_integerPosition;
</span><span class=3D"cx"> }
</span><span class=3D"cx">=20
</span><ins>+ GridResolvedPosition& operator*()
+ {
+ return *this;
+ }
+
</ins><span class=3D"cx"> GridResolvedPosition& operator++()
</span><span class=3D"cx"> {
</span><span class=3D"cx"> m_integerPosition++;
</span><span class=3D"lines">@@ -106,6 +111,11 @@
</span><span class=3D"cx"> return m_integerPosition =3D=3D other.=
m_integerPosition;
</span><span class=3D"cx"> }
</span><span class=3D"cx">=20
</span><ins>+ bool operator!=3D(const GridResolvedPosition& other)=
const
+ {
+ return m_integerPosition !=3D other.m_integerPosition;
+ }
+
</ins><span class=3D"cx"> bool operator<(const GridResolvedPositio=
n& other) const
</span><span class=3D"cx"> {
</span><span class=3D"cx"> return m_integerPosition < other.m_=
integerPosition;
</span></span></pre>
</div>
</div>
</body>
</html>
More information about the webkit-changes
mailing list