From 09f0c12a8f0a3da86d8bacce1a4ffcb2b1f314d4 Mon Sep 17 00:00:00 2001 From: Pierre Renaux Date: Sat, 9 May 2015 13:10:26 +0800 Subject: [PATCH] [src/Layout.js]: Cleaner line loop in (alignContent layout) ; --- src/Layout.c | 20 +++++-------------- src/Layout.js | 20 +++++-------------- .../com/facebook/csslayout/LayoutEngine.java | 20 +++++-------------- 3 files changed, 15 insertions(+), 45 deletions(-) diff --git a/src/Layout.c b/src/Layout.c index d44c6b8c..bc39dc0c 100644 --- a/src/Layout.c +++ b/src/Layout.c @@ -822,18 +822,9 @@ static void layoutNodeImpl(css_node_t *node, float parentMaxWidth) { } } - // find the first node on the first line - for (i = 0; i < node->children_count; ) { - int startIndex = i; - int lineIndex = -1; - - // get the first child on the current line - child = node->get_child(node->context, i); - if (getPositionType(child) != CSS_POSITION_RELATIVE) { - ++i; - continue; - } - lineIndex = child->line_index; + int endIndex = 0; + for (i = 0; i < linesCount; ++i) { + int startIndex = endIndex; // compute the line's height and find the endIndex float lineHeight = 0; @@ -842,7 +833,7 @@ static void layoutNodeImpl(css_node_t *node, float parentMaxWidth) { if (getPositionType(child) != CSS_POSITION_RELATIVE) { continue; } - if (child->line_index != lineIndex) { + if (child->line_index != i) { break; } if (!isUndefined(child->layout.dimensions[dim[crossAxis]])) { @@ -852,7 +843,7 @@ static void layoutNodeImpl(css_node_t *node, float parentMaxWidth) { ); } } - int endIndex = ii; + endIndex = ii; lineHeight += crossDimLead; for (ii = startIndex; ii < endIndex; ++ii) { @@ -877,7 +868,6 @@ static void layoutNodeImpl(css_node_t *node, float parentMaxWidth) { } currentLead += lineHeight; - i = endIndex; } } diff --git a/src/Layout.js b/src/Layout.js index 099ba315..d49c674e 100755 --- a/src/Layout.js +++ b/src/Layout.js @@ -700,18 +700,9 @@ var computeLayout = (function() { } } - // find the first node on the first line - for (i = 0; i < node.children.length; ) { - var/*int*/ startIndex = i; - var/*int*/ lineIndex = -1; - - // get the first child on the current line - child = node.children[i]; - if (getPositionType(child) !== CSS_POSITION_RELATIVE) { - ++i; - continue; - } - lineIndex = child.lineIndex; + var/*int*/ endIndex = 0; + for (i = 0; i < linesCount; ++i) { + var/*int*/ startIndex = endIndex; // compute the line's height and find the endIndex var/*float*/ lineHeight = 0; @@ -720,7 +711,7 @@ var computeLayout = (function() { if (getPositionType(child) !== CSS_POSITION_RELATIVE) { continue; } - if (child.lineIndex !== lineIndex) { + if (child.lineIndex !== i) { break; } if (!isUndefined(child.layout[dim[crossAxis]])) { @@ -730,7 +721,7 @@ var computeLayout = (function() { ); } } - var/*int*/ endIndex = ii; + endIndex = ii; lineHeight += crossDimLead; for (ii = startIndex; ii < endIndex; ++ii) { @@ -755,7 +746,6 @@ var computeLayout = (function() { } currentLead += lineHeight; - i = endIndex; } } diff --git a/src/java/src/com/facebook/csslayout/LayoutEngine.java b/src/java/src/com/facebook/csslayout/LayoutEngine.java index 197d353e..9a692f20 100644 --- a/src/java/src/com/facebook/csslayout/LayoutEngine.java +++ b/src/java/src/com/facebook/csslayout/LayoutEngine.java @@ -751,18 +751,9 @@ public class LayoutEngine { } } - // find the first node on the first line - for (i = 0; i < node.getChildCount(); ) { - int startIndex = i; - int lineIndex = -1; - - // get the first child on the current line - child = node.getChildAt(i); - if (getPositionType(child) != CSSPositionType.RELATIVE) { - ++i; - continue; - } - lineIndex = child.lineIndex; + int endIndex = 0; + for (i = 0; i < linesCount; ++i) { + int startIndex = endIndex; // compute the line's height and find the endIndex float lineHeight = 0; @@ -771,7 +762,7 @@ public class LayoutEngine { if (getPositionType(child) != CSSPositionType.RELATIVE) { continue; } - if (child.lineIndex != lineIndex) { + if (child.lineIndex != i) { break; } if (!CSSConstants.isUndefined(getLayoutDimension(child, getDim(crossAxis)))) { @@ -781,7 +772,7 @@ public class LayoutEngine { ); } } - int endIndex = ii; + endIndex = ii; lineHeight = lineHeight + crossDimLead; for (ii = startIndex; ii < endIndex; ++ii) { @@ -806,7 +797,6 @@ public class LayoutEngine { } currentLead = currentLead + lineHeight; - i = endIndex; } }