Skip to content

Commit 210ae5b

Browse files
Move leading border function as a method on YGNode
Reviewed By: emilsjolander Differential Revision: D6711523 fbshipit-source-id: 76e90083a9dd0728dc9557cc3b0a1f431f3afd5d
1 parent 2b27f1a commit 210ae5b

File tree

3 files changed

+22
-26
lines changed

3 files changed

+22
-26
lines changed

ReactCommon/yoga/yoga/YGNode.cpp

+12
Original file line numberDiff line numberDiff line change
@@ -596,3 +596,15 @@ bool YGNode::isNodeFlexible() {
596596
(style_.positionType == YGPositionTypeRelative) &&
597597
(resolveFlexGrow() != 0 || resolveFlexShrink() != 0));
598598
}
599+
600+
float YGNode::getLeadingBorder(const YGFlexDirection axis) {
601+
if (YGFlexDirectionIsRow(axis) &&
602+
style_.border[YGEdgeStart].unit != YGUnitUndefined &&
603+
style_.border[YGEdgeStart].value >= 0.0f) {
604+
return style_.border[YGEdgeStart].value;
605+
}
606+
607+
return fmaxf(
608+
YGComputedEdgeValue(style_.border, leading[axis], &YGValueZero)->value,
609+
0.0f);
610+
}

ReactCommon/yoga/yoga/YGNode.h

+1
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ struct YGNode {
8585
float getTrailingPosition(const YGFlexDirection axis, const float axisSize);
8686
float getLeadingMargin(const YGFlexDirection axis, const float widthSize);
8787
float getTrailingMargin(const YGFlexDirection axis, const float widthSize);
88+
float getLeadingBorder(const YGFlexDirection flexDirection);
8889
// Setters
8990

9091
void setContext(void* context);

ReactCommon/yoga/yoga/Yoga.cpp

+9-26
Original file line numberDiff line numberDiff line change
@@ -797,21 +797,6 @@ static float YGNodeTrailingPadding(const YGNodeRef node,
797797
0.0f);
798798
}
799799

