// Copied from RenderBox, this method likely requires further refactoring to work easily for both SVG and CSS Box Model content. // FIXME: This may also need to move into SVGRenderSupport as the RenderBox version depends // on borderBoundingBox() which SVG RenderBox subclases (like SVGRenderBlock) do not implement. LayoutRect RenderSVGModelObject::outlineBoundsForRepaint(const RenderLayerModelObject* repaintContainer, const RenderGeometryMap*) const { LayoutRect box = enclosingLayoutRect(repaintRectInLocalCoordinates()); adjustRectForOutlineAndShadow(box); FloatQuad containerRelativeQuad = localToContainerQuad(FloatRect(box), repaintContainer); return containerRelativeQuad.enclosingBoundingBox(); }
// Copied from RenderBox, this method likely requires further refactoring to work easily for both SVG and CSS Box Model content. // FIXME: This may also need to move into SVGRenderSupport as the RenderBox version depends // on borderBoundingBox() which SVG RenderBox subclases (like SVGRenderBlock) do not implement. IntRect RenderSVGModelObject::outlineBoundsForRepaint(RenderBoxModelObject* repaintContainer, IntPoint*) const { IntRect box = enclosingIntRect(repaintRectInLocalCoordinates()); adjustRectForOutlineAndShadow(box); FloatQuad containerRelativeQuad = localToContainerQuad(FloatRect(box), repaintContainer); return containerRelativeQuad.enclosingBoundingBox(); }
// Copied from RenderBox, this method likely requires further refactoring to work easily for both SVG and CSS Box Model content. // FIXME: This may also need to move into SVGRenderSupport as the RenderBox version depends // on borderBoundingBox() which SVG RenderBox subclases (like SVGRenderBlock) do not implement. LayoutRect RenderSVGModelObject::outlineBoundsForRepaint(const RenderLayerModelObject* repaintContainer, const RenderGeometryMap*) const { LayoutRect box = enclosingLayoutRect(repaintRectInLocalCoordinates()); adjustRectForOutlineAndShadow(box); FloatQuad containerRelativeQuad = localToContainerQuad(FloatRect(box), repaintContainer); return LayoutRect(snapRectToDevicePixels(LayoutRect(containerRelativeQuad.boundingBox()), document().deviceScaleFactor())); }
LayoutRect RenderReplaced::selectionRectForRepaint(const RenderLayerModelObject* repaintContainer, bool clipToVisibleContent) { ASSERT(!needsLayout()); if (!isSelected()) return LayoutRect(); LayoutRect rect = localSelectionRect(); if (clipToVisibleContent) return computeRectForRepaint(rect, repaintContainer); return localToContainerQuad(FloatRect(rect), repaintContainer).enclosingBoundingBox(); }
IntRect RenderReplaced::selectionRectForRepaint(RenderBoxModelObject* repaintContainer, bool clipToVisibleContent) { ASSERT(!needsLayout()); if (!isSelected()) return IntRect(); IntRect rect = localSelectionRect(); if (clipToVisibleContent) computeRectForRepaint(repaintContainer, rect); else rect = localToContainerQuad(FloatRect(rect), repaintContainer).enclosingBoundingBox(); return rect; }
LayoutRect RenderReplaced::selectionRectForPaintInvalidation(const RenderLayerModelObject* paintInvalidationContainer, bool clipToVisibleContent) { ASSERT(!needsLayout()); if (!isSelected()) return LayoutRect(); LayoutRect rect = localSelectionRect(); if (clipToVisibleContent) mapRectToPaintInvalidationBacking(paintInvalidationContainer, rect); else rect = localToContainerQuad(FloatRect(rect), paintInvalidationContainer).enclosingBoundingBox(); return rect; }
FloatQuad RenderSVGInlineText::computeRepaintQuadForRange(RenderBoxModelObject* repaintContainer, int startPos, int endPos) { RenderBlock* cb = containingBlock(); if (!cb || !cb->container()) return FloatQuad(); RenderSVGRoot* root = findSVGRootObject(parent()); if (!root) return FloatQuad(); IntRect rect; for (InlineTextBox* box = firstTextBox(); box; box = box->nextTextBox()) rect.unite(box->selectionRect(0, 0, startPos, endPos)); return localToContainerQuad(FloatQuad(rect), repaintContainer); }