static void YGConstrainMaxSizeForMode()

in yoga/Yoga.cpp [1208:1233]


static void YGConstrainMaxSizeForMode(
    const YGNodeConstRef node,
    const enum YGFlexDirection axis,
    const float ownerAxisSize,
    const float ownerWidth,
    YGMeasureMode* mode,
    float* size) {
  const YGFloatOptional maxSize =
      YGResolveValue(
          node->getStyle().maxDimensions()[dim[axis]], ownerAxisSize) +
      YGFloatOptional(node->getMarginForAxis(axis, ownerWidth));
  switch (*mode) {
    case YGMeasureModeExactly:
    case YGMeasureModeAtMost:
      *size = (maxSize.isUndefined() || *size < maxSize.unwrap())
          ? *size
          : maxSize.unwrap();
      break;
    case YGMeasureModeUndefined:
      if (!maxSize.isUndefined()) {
        *mode = YGMeasureModeAtMost;
        *size = maxSize.unwrap();
      }
      break;
  }
}