setUpChildBaselineForIFC method
void
setUpChildBaselineForIFC()
Implementation
void setUpChildBaselineForIFC() {
if (_inlineFormattingContext == null) {
setCssBaselines(first: null, last: null);
return;
}
// Cache CSS baselines for this element, computed from IFC line metrics.
// Baselines are measured from the top padding/border edge as distances,
// consistent with how computeDistanceToActualBaseline reports.
final double paddingTop = renderStyle.paddingTop.computedValue;
final double borderTop = renderStyle.effectiveBorderTopWidth.computedValue;
double? firstBaseline;
double? lastBaseline;
final List<ui.LineMetrics> paraLines = _inlineFormattingContext!.paragraphLineMetrics;
if (paraLines.isNotEmpty) {
firstBaseline = paraLines.first.baseline + paddingTop + borderTop;
lastBaseline = paraLines.last.baseline + paddingTop + borderTop;
} else {
// Fallback: no line boxes produced (empty content). Synthesize from bottom margin edge for inline-block.
final double marginBottom = renderStyle.marginBottom.computedValue;
final double fallback = (boxSize?.height ?? size.height) + marginBottom;
firstBaseline = fallback;
lastBaseline = fallback;
}
setCssBaselines(first: firstBaseline, last: lastBaseline);
}