Add support for space-between and space-around on align-content

Summary:
Adds the two missing alignments ```space-between``` and ```space-around``` for ```align-content``` . Those values are a noop on ```align-items``` in order to prevent a breaking changes for an additional enum.

Fix #229
Closes https://github.com/facebook/yoga/pull/364

Reviewed By: gkassabli

Differential Revision: D4528561

Pulled By: emilsjolander

fbshipit-source-id: ea6291b6dd22cef05d9eec03893250d50371236e
This commit is contained in:
Lukas Wöhrl
2017-02-11 08:32:48 -08:00
committed by Facebook Github Bot
parent 247aa26d3e
commit 6a7ad2125d
16 changed files with 1143 additions and 273 deletions

View File

@@ -13,7 +13,7 @@
YG_EXTERN_C_BEGIN
#define YGAlignCount 6
#define YGAlignCount 8
typedef YG_ENUM_BEGIN(YGAlign) {
YGAlignAuto,
YGAlignFlexStart,
@@ -21,6 +21,8 @@ typedef YG_ENUM_BEGIN(YGAlign) {
YGAlignFlexEnd,
YGAlignStretch,
YGAlignBaseline,
YGAlignSpaceBetween,
YGAlignSpaceAround,
} YG_ENUM_END(YGAlign);
#define YGDimensionCount 2

View File

@@ -2667,7 +2667,22 @@ static void YGNodelayoutImpl(const YGNodeRef node,
break;
case YGAlignStretch:
if (availableInnerCrossDim > totalLineCrossDim) {
crossDimLead = (remainingAlignContentDim / lineCount);
crossDimLead = remainingAlignContentDim / lineCount;
}
break;
case YGAlignSpaceAround:
if (availableInnerCrossDim > totalLineCrossDim) {
currentLead += remainingAlignContentDim / (2 * lineCount);
if (lineCount > 1) {
crossDimLead = remainingAlignContentDim / lineCount;
}
} else {
currentLead += remainingAlignContentDim / 2;
}
break;
case YGAlignSpaceBetween:
if (availableInnerCrossDim > totalLineCrossDim && lineCount > 1) {
crossDimLead = remainingAlignContentDim / (lineCount - 1);
}
break;
case YGAlignAuto:
@@ -2755,6 +2770,8 @@ static void YGNodelayoutImpl(const YGNodeRef node,
break;
}
case YGAlignAuto:
case YGAlignSpaceBetween:
case YGAlignSpaceAround:
break;
}
}