From 0a04bd7f2f9b07af86bd48b9fe6d1fbbbbf17a6c Mon Sep 17 00:00:00 2001 From: Pritesh Nandgaonkar Date: Mon, 15 Jan 2018 10:09:50 -0800 Subject: [PATCH] Resolve direction function is now as a method on YGNode Summary: Resolve direction function is now as a method on YGNode Reviewed By: emilsjolander Differential Revision: D6711755 fbshipit-source-id: a0e80596e10f0c7fb7a31b75377da4db846c4bbb --- yoga/YGNode.cpp | 9 +++++++++ yoga/YGNode.h | 1 + yoga/Yoga.cpp | 14 ++------------ 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/yoga/YGNode.cpp b/yoga/YGNode.cpp index ebe733e7..112fa280 100644 --- a/yoga/YGNode.cpp +++ b/yoga/YGNode.cpp @@ -510,6 +510,15 @@ void YGNode::resolveDimension() { } } +YGDirection YGNode::resolveDirection(const YGDirection parentDirection) { + if (style_.direction == YGDirectionInherit) { + return parentDirection > YGDirectionInherit ? parentDirection + : YGDirectionLTR; + } else { + return style_.direction; + } +} + void YGNode::clearChildren() { children_.clear(); children_.shrink_to_fit(); diff --git a/yoga/YGNode.h b/yoga/YGNode.h index 503894c1..f116c343 100644 --- a/yoga/YGNode.h +++ b/yoga/YGNode.h @@ -129,6 +129,7 @@ struct YGNode { YGValue marginTrailingValue(const YGFlexDirection axis) const; YGValue resolveFlexBasisPtr() const; void resolveDimension(); + YGDirection resolveDirection(const YGDirection parentDirection); void clearChildren(); /// Replaces the occurrences of oldChild with newChild void replaceChild(YGNodeRef oldChild, YGNodeRef newChild); diff --git a/yoga/Yoga.cpp b/yoga/Yoga.cpp index 3b536141..67db51ba 100644 --- a/yoga/Yoga.cpp +++ b/yoga/Yoga.cpp @@ -837,15 +837,6 @@ static inline YGAlign YGNodeAlignItem(const YGNodeRef node, const YGNodeRef chil return align; } -static inline YGDirection YGNodeResolveDirection(const YGNodeRef node, - const YGDirection parentDirection) { - if (node->getStyle().direction == YGDirectionInherit) { - return parentDirection > YGDirectionInherit ? parentDirection : YGDirectionLTR; - } else { - return node->getStyle().direction; - } -} - static float YGBaseline(const YGNodeRef node) { if (node->getBaseline() != nullptr) { const float baseline = node->getBaseline()( @@ -1602,8 +1593,7 @@ static void YGNodeComputeFlexBasisForChildren( } if (performLayout) { // Set the initial position (relative to the parent). - const YGDirection childDirection = - YGNodeResolveDirection(child, direction); + const YGDirection childDirection = child->resolveDirection(direction); const float mainDim = YGFlexDirectionIsRow(mainAxis) ? availableInnerWidth : availableInnerHeight; @@ -1744,7 +1734,7 @@ static void YGNodelayoutImpl(const YGNodeRef node, "YGMeasureModeUndefined"); // Set the resolved resolution in the node's layout. - const YGDirection direction = YGNodeResolveDirection(node, parentDirection); + const YGDirection direction = node->resolveDirection(parentDirection); node->setLayoutDirection(direction); const YGFlexDirection flexRowDirection = YGResolveFlexDirection(YGFlexDirectionRow, direction);