Baseline support #317
10
yoga/Yoga.c
10
yoga/Yoga.c
@@ -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;
|
||||||
|
Reference in New Issue
Block a user