Changed the type of computedFlexBasis to YGFloatOptional in YGLayout

Summary: Changed the type of computedFlexBasis to YGFloatOptional in YGLayout

Reviewed By: emilsjolander

Differential Revision: D7340413

fbshipit-source-id: 39247b2b582a682e602f49f58b4bbd2bf0c995af
This commit is contained in:
Pritesh Nandgaonkar
2018-04-04 07:55:39 -07:00
committed by Facebook Github Bot
parent 77b720f9a5
commit 5b109578d3
6 changed files with 48 additions and 37 deletions

View File

@@ -1220,35 +1220,41 @@ static void YGNodeComputeFlexBasisForChild(const YGNodeRef node,
YGMeasureMode childWidthMeasureMode;
YGMeasureMode childHeightMeasureMode;
const float resolvedFlexBasis =
YGUnwrapFloatOptional(YGResolveValue(child->resolveFlexBasisPtr(), mainAxisownerSize));
const YGFloatOptional resolvedFlexBasis =
YGResolveValue(child->resolveFlexBasisPtr(), mainAxisownerSize);
const bool isRowStyleDimDefined = YGNodeIsStyleDimDefined(child, YGFlexDirectionRow, ownerWidth);
const bool isColumnStyleDimDefined =
YGNodeIsStyleDimDefined(child, YGFlexDirectionColumn, ownerHeight);
if (!YGFloatIsUndefined(resolvedFlexBasis) && !YGFloatIsUndefined(mainAxisSize)) {
if (YGFloatIsUndefined(child->getLayout().computedFlexBasis) ||
if (!resolvedFlexBasis.isUndefined() && !YGFloatIsUndefined(mainAxisSize)) {
if (child->getLayout().computedFlexBasis.isUndefined() ||
(YGConfigIsExperimentalFeatureEnabled(
child->getConfig(), YGExperimentalFeatureWebFlexBasis) &&
child->getLayout().computedFlexBasisGeneration !=
gCurrentGenerationCount)) {
child->setLayoutComputedFlexBasis(YGFloatMax(
resolvedFlexBasis,
YGNodePaddingAndBorderForAxis(child, mainAxis, ownerWidth)));
const YGFloatOptional& paddingAndBorder = YGFloatOptional(
YGNodePaddingAndBorderForAxis(child, mainAxis, ownerWidth));
child->setLayoutComputedFlexBasis(
YGFloatOptionalMax(resolvedFlexBasis, paddingAndBorder));
}
} else if (isMainAxisRow && isRowStyleDimDefined) {
// The width is definite, so use that as the flex basis.
child->setLayoutComputedFlexBasis(YGFloatMax(
YGUnwrapFloatOptional(YGResolveValue(
child->getResolvedDimension(YGDimensionWidth), ownerWidth)),
YGNodePaddingAndBorderForAxis(child, YGFlexDirectionRow, ownerWidth)));
const YGFloatOptional& paddingAndBorder = YGFloatOptional(
YGNodePaddingAndBorderForAxis(child, YGFlexDirectionRow, ownerWidth));
child->setLayoutComputedFlexBasis(YGFloatOptionalMax(
YGResolveValue(
child->getResolvedDimension(YGDimensionWidth), ownerWidth),
paddingAndBorder));
} else if (!isMainAxisRow && isColumnStyleDimDefined) {
// The height is definite, so use that as the flex basis.
child->setLayoutComputedFlexBasis(YGFloatMax(
YGUnwrapFloatOptional(YGResolveValue(
child->getResolvedDimension(YGDimensionHeight), ownerHeight)),
YGNodePaddingAndBorderForAxis(
child, YGFlexDirectionColumn, ownerWidth)));
const YGFloatOptional& paddingAndBorder =
YGFloatOptional(YGNodePaddingAndBorderForAxis(
child, YGFlexDirectionColumn, ownerWidth));
child->setLayoutComputedFlexBasis(YGFloatOptionalMax(
YGResolveValue(
child->getResolvedDimension(YGDimensionHeight), ownerHeight),
paddingAndBorder));
} else {
// Compute the flex basis and hypothetical main size (i.e. the clamped
// flex basis).
@@ -1361,9 +1367,9 @@ static void YGNodeComputeFlexBasisForChild(const YGNodeRef node,
"measure",
config);
child->setLayoutComputedFlexBasis(YGFloatMax(
child->setLayoutComputedFlexBasis(YGFloatOptional(YGFloatMax(
child->getLayout().measuredDimensions[dim[mainAxis]],
YGNodePaddingAndBorderForAxis(child, mainAxis, ownerWidth)));
YGNodePaddingAndBorderForAxis(child, mainAxis, ownerWidth))));
}
child->setLayoutComputedFlexBasisGeneration(gCurrentGenerationCount);
}
@@ -1825,7 +1831,7 @@ static void YGNodeComputeFlexBasisForChildren(
}
if (child == singleFlexChild) {
child->setLayoutComputedFlexBasisGeneration(gCurrentGenerationCount);
child->setLayoutComputedFlexBasis(0);
child->setLayoutComputedFlexBasis(YGFloatOptional(0));
} else {
YGNodeComputeFlexBasisForChild(
node,
@@ -1840,7 +1846,8 @@ static void YGNodeComputeFlexBasisForChildren(
config);
}
totalOuterFlexBasis += child->getLayout().computedFlexBasis +
totalOuterFlexBasis +=
YGUnwrapFloatOptional(child->getLayout().computedFlexBasis) +
child->getMarginForAxis(mainAxis, availableInnerWidth);
}
}
@@ -1880,7 +1887,7 @@ static YGCollectFlexItemsRowValues YGCalculateCollectFlexItemsRowValues(
YGUnwrapFloatOptional(YGNodeBoundAxisWithinMinAndMax(
child,
mainAxis,
child->getLayout().computedFlexBasis,
YGUnwrapFloatOptional(child->getLayout().computedFlexBasis),
mainAxisownerSize));
// If this is a multi-line flow and this item pushes us over the
@@ -1906,7 +1913,8 @@ static YGCollectFlexItemsRowValues YGCalculateCollectFlexItemsRowValues(
// Unlike the grow factor, the shrink factor is scaled relative to the
// child dimension.
flexAlgoRowMeasurement.totalFlexShrinkScaledFactors +=
-child->resolveFlexShrink() * child->getLayout().computedFlexBasis;
-child->resolveFlexShrink() *
YGUnwrapFloatOptional(child->getLayout().computedFlexBasis);
}
flexAlgoRowMeasurement.relativeChildren.push_back(child);
@@ -1956,7 +1964,8 @@ static float YGDistributeFreeSpaceSecondPass(
childFlexBasis = YGUnwrapFloatOptional(YGNodeBoundAxisWithinMinAndMax(
currentRelativeChild,
mainAxis,
currentRelativeChild->getLayout().computedFlexBasis,
YGUnwrapFloatOptional(
currentRelativeChild->getLayout().computedFlexBasis),
mainAxisownerSize));
float updatedMainSize = childFlexBasis;
@@ -2131,7 +2140,8 @@ static void YGDistributeFreeSpaceFirstPass(
float childFlexBasis = YGUnwrapFloatOptional(YGNodeBoundAxisWithinMinAndMax(
currentRelativeChild,
mainAxis,
currentRelativeChild->getLayout().computedFlexBasis,
YGUnwrapFloatOptional(
currentRelativeChild->getLayout().computedFlexBasis),
mainAxisownerSize));
if (collectedFlexItemsValues.remainingFreeSpace < 0) {
@@ -2417,7 +2427,7 @@ static void YGJustifyMainAxis(
// YGNodeDimWithMargin.
collectedFlexItemsValues.mainDim += betweenMainDim +
child->getMarginForAxis(mainAxis, availableInnerWidth) +
childLayout.computedFlexBasis;
YGUnwrapFloatOptional(childLayout.computedFlexBasis);
collectedFlexItemsValues.crossDim = availableInnerCrossDim;
} else {
// The main dimension is the sum of all the elements dimension plus