Baseline support #317

Closed
woehrl01 wants to merge 33 commits from baseline-support into master
20 changed files with 4604 additions and 7 deletions
Showing only changes of commit 11825ad303 - Show all commits

View File

@@ -967,10 +967,12 @@ static float YGBaseline(const YGNodeRef node) {
YGNodeRef baselineChild = NULL; YGNodeRef baselineChild = NULL;
for (uint32_t i = 0; i < YGNodeGetChildCount(node); i++) { for (uint32_t i = 0; i < YGNodeGetChildCount(node); i++) {
const YGNodeRef child = YGNodeGetChild(node, i); const YGNodeRef child = YGNodeGetChild(node, i);
if (child->style.positionType == YGPositionTypeAbsolute || child->lineIndex > 0) { if (child->lineIndex > 0) {
break;
}
if (child->style.positionType == YGPositionTypeAbsolute) {
continue; continue;
} }
if (YGNodeAlignItem(node, child) == YGAlignBaseline) { if (YGNodeAlignItem(node, child) == YGAlignBaseline) {
baselineChild = child; baselineChild = child;
break; break;
@@ -2529,8 +2531,8 @@ static void YGNodelayoutImpl(const YGNodeRef node,
YGNodeMarginForAxis(child, crossAxis, availableInnerWidth)); YGNodeMarginForAxis(child, crossAxis, availableInnerWidth));
} }
if (YGNodeAlignItem(node, child) == YGAlignBaseline) { if (YGNodeAlignItem(node, child) == YGAlignBaseline) {
const float ascent = YGBaseline(child) + const float ascent =
YGNodeLeadingMargin(child, crossAxis, availableInnerWidth); YGBaseline(child) + YGNodeLeadingMargin(child, crossAxis, availableInnerWidth);
const float descent = child->layout.measuredDimensions[dim[crossAxis]] + const float descent = child->layout.measuredDimensions[dim[crossAxis]] +
YGNodeMarginForAxis(child, crossAxis, availableInnerWidth) - YGNodeMarginForAxis(child, crossAxis, availableInnerWidth) -
ascent; ascent;