Float fabricFloatFromYogaOptionalFloat(YGFloatOptional value) { if (value.isUndefined()) { return kFloatUndefined; } return fabricFloatFromYogaFloat(value.getValue()); }
std::string stringFromYogaStyleOptionalFloat(YGFloatOptional value) { if (value.isUndefined()) { return "undefined"; } return folly::to<std::string>(fabricFloatFromYogaFloat(value.getValue())); }
YGFloatOptional YGFloatOptionalMax( const YGFloatOptional& op1, const YGFloatOptional& op2) { if (!op1.isUndefined() && !op2.isUndefined()) { return op1.getValue() > op2.getValue() ? op1 : op2; } return op1.isUndefined() ? op2 : op1; }
// If both left and right are defined, then use left. Otherwise return +left or // -right depending on which is defined. YGFloatOptional YGNode::relativePosition( const YGFlexDirection axis, const float axisSize) const { if (isLeadingPositionDefined(axis)) { return getLeadingPosition(axis, axisSize); } YGFloatOptional trailingPosition = getTrailingPosition(axis, axisSize); if (!trailingPosition.isUndefined()) { trailingPosition = YGFloatOptional{-1 * trailingPosition.unwrap()}; } return trailingPosition; }
// If both left and right are defined, then use left. Otherwise return // +left or -right depending on which is defined. YGFloatOptional YGNode::relativePosition( const YGFlexDirection& axis, const float& axisSize) const { if (isLeadingPositionDefined(axis)) { return getLeadingPosition(axis, axisSize); } YGFloatOptional trailingPosition = getTrailingPosition(axis, axisSize); if (!trailingPosition.isUndefined()) { trailingPosition.setValue(-1 * trailingPosition.getValue()); } return trailingPosition; }
YGFloatOptional YGNode::getLeadingPadding( const YGFlexDirection axis, const float widthSize) const { const YGFloatOptional paddingEdgeStart = YGResolveValue(style_.padding[YGEdgeStart], widthSize); if (YGFlexDirectionIsRow(axis) && !style_.padding[YGEdgeStart].isUndefined() && !paddingEdgeStart.isUndefined() && paddingEdgeStart.unwrap() >= 0.0f) { return paddingEdgeStart; } YGFloatOptional resolvedValue = YGResolveValue( YGComputedEdgeValue( style_.padding, leading[axis], CompactValue::ofZero()), widthSize); return YGFloatOptionalMax(resolvedValue, YGFloatOptional(0.0f)); }
float YGUnwrapFloatOptional(const YGFloatOptional& op) { return op.isUndefined() ? YGUndefined : op.getValue(); }