LayoutUnit FloatingObjects::logicalRightOffset(LayoutUnit fixedOffset, LayoutUnit logicalTop, LayoutUnit logicalHeight) { ComputeFloatOffsetForLineLayoutAdapter<FloatingObject::FloatRight> adapter(m_layoutObject, roundToInt(logicalTop), roundToInt(logicalTop + logicalHeight), fixedOffset); placedFloatsTree().allOverlapsWithAdapter(adapter); return std::min(fixedOffset, adapter.offset()); }
LayoutUnit FloatingObjects::findNextFloatLogicalBottomBelowForBlock( LayoutUnit logicalHeight) { FindNextFloatLogicalBottomAdapter adapter(*m_layoutObject, logicalHeight); placedFloatsTree().allOverlapsWithAdapter(adapter); return adapter.nextLogicalBottom(); }
LayoutUnit FloatingObjects::logicalLeftOffset(LayoutUnit fixedOffset, LayoutUnit logicalTop, LayoutUnit logicalHeight) { ComputeFloatOffsetForLineLayoutAdapter<FloatingObject::FloatLeft> adapter(m_layoutObject, logicalTop, logicalTop + logicalHeight, fixedOffset); placedFloatsTree().allOverlapsWithAdapter(adapter); return adapter.offset(); }
LayoutUnit FloatingObjects::logicalRightOffset(LayoutUnit fixedOffset, LayoutUnit logicalTop, LayoutUnit logicalHeight, ShapeOutsideFloatOffsetMode offsetMode, LayoutUnit *heightRemaining) { #if !ENABLE(CSS_SHAPES) UNUSED_PARAM(offsetMode); #endif LayoutUnit offset = fixedOffset; ComputeFloatOffsetAdapter<FloatingObject::FloatRight> adapter(m_renderer, roundToInt(logicalTop), roundToInt(logicalTop + logicalHeight), offset); placedFloatsTree().allOverlapsWithAdapter(adapter); if (heightRemaining) *heightRemaining = adapter.getHeightRemaining(); #if ENABLE(CSS_SHAPES) const FloatingObject* outermostFloat = adapter.outermostFloat(); if (offsetMode == ShapeOutsideFloatShapeOffset && outermostFloat) { if (ShapeOutsideInfo* shapeOutside = outermostFloat->renderer().shapeOutsideInfo()) { shapeOutside->updateDeltasForContainingBlockLine(m_renderer, outermostFloat, logicalTop, logicalHeight); offset += shapeOutside->leftMarginBoxDelta(); } } #endif return min(fixedOffset, offset); }
LayoutUnit FloatingObjects::logicalRightOffsetForPositioningFloat(LayoutUnit fixedOffset, LayoutUnit logicalTop, LayoutUnit *heightRemaining) { ComputeFloatOffsetForFloatLayoutAdapter<FloatingObject::FloatRight> adapter(m_layoutObject, logicalTop, logicalTop, fixedOffset); placedFloatsTree().allOverlapsWithAdapter(adapter); if (heightRemaining) *heightRemaining = adapter.heightRemaining(); return std::min(fixedOffset, adapter.offset()); }
LayoutUnit FloatingObjects::logicalLeftOffsetForPositioningFloat(LayoutUnit fixedOffset, LayoutUnit logicalTop, LayoutUnit *heightRemaining) { int logicalTopAsInt = roundToInt(logicalTop); ComputeFloatOffsetForFloatLayoutAdapter<FloatingObject::FloatLeft> adapter(m_layoutObject, logicalTopAsInt, logicalTopAsInt, fixedOffset); placedFloatsTree().allOverlapsWithAdapter(adapter); if (heightRemaining) *heightRemaining = adapter.heightRemaining(); return adapter.offset(); }