in ComponentKit/LayoutComponents/CKFlexboxComponent.mm [662:699]
static void applySizeAttribute(YGNodeRef node,
void(*percentFunc)(YGNodeRef, float),
void(*pointFunc)(YGNodeRef, float),
const RCRelativeDimension &childAttribute,
const RCRelativeDimension &nodeAttribute,
CGFloat parentValue,
BOOL setPercentOnChildNode)
{
switch (childAttribute.type()) {
case RCRelativeDimension::Type::PERCENT:
percentFunc(node, convertFloatToYogaRepresentation(childAttribute.value() * 100));
break;
case RCRelativeDimension::Type::POINTS:
pointFunc(node, convertFloatToYogaRepresentation(childAttribute.value()));
break;
case RCRelativeDimension::Type::AUTO:
if (setPercentOnChildNode) {
switch (nodeAttribute.type()) {
case RCRelativeDimension::Type::PERCENT:
percentFunc(node, convertFloatToYogaRepresentation(nodeAttribute.value() * 100));
break;
case RCRelativeDimension::Type::POINTS:
pointFunc(node, convertFloatToYogaRepresentation(nodeAttribute.value()));
break;
case RCRelativeDimension::Type::AUTO:
// Fall back to the component's size
const CGFloat value = nodeAttribute.resolve(YGUndefined, parentValue);
pointFunc(node, convertFloatToYogaRepresentation(value));
break;
}
} else {
// Fall back to the component's size
const CGFloat value = nodeAttribute.resolve(YGUndefined, parentValue);
pointFunc(node, convertFloatToYogaRepresentation(value));
}
break;
}
}