YGFloatOptional yogaOptionalFloatFromFabricFloat(Float value) { if (value == kFloatUndefined) { return YGFloatOptional(); } return YGFloatOptional(yogaFloatFromFabricFloat(value)); }
YGSize YogaLayoutableShadowNode::yogaNodeMeasureCallbackConnector(YGNode *yogaNode, float width, YGMeasureMode widthMode, float height, YGMeasureMode heightMode) { YogaLayoutableShadowNode *shadowNodeRawPtr = (YogaLayoutableShadowNode *)yogaNode->getContext(); assert(shadowNodeRawPtr); Size minimumSize = Size {0, 0}; Size maximumSize = Size {kFloatMax, kFloatMax}; switch (widthMode) { case YGMeasureModeUndefined: break; case YGMeasureModeExactly: minimumSize.width = fabricFloatFromYogaFloat(width); maximumSize.width = fabricFloatFromYogaFloat(width); break; case YGMeasureModeAtMost: maximumSize.width = fabricFloatFromYogaFloat(width); break; } switch (heightMode) { case YGMeasureModeUndefined: break; case YGMeasureModeExactly: minimumSize.height = fabricFloatFromYogaFloat(height); maximumSize.height = fabricFloatFromYogaFloat(height); break; case YGMeasureModeAtMost: maximumSize.height = fabricFloatFromYogaFloat(height); break; } Size size = shadowNodeRawPtr->measure(LayoutConstraints {minimumSize, maximumSize}); return YGSize { yogaFloatFromFabricFloat(size.width), yogaFloatFromFabricFloat(size.height) }; }