800-
static float YGNodeLeadingBorder(
801-
const YGNodeRef node,
802-
const YGFlexDirection axis) {
803-
if (YGFlexDirectionIsRow(axis) &&
804-
node->getStyle().border[YGEdgeStart].unit != YGUnitUndefined &&
805-
node->getStyle().border[YGEdgeStart].value >= 0.0f) {
806-
return node->getStyle().border[YGEdgeStart].value;
807-
}
808-
809-
return fmaxf(
810-
YGComputedEdgeValue(node->getStyle().border, leading[axis], &YGValueZero)
811-
->value,
812-
0.0f);
813-
}
814-
815800
static float YGNodeTrailingBorder(
816801
const YGNodeRef node,
817802
const YGFlexDirection axis) {
@@ -832,7 +817,7 @@ static inline float YGNodeLeadingPaddingAndBorder(
832817
const YGFlexDirection axis,
833818
const float widthSize) {
834819
return YGNodeLeadingPadding(node, axis, widthSize) +
835-
YGNodeLeadingBorder(node, axis);
820+
node->getLeadingBorder(axis);
836821
}
837822

838823
static inline float YGNodeTrailingPaddingAndBorder(const YGNodeRef node,
@@ -1235,7 +1220,7 @@ static void YGNodeAbsoluteLayoutChild(const YGNodeRef node,
12351220
if (child->isLeadingPositionDefined(YGFlexDirectionRow) &&
12361221
child->isTrailingPosDefined(YGFlexDirectionRow)) {
12371222
childWidth = node->getLayout().measuredDimensions[YGDimensionWidth] -
1238-
(YGNodeLeadingBorder(node, YGFlexDirectionRow) +
1223+
(node->getLeadingBorder(YGFlexDirectionRow) +
12391224
YGNodeTrailingBorder(node, YGFlexDirectionRow)) -
12401225
(child->getLeadingPosition(YGFlexDirectionRow, width) +
12411226
child->getTrailingPosition(YGFlexDirectionRow, width));
@@ -1254,7 +1239,7 @@ static void YGNodeAbsoluteLayoutChild(const YGNodeRef node,
12541239
if (child->isLeadingPositionDefined(YGFlexDirectionColumn) &&
12551240
child->isTrailingPosDefined(YGFlexDirectionColumn)) {
12561241
childHeight = node->getLayout().measuredDimensions[YGDimensionHeight] -
1257-
(YGNodeLeadingBorder(node, YGFlexDirectionColumn) +
1242+
(node->getLeadingBorder(YGFlexDirectionColumn) +
12581243
YGNodeTrailingBorder(node, YGFlexDirectionColumn)) -
12591244
(child->getLeadingPosition(YGFlexDirectionColumn, height) +
12601245
child->getTrailingPosition(YGFlexDirectionColumn, height));
@@ -1789,12 +1774,10 @@ static void YGNodelayoutImpl(const YGNodeRef node,
17891774
node->setLayoutMargin(
17901775
node->getTrailingMargin(flexColumnDirection, parentWidth), YGEdgeBottom);
17911776

1792-
node->setLayoutBorder(
1793-
YGNodeLeadingBorder(node, flexRowDirection), YGEdgeStart);
1777+
node->setLayoutBorder(node->getLeadingBorder(flexRowDirection), YGEdgeStart);
17941778
node->setLayoutBorder(
17951779
YGNodeTrailingBorder(node, flexRowDirection), YGEdgeEnd);
1796-
node->setLayoutBorder(
1797-
YGNodeLeadingBorder(node, flexColumnDirection), YGEdgeTop);
1780+
node->setLayoutBorder(node->getLeadingBorder(flexColumnDirection), YGEdgeTop);
17981781
node->setLayoutBorder(
17991782
YGNodeTrailingBorder(node, flexColumnDirection), YGEdgeBottom);
18001783

@@ -2459,7 +2442,7 @@ static void YGNodelayoutImpl(const YGNodeRef node,
24592442
// (and margin/border).
24602443
child->setLayoutPosition(
24612444
child->getLeadingPosition(mainAxis, availableInnerMainDim) +
2462-
YGNodeLeadingBorder(node, mainAxis) +
2445+
node->getLeadingBorder(mainAxis) +
24632446
child->getLeadingMargin(mainAxis, availableInnerWidth),
24642447
pos[mainAxis]);
24652448
}
@@ -2501,7 +2484,7 @@ static void YGNodelayoutImpl(const YGNodeRef node,
25012484
} else if (performLayout) {
25022485
child->setLayoutPosition(
25032486
child->getLayout().position[pos[mainAxis]] +
2504-
YGNodeLeadingBorder(node, mainAxis) + leadingMainDim,
2487+
node->getLeadingBorder(mainAxis) + leadingMainDim,
25052488
pos[mainAxis]);
25062489
}
25072490
}
@@ -2552,15 +2535,15 @@ static void YGNodelayoutImpl(const YGNodeRef node,
25522535
if (isChildLeadingPosDefined) {
25532536
child->setLayoutPosition(
25542537
child->getLeadingPosition(crossAxis, availableInnerCrossDim) +
2555-
YGNodeLeadingBorder(node, crossAxis) +
2538+
node->getLeadingBorder(crossAxis) +
25562539
child->getLeadingMargin(crossAxis, availableInnerWidth),
25572540
pos[crossAxis]);
25582541
}
25592542
// If leading position is not defined or calculations result in Nan, default to border + margin
25602543
if (!isChildLeadingPosDefined ||
25612544
YGFloatIsUndefined(child->getLayout().position[pos[crossAxis]])) {
25622545
child->setLayoutPosition(
2563-
YGNodeLeadingBorder(node, crossAxis) +
2546+
node->getLeadingBorder(crossAxis) +
25642547
child->getLeadingMargin(crossAxis, availableInnerWidth),
25652548
pos[crossAxis]);
25662549
}

0 commit comments

Comments
 (0)