LayoutRect RenderLayerClipper::selfClipRect() const { // FIXME: border-radius not accounted for. RenderView* renderView = m_renderer->view(); RenderLayer* clippingRootLayer = clippingRootForPainting(); LayoutRect layerBounds; ClipRect backgroundRect, foregroundRect, outlineRect; ClipRectsContext clipRectsContext(clippingRootLayer, PaintingClipRects); calculateRects(clipRectsContext, renderView->documentRect(), layerBounds, backgroundRect, foregroundRect, outlineRect); return clippingRootLayer->renderer()->localToAbsoluteQuad(FloatQuad(backgroundRect.rect())).enclosingBoundingBox(); }
LayoutRect RenderLayerClipper::childrenClipRect() const { // FIXME: border-radius not accounted for. // FIXME: Regions not accounted for. RenderLayer* clippingRootLayer = clippingRootForPainting(); LayoutRect layerBounds; ClipRect backgroundRect, foregroundRect, outlineRect; // Need to use uncached clip rects, because the value of 'dontClipToOverflow' may be different from the painting path (<rdar://problem/11844909>). ClipRectsContext context(clippingRootLayer, UncachedClipRects); calculateRects(context, m_renderer.view()->unscaledDocumentRect(), layerBounds, backgroundRect, foregroundRect, outlineRect); return clippingRootLayer->renderer()->localToAbsoluteQuad(FloatQuad(foregroundRect.rect())).enclosingBoundingBox(); }
LayoutRect RenderLayerClipper::localClipRect() const { // FIXME: border-radius not accounted for. RenderLayer* clippingRootLayer = clippingRootForPainting(); LayoutRect layerBounds; ClipRect backgroundRect, foregroundRect, outlineRect; ClipRectsContext context(clippingRootLayer, PaintingClipRects); calculateRects(context, PaintInfo::infiniteRect(), layerBounds, backgroundRect, foregroundRect, outlineRect); LayoutRect clipRect = backgroundRect.rect(); if (clipRect == PaintInfo::infiniteRect()) return clipRect; LayoutPoint clippingRootOffset; m_renderer.layer()->convertToLayerCoords(clippingRootLayer, clippingRootOffset); clipRect.moveBy(-clippingRootOffset); return clipRect; }