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
This commit is contained in:
Pritesh Nandgaonkar
2018-01-15 10:09:50 -08:00
committed by Facebook Github Bot
parent 9d6af5b314
commit 0a04bd7f2f
3 changed files with 12 additions and 12 deletions

View File

@@ -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() { void YGNode::clearChildren() {
children_.clear(); children_.clear();
children_.shrink_to_fit(); children_.shrink_to_fit();

View File

@@ -129,6 +129,7 @@ struct YGNode {
YGValue marginTrailingValue(const YGFlexDirection axis) const; YGValue marginTrailingValue(const YGFlexDirection axis) const;
YGValue resolveFlexBasisPtr() const; YGValue resolveFlexBasisPtr() const;
void resolveDimension(); void resolveDimension();
YGDirection resolveDirection(const YGDirection parentDirection);
void clearChildren(); void clearChildren();
/// Replaces the occurrences of oldChild with newChild /// Replaces the occurrences of oldChild with newChild
void replaceChild(YGNodeRef oldChild, YGNodeRef newChild); void replaceChild(YGNodeRef oldChild, YGNodeRef newChild);

View File

@@ -837,15 +837,6 @@ static inline YGAlign YGNodeAlignItem(const YGNodeRef node, const YGNodeRef chil
return align; 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) { static float YGBaseline(const YGNodeRef node) {
if (node->getBaseline() != nullptr) { if (node->getBaseline() != nullptr) {
const float baseline = node->getBaseline()( const float baseline = node->getBaseline()(
@@ -1602,8 +1593,7 @@ static void YGNodeComputeFlexBasisForChildren(
} }
if (performLayout) { if (performLayout) {
// Set the initial position (relative to the parent). // Set the initial position (relative to the parent).
const YGDirection childDirection = const YGDirection childDirection = child->resolveDirection(direction);
YGNodeResolveDirection(child, direction);
const float mainDim = YGFlexDirectionIsRow(mainAxis) const float mainDim = YGFlexDirectionIsRow(mainAxis)
? availableInnerWidth ? availableInnerWidth
: availableInnerHeight; : availableInnerHeight;
@@ -1744,7 +1734,7 @@ static void YGNodelayoutImpl(const YGNodeRef node,
"YGMeasureModeUndefined"); "YGMeasureModeUndefined");
// Set the resolved resolution in the node's layout. // Set the resolved resolution in the node's layout.
const YGDirection direction = YGNodeResolveDirection(node, parentDirection); const YGDirection direction = node->resolveDirection(parentDirection);
node->setLayoutDirection(direction); node->setLayoutDirection(direction);
const YGFlexDirection flexRowDirection = YGResolveFlexDirection(YGFlexDirectionRow, direction); const YGFlexDirection flexRowDirection = YGResolveFlexDirection(YGFlexDirectionRow, direction);