void YGNode::setPosition( const YGDirection direction, const float mainSize, const float crossSize, const float parentWidth) { /* Root nodes should be always layouted as LTR, so we don't return negative * values. */ const YGDirection directionRespectingRoot = parent_ != nullptr ? direction : YGDirectionLTR; const YGFlexDirection mainAxis = YGResolveFlexDirection(style_.flexDirection, directionRespectingRoot); const YGFlexDirection crossAxis = YGFlexDirectionCross(mainAxis, directionRespectingRoot); const float relativePositionMain = relativePosition(mainAxis, mainSize); const float relativePositionCross = relativePosition(crossAxis, crossSize); setLayoutPosition( getLeadingMargin(mainAxis, parentWidth) + relativePositionMain, leading[mainAxis]); setLayoutPosition( getTrailingMargin(mainAxis, parentWidth) + relativePositionMain, trailing[mainAxis]); setLayoutPosition( getLeadingMargin(crossAxis, parentWidth) + relativePositionCross, leading[crossAxis]); setLayoutPosition( getTrailingMargin(crossAxis, parentWidth) + relativePositionCross, trailing[crossAxis]); }
YGFlexDirection YGFlexDirectionCross( const YGFlexDirection flexDirection, const YGDirection direction) { return YGFlexDirectionIsColumn(flexDirection) ? YGResolveFlexDirection(YGFlexDirectionRow, direction) : YGFlexDirectionColumn; }