Skip to content

Commit 62d0100

Browse files
Moved margin axis function as a method in YGNode
Reviewed By: emilsjolander Differential Revision: D6900003 fbshipit-source-id: a42da3bcd3126bf8c432c6740987b5ec0b572172
1 parent 1475fc4 commit 62d0100

File tree

3 files changed

+63
-53
lines changed

3 files changed

+63
-53
lines changed

ReactCommon/yoga/yoga/YGNode.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,12 @@ float YGNode::getTrailingMargin(
167167
widthSize);
168168
}
169169

170+
float YGNode::getMarginForAxis(
171+
const YGFlexDirection axis,
172+
const float widthSize) {
173+
return getLeadingMargin(axis, widthSize) + getTrailingMargin(axis, widthSize);
174+
}
175+
170176
// Setters
171177

172178
void YGNode::setContext(void* context) {

ReactCommon/yoga/yoga/YGNode.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ struct YGNode {
9797
float getTrailingPaddingAndBorder(
9898
const YGFlexDirection axis,
9999
const float widthSize);
100+
float getMarginForAxis(const YGFlexDirection axis, const float widthSize);
100101
// Setters
101102

102103
void setContext(void* context);

ReactCommon/yoga/yoga/Yoga.cpp

Lines changed: 56 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -797,13 +797,6 @@ static const std::array<YGEdge, 4> pos = {{
797797
static const std::array<YGDimension, 4> dim = {
798798
{YGDimensionHeight, YGDimensionHeight, YGDimensionWidth, YGDimensionWidth}};
799799

800-
static inline float YGNodeMarginForAxis(const YGNodeRef node,
801-
const YGFlexDirection axis,
802-
const float widthSize) {
803-
return node->getLeadingMargin(axis, widthSize) +
804-
node->getTrailingMargin(axis, widthSize);
805-
}
806-
807800
static inline float YGNodePaddingAndBorderForAxis(const YGNodeRef node,
808801
const YGFlexDirection axis,
809802
const float widthSize) {
@@ -970,7 +963,7 @@ static void YGConstrainMaxSizeForMode(const YGNodeRef node,
970963
const float maxSize =
971964
YGResolveValue(
972965
node->getStyle().maxDimensions[dim[axis]], parentAxisSize) +
973-
YGNodeMarginForAxis(node, axis, parentWidth);
966+
node->getMarginForAxis(axis, parentWidth);
974967
switch (*mode) {
975968
case YGMeasureModeExactly:
976969
case YGMeasureModeAtMost:
@@ -1044,9 +1037,9 @@ static void YGNodeComputeFlexBasisForChild(const YGNodeRef node,
10441037
childHeightMeasureMode = YGMeasureModeUndefined;
10451038

10461039
const float marginRow =
1047-
YGNodeMarginForAxis(child, YGFlexDirectionRow, parentWidth);
1040+
node->getMarginForAxis(YGFlexDirectionRow, parentWidth);
10481041
const float marginColumn =
1049-
YGNodeMarginForAxis(child, YGFlexDirectionColumn, parentWidth);
1042+
node->getMarginForAxis(YGFlexDirectionColumn, parentWidth);
10501043

10511044
if (isRowStyleDimDefined) {
10521045
childWidth =
@@ -1168,8 +1161,9 @@ static void YGNodeAbsoluteLayoutChild(const YGNodeRef node,
11681161
YGMeasureMode childWidthMeasureMode = YGMeasureModeUndefined;
11691162
YGMeasureMode childHeightMeasureMode = YGMeasureModeUndefined;
11701163

1171-
const float marginRow = YGNodeMarginForAxis(child, YGFlexDirectionRow, width);
1172-
const float marginColumn = YGNodeMarginForAxis(child, YGFlexDirectionColumn, width);
1164+
const float marginRow = child->getMarginForAxis(YGFlexDirectionRow, width);
1165+
const float marginColumn =
1166+
child->getMarginForAxis(YGFlexDirectionColumn, width);
11731167

11741168
if (YGNodeIsStyleDimDefined(child, YGFlexDirectionRow, width)) {
11751169
childWidth =
@@ -1251,9 +1245,9 @@ static void YGNodeAbsoluteLayoutChild(const YGNodeRef node,
12511245
"abs-measure",
12521246
config);
12531247
childWidth = child->getLayout().measuredDimensions[YGDimensionWidth] +
1254-
YGNodeMarginForAxis(child, YGFlexDirectionRow, width);
1248+
child->getMarginForAxis(YGFlexDirectionRow, width);
12551249
childHeight = child->getLayout().measuredDimensions[YGDimensionHeight] +
1256-
YGNodeMarginForAxis(child, YGFlexDirectionColumn, width);
1250+
child->getMarginForAxis(YGFlexDirectionColumn, width);
12571251
}
12581252

12591253
YGLayoutNodeInternal(child,
@@ -1341,19 +1335,22 @@ static void YGNodeWithMeasureFuncSetMeasuredDimensions(const YGNodeRef node,
13411335
YGNodePaddingAndBorderForAxis(node, YGFlexDirectionRow, availableWidth);
13421336
const float paddingAndBorderAxisColumn =
13431337
YGNodePaddingAndBorderForAxis(node, YGFlexDirectionColumn, availableWidth);
1344-
const float marginAxisRow = YGNodeMarginForAxis(node, YGFlexDirectionRow, availableWidth);
1345-
const float marginAxisColumn = YGNodeMarginForAxis(node, YGFlexDirectionColumn, availableWidth);
1338+
const float marginAxisRow =
1339+
node->getMarginForAxis(YGFlexDirectionRow, availableWidth);
1340+
const float marginAxisColumn =
1341+
node->getMarginForAxis(YGFlexDirectionColumn, availableWidth);
13461342

13471343
// We want to make sure we don't call measure with negative size
13481344
const float innerWidth = YGFloatIsUndefined(availableWidth)
1349-
? availableWidth
1350-
: fmaxf(0, availableWidth - marginAxisRow - paddingAndBorderAxisRow);
1351-
const float innerHeight =
1352-
YGFloatIsUndefined(availableHeight)
1353-
? availableHeight
1354-
: fmaxf(0, availableHeight - marginAxisColumn - paddingAndBorderAxisColumn);
1355-
1356-
if (widthMeasureMode == YGMeasureModeExactly && heightMeasureMode == YGMeasureModeExactly) {
1345+
? availableWidth
1346+
: fmaxf(0, availableWidth - marginAxisRow - paddingAndBorderAxisRow);
1347+
const float innerHeight = YGFloatIsUndefined(availableHeight)
1348+
? availableHeight
1349+
: fmaxf(
1350+
0, availableHeight - marginAxisColumn - paddingAndBorderAxisColumn);
1351+
1352+
if (widthMeasureMode == YGMeasureModeExactly &&
1353+
heightMeasureMode == YGMeasureModeExactly) {
13571354
// Don't bother sizing the text if both dimensions are already defined.
13581355
node->setLayoutMeasuredDimension(
13591356
YGNodeBoundAxis(
@@ -1415,8 +1412,10 @@ static void YGNodeEmptyContainerSetMeasuredDimensions(const YGNodeRef node,
14151412
YGNodePaddingAndBorderForAxis(node, YGFlexDirectionRow, parentWidth);
14161413
const float paddingAndBorderAxisColumn =
14171414
YGNodePaddingAndBorderForAxis(node, YGFlexDirectionColumn, parentWidth);
1418-
const float marginAxisRow = YGNodeMarginForAxis(node, YGFlexDirectionRow, parentWidth);
1419-
const float marginAxisColumn = YGNodeMarginForAxis(node, YGFlexDirectionColumn, parentWidth);
1415+
const float marginAxisRow =
1416+
node->getMarginForAxis(YGFlexDirectionRow, parentWidth);
1417+
const float marginAxisColumn =
1418+
node->getMarginForAxis(YGFlexDirectionColumn, parentWidth);
14201419

14211420
node->setLayoutMeasuredDimension(
14221421
YGNodeBoundAxis(
@@ -1453,8 +1452,10 @@ static bool YGNodeFixedSizeSetMeasuredDimensions(const YGNodeRef node,
14531452
if ((widthMeasureMode == YGMeasureModeAtMost && availableWidth <= 0.0f) ||
14541453
(heightMeasureMode == YGMeasureModeAtMost && availableHeight <= 0.0f) ||
14551454
(widthMeasureMode == YGMeasureModeExactly && heightMeasureMode == YGMeasureModeExactly)) {
1456-
const float marginAxisColumn = YGNodeMarginForAxis(node, YGFlexDirectionColumn, parentWidth);
1457-
const float marginAxisRow = YGNodeMarginForAxis(node, YGFlexDirectionRow, parentWidth);
1455+
const float marginAxisColumn =
1456+
node->getMarginForAxis(YGFlexDirectionColumn, parentWidth);
1457+
const float marginAxisRow =
1458+
node->getMarginForAxis(YGFlexDirectionRow, parentWidth);
14581459

14591460
node->setLayoutMeasuredDimension(
14601461
YGNodeBoundAxis(
@@ -1508,7 +1509,7 @@ static float YGNodeCalculateAvailableInnerDim(
15081509
YGDimension dimension =
15091510
YGFlexDirectionIsRow(axis) ? YGDimensionWidth : YGDimensionHeight;
15101511

1511-
const float margin = YGNodeMarginForAxis(node, direction, parentDim);
1512+
const float margin = node->getMarginForAxis(direction, parentDim);
15121513
const float paddingAndBorder =
15131514
YGNodePaddingAndBorderForAxis(node, direction, parentDim);
15141515

@@ -1607,8 +1608,7 @@ static void YGNodeComputeFlexBasisForChildren(
16071608
}
16081609

16091610
totalOuterFlexBasis += child->getLayout().computedFlexBasis +
1610-
YGNodeMarginForAxis(child, mainAxis, availableInnerWidth);
1611-
;
1611+
child->getMarginForAxis(mainAxis, availableInnerWidth);
16121612
}
16131613
}
16141614

@@ -1642,7 +1642,7 @@ static YGCollectFlexItemsRowValues YGCalculateCollectFlexItemsRowValues(
16421642
}
16431643
child->setLineIndex(lineCount);
16441644
const float childMarginMainAxis =
1645-
YGNodeMarginForAxis(child, mainAxis, availableInnerWidth);
1645+
child->getMarginForAxis(mainAxis, availableInnerWidth);
16461646
const float flexBasisWithMinAndMaxConstraints =
16471647
YGNodeBoundAxisWithinMinAndMax(
16481648
child,
@@ -1769,10 +1769,10 @@ static float YGDistributeFreeSpaceSecondPass(
17691769

17701770
deltaFreeSpace += updatedMainSize - childFlexBasis;
17711771

1772-
const float marginMain = YGNodeMarginForAxis(
1773-
currentRelativeChild, mainAxis, availableInnerWidth);
1774-
const float marginCross = YGNodeMarginForAxis(
1775-
currentRelativeChild, crossAxis, availableInnerWidth);
1772+
const float marginMain =
1773+
currentRelativeChild->getMarginForAxis(mainAxis, availableInnerWidth);
1774+
const float marginCross =
1775+
currentRelativeChild->getMarginForAxis(crossAxis, availableInnerWidth);
17761776

17771777
float childCrossSize;
17781778
float childMainSize = updatedMainSize + marginMain;
@@ -2171,7 +2171,7 @@ static void YGJustifyMainAxis(
21712171
// they weren't computed. This means we can't call
21722172
// YGNodeDimWithMargin.
21732173
collectedFlexItemsValues.mainDim += betweenMainDim +
2174-
YGNodeMarginForAxis(child, mainAxis, availableInnerWidth) +
2174+
child->getMarginForAxis(mainAxis, availableInnerWidth) +
21752175
childLayout.computedFlexBasis;
21762176
collectedFlexItemsValues.crossDim = availableInnerCrossDim;
21772177
} else {
@@ -2401,8 +2401,10 @@ static void YGNodelayoutImpl(const YGNodeRef node,
24012401
const float paddingAndBorderAxisColumn =
24022402
isMainAxisRow ? paddingAndBorderAxisCross : paddingAndBorderAxisMain;
24032403

2404-
const float marginAxisRow = YGNodeMarginForAxis(node, YGFlexDirectionRow, parentWidth);
2405-
const float marginAxisColumn = YGNodeMarginForAxis(node, YGFlexDirectionColumn, parentWidth);
2404+
const float marginAxisRow =
2405+
node->getMarginForAxis(YGFlexDirectionRow, parentWidth);
2406+
const float marginAxisColumn =
2407+
node->getMarginForAxis(YGFlexDirectionColumn, parentWidth);
24062408

24072409
const float minInnerWidth =
24082410
YGResolveValue(
@@ -2664,14 +2666,14 @@ static void YGNodelayoutImpl(const YGNodeRef node,
26642666
child->getLayout().measuredDimensions[dim[mainAxis]];
26652667
float childCrossSize =
26662668
!YGFloatIsUndefined(child->getStyle().aspectRatio)
2667-
? ((YGNodeMarginForAxis(
2668-
child, crossAxis, availableInnerWidth) +
2669+
? ((child->getMarginForAxis(crossAxis, availableInnerWidth) +
26692670
(isMainAxisRow
26702671
? childMainSize / child->getStyle().aspectRatio
26712672
: childMainSize * child->getStyle().aspectRatio)))
26722673
: collectedFlexItemsValues.crossDim;
26732674

2674-
childMainSize += YGNodeMarginForAxis(child, mainAxis, availableInnerWidth);
2675+
childMainSize +=
2676+
child->getMarginForAxis(mainAxis, availableInnerWidth);
26752677

26762678
YGMeasureMode childMainMeasureMode = YGMeasureModeExactly;
26772679
YGMeasureMode childCrossMeasureMode = YGMeasureModeExactly;
@@ -2808,16 +2810,16 @@ static void YGNodelayoutImpl(const YGNodeRef node,
28082810
lineHeight = fmaxf(
28092811
lineHeight,
28102812
child->getLayout().measuredDimensions[dim[crossAxis]] +
2811-
YGNodeMarginForAxis(child, crossAxis, availableInnerWidth));
2813+
child->getMarginForAxis(crossAxis, availableInnerWidth));
28122814
}
28132815
if (YGNodeAlignItem(node, child) == YGAlignBaseline) {
28142816
const float ascent = YGBaseline(child) +
28152817
child->getLeadingMargin(
28162818
YGFlexDirectionColumn, availableInnerWidth);
28172819
const float descent =
28182820
child->getLayout().measuredDimensions[YGDimensionHeight] +
2819-
YGNodeMarginForAxis(
2820-
child, YGFlexDirectionColumn, availableInnerWidth) -
2821+
child->getMarginForAxis(
2822+
YGFlexDirectionColumn, availableInnerWidth) -
28212823
ascent;
28222824
maxAscentForCurrentLine = fmaxf(maxAscentForCurrentLine, ascent);
28232825
maxDescentForCurrentLine = fmaxf(maxDescentForCurrentLine, descent);
@@ -2873,15 +2875,14 @@ static void YGNodelayoutImpl(const YGNodeRef node,
28732875
const float childWidth = isMainAxisRow
28742876
? (child->getLayout()
28752877
.measuredDimensions[YGDimensionWidth] +
2876-
YGNodeMarginForAxis(
2877-
child, mainAxis, availableInnerWidth))
2878+
child->getMarginForAxis(mainAxis, availableInnerWidth))
28782879
: lineHeight;
28792880

28802881
const float childHeight = !isMainAxisRow
28812882
? (child->getLayout()
28822883
.measuredDimensions[YGDimensionHeight] +
2883-
YGNodeMarginForAxis(
2884-
child, crossAxis, availableInnerWidth))
2884+
child->getMarginForAxis(
2885+
crossAxis, availableInnerWidth))
28852886
: lineHeight;
28862887

28872888
if (!(YGFloatsEqual(
@@ -3251,8 +3252,10 @@ bool YGLayoutNodeInternal(const YGNodeRef node,
32513252
// expensive to measure, so it's worth avoiding redundant measurements if at
32523253
// all possible.
32533254
if (node->getMeasure() != nullptr) {
3254-
const float marginAxisRow = YGNodeMarginForAxis(node, YGFlexDirectionRow, parentWidth);
3255-
const float marginAxisColumn = YGNodeMarginForAxis(node, YGFlexDirectionColumn, parentWidth);
3255+
const float marginAxisRow =
3256+
node->getMarginForAxis(YGFlexDirectionRow, parentWidth);
3257+
const float marginAxisColumn =
3258+
node->getMarginForAxis(YGFlexDirectionColumn, parentWidth);
32563259

32573260
// First, try to use the layout cache.
32583261
if (YGNodeCanUseCachedMeasurement(widthMeasureMode,
@@ -3527,7 +3530,7 @@ void YGNodeCalculateLayout(const YGNodeRef node,
35273530
width =
35283531
YGResolveValue(
35293532
node->getResolvedDimension(dim[YGFlexDirectionRow]), parentWidth) +
3530-
YGNodeMarginForAxis(node, YGFlexDirectionRow, parentWidth);
3533+
node->getMarginForAxis(YGFlexDirectionRow, parentWidth);
35313534
widthMeasureMode = YGMeasureModeExactly;
35323535
} else if (
35333536
YGResolveValue(
@@ -3547,7 +3550,7 @@ void YGNodeCalculateLayout(const YGNodeRef node,
35473550
height = YGResolveValue(
35483551
node->getResolvedDimension(dim[YGFlexDirectionColumn]),
35493552
parentHeight) +
3550-
YGNodeMarginForAxis(node, YGFlexDirectionColumn, parentWidth);
3553+
node->getMarginForAxis(YGFlexDirectionColumn, parentWidth);
35513554
heightMeasureMode = YGMeasureModeExactly;
35523555
} else if (
35533556
YGResolveValue(

0 commit comments

Comments
 (0)