bool RenderNamedFlowFragment::shouldClipFlowThreadContent() const { if (fragmentContainer().hasOverflowClip()) return true; return isLastRegion() && (style().regionFragment() == BreakRegionFragment); }
LayoutSize RenderNamedFlowFragment::offsetFromContainer(RenderObject* o, const LayoutPoint&, bool*) const { ASSERT(&fragmentContainer() == o); ASSERT(container() == o); UNUSED_PARAM(o); return topLeftLocationOffset(); }
LayoutRect RenderNamedFlowFragment::flowThreadPortionRectForClipping(bool isFirstRegionInRange, bool isLastRegionInRange) const { // Elements flowed into a region should not be painted past the region's content box // if they continue to flow into another region in that direction. // If they do not continue into another region in that direction, they should be // painted all the way to the region's border box. // Regions with overflow:hidden will apply clip at the border box, not the content box. LayoutRect clippingRect = flowThreadPortionRect(); RenderBlockFlow& container = fragmentContainer(); if (container.style().hasPadding()) { if (isFirstRegionInRange) { if (flowThread()->isHorizontalWritingMode()) { clippingRect.move(0, -container.paddingBefore()); clippingRect.expand(0, container.paddingBefore()); } else { clippingRect.move(-container.paddingBefore(), 0); clippingRect.expand(container.paddingBefore(), 0); } } if (isLastRegionInRange) { if (flowThread()->isHorizontalWritingMode()) clippingRect.expand(0, container.paddingAfter()); else clippingRect.expand(container.paddingAfter(), 0); } if (flowThread()->isHorizontalWritingMode()) { clippingRect.move(-container.paddingStart(), 0); clippingRect.expand(container.paddingStart() + container.paddingEnd(), 0); } else { clippingRect.move(0, -container.paddingStart()); clippingRect.expand(0, container.paddingStart() + container.paddingEnd()); } } return clippingRect; }
LayoutSize RenderNamedFlowFragment::offsetFromContainer(RenderElement& container, const LayoutPoint&, bool*) const { ASSERT_UNUSED(container, &fragmentContainer() == &container); ASSERT_UNUSED(container, this->container() == &container); return topLeftLocationOffset(); }
RenderLayer& RenderNamedFlowFragment::fragmentContainerLayer() const { ASSERT(fragmentContainer().layer()); return *fragmentContainer().layer(); }