static void updateLineConstrains(const RenderBlockFlow& flow, LineState& line, bool isFirstLine) { bool shouldApplyTextIndent = !flow.isAnonymous() || flow.parent()->firstChild() == &flow; LayoutUnit height = flow.logicalHeight(); LayoutUnit logicalHeight = flow.minLineHeightForReplacedRenderer(false, 0); float logicalRightOffset = flow.logicalRightOffsetForLine(height, false, logicalHeight); line.setLogicalLeftOffset(flow.logicalLeftOffsetForLine(height, false, logicalHeight) + (shouldApplyTextIndent && isFirstLine ? flow.textIndentOffset() : LayoutUnit(0))); line.setAvailableWidth(std::max<float>(0, logicalRightOffset - line.logicalLeftOffset())); }
static bool newFloatShrinksLine(const FloatingObject& newFloat, const RenderBlockFlow& block, bool isFirstLine) { LayoutUnit blockOffset = block.logicalHeight(); if (blockOffset >= block.logicalTopForFloat(newFloat) && blockOffset < block.logicalBottomForFloat(newFloat)) return true; // initial-letter float always shrinks the first line. const auto& style = newFloat.renderer().style(); if (isFirstLine && style.styleType() == FIRST_LETTER && !style.initialLetter().isEmpty()) return true; return false; }