From 92137273a2024c8e71686d25fc4cdde13bbbc8da Mon Sep 17 00:00:00 2001 From: desmondyao Date: Fri, 23 Dec 2016 10:15:50 -0800 Subject: [PATCH] Not re-calculate value in Step1. Summary: Not re-calculate `paddingAndBorderAxisMain`/`paddingAndBorderAxisCross`/`paddingAndBorderAxisRow`/`paddingAndBorderAxisColumn` in Step1 of `YGNodelayoutImpl`. They can be figure out by values calculated before. Closes https://github.com/facebook/yoga/pull/298 Reviewed By: dshahidehpour Differential Revision: D4365533 Pulled By: emilsjolander fbshipit-source-id: 6caf60bc6ef3addd49915b39b48f01a8b4926e9c --- yoga/Yoga.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/yoga/Yoga.c b/yoga/Yoga.c index 9723d894..32bc01e4 100644 --- a/yoga/Yoga.c +++ b/yoga/Yoga.c @@ -1500,9 +1500,9 @@ static void YGNodelayoutImpl(const YGNodeRef node, const YGMeasureMode measureModeMainDim = isMainAxisRow ? widthMeasureMode : heightMeasureMode; const YGMeasureMode measureModeCrossDim = isMainAxisRow ? heightMeasureMode : widthMeasureMode; - const float paddingAndBorderAxisRow = YGNodePaddingAndBorderForAxis(node, YGFlexDirectionRow); - const float paddingAndBorderAxisColumn = - YGNodePaddingAndBorderForAxis(node, YGFlexDirectionColumn); + const float paddingAndBorderAxisRow = isMainAxisRow ? paddingAndBorderAxisMain : paddingAndBorderAxisCross; + const float paddingAndBorderAxisColumn = isMainAxisRow ? paddingAndBorderAxisCross : paddingAndBorderAxisMain; + const float marginAxisRow = YGNodeMarginForAxis(node, YGFlexDirectionRow); const float marginAxisColumn = YGNodeMarginForAxis(node, YGFlexDirectionColumn); @@ -1516,7 +1516,7 @@ static void YGNodelayoutImpl(const YGNodeRef node, const float maxInnerHeight = node->style.maxDimensions[YGDimensionHeight] - marginAxisColumn - paddingAndBorderAxisColumn; const float minInnerMainDim = isMainAxisRow ? minInnerWidth : minInnerHeight; const float maxInnerMainDim = isMainAxisRow ? maxInnerWidth : maxInnerHeight; - + // Max dimension overrides predefined dimension value; Min dimension in turn overrides both of the above if (!YGValueIsUndefined(availableInnerWidth)) { availableInnerWidth = fmaxf(fminf(availableInnerWidth, maxInnerWidth), minInnerWidth); @@ -1524,7 +1524,7 @@ static void YGNodelayoutImpl(const YGNodeRef node, if (!YGValueIsUndefined(availableInnerHeight)) { availableInnerHeight = fmaxf(fminf(availableInnerHeight, maxInnerHeight), minInnerHeight); } - + float availableInnerMainDim = isMainAxisRow ? availableInnerWidth : availableInnerHeight; const float availableInnerCrossDim = isMainAxisRow ? availableInnerHeight : availableInnerWidth; @@ -1679,7 +1679,7 @@ static void YGNodelayoutImpl(const YGNodeRef node, // Calculate the remaining available space that needs to be allocated. // If the main dimension size isn't known, it is computed based on // the line length, so there's no more space left to distribute. - + // We resolve main dimension to fit minimum and maximum values if (YGValueIsUndefined(availableInnerMainDim)) { if (!YGValueIsUndefined(minInnerMainDim) && @@ -1690,7 +1690,7 @@ static void YGNodelayoutImpl(const YGNodeRef node, availableInnerMainDim = maxInnerMainDim; } } - + float remainingFreeSpace = 0; if (!YGValueIsUndefined(availableInnerMainDim)) { remainingFreeSpace = availableInnerMainDim - sizeConsumedOnCurrentLine;