From: akling@apple.com Date: Mon, 2 Dec 2013 05:44:16 +0000 (+0000) Subject: SVG: Intersection/enclosure checks should use RenderElement. X-Git-Url: https://git.webkit.org/?p=WebKit-https.git;a=commitdiff_plain;h=7505c50114ea489d370f8fff603379fb9811063b SVG: Intersection/enclosure checks should use RenderElement. Make RenderSVGModelObject's checkIntersection() and checkEnclosure() take RenderElement* instead of RenderObject*. They are only ever called with SVGElement's renderers. Reviewed by Sam Weinig. git-svn-id: https://svn.webkit.org/repository/webkit/trunk@159912 268f45cc-cd09-0410-ab3c-d52691b4dbfc --- diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog index 74c74fb2985a..7aeca9c21e80 100644 --- a/Source/WebCore/ChangeLog +++ b/Source/WebCore/ChangeLog @@ -1,3 +1,14 @@ +2013-12-01 Andreas Kling + + SVG: Intersection/enclosure checks should use RenderElement. + + + Make RenderSVGModelObject's checkIntersection() and checkEnclosure() + take RenderElement* instead of RenderObject*. They are only ever + called with SVGElement's renderers. + + Reviewed by Sam Weinig. + 2013-12-01 Andreas Kling Remove unreachable labels for -webkit-margin-*-collapse properties. diff --git a/Source/WebCore/rendering/svg/RenderSVGModelObject.cpp b/Source/WebCore/rendering/svg/RenderSVGModelObject.cpp index 5ee337631172..77bde9cb73b0 100644 --- a/Source/WebCore/rendering/svg/RenderSVGModelObject.cpp +++ b/Source/WebCore/rendering/svg/RenderSVGModelObject.cpp @@ -155,9 +155,9 @@ static bool intersectsAllowingEmpty(const FloatRect& r, const FloatRect& other) // One of the element types that can cause graphics to be drawn onto the target canvas. Specifically: circle, ellipse, // image, line, path, polygon, polyline, rect, text and use. -static bool isGraphicsElement(RenderObject* renderer) +static bool isGraphicsElement(const RenderElement& renderer) { - return renderer->isSVGShape() || renderer->isSVGText() || renderer->isSVGImage() || renderer->node()->hasTagName(SVGNames::useTag); + return renderer.isSVGShape() || renderer.isSVGText() || renderer.isSVGImage() || renderer.element()->hasTagName(SVGNames::useTag); } // The SVG addFocusRingRects() method adds rects in local coordinates so the default absoluteFocusRingQuads @@ -167,27 +167,27 @@ void RenderSVGModelObject::absoluteFocusRingQuads(Vector& quads) quads.append(localToAbsoluteQuad(FloatQuad(repaintRectInLocalCoordinates()))); } -bool RenderSVGModelObject::checkIntersection(RenderObject* renderer, const FloatRect& rect) +bool RenderSVGModelObject::checkIntersection(RenderElement* renderer, const FloatRect& rect) { if (!renderer || renderer->style().pointerEvents() == PE_NONE) return false; - if (!isGraphicsElement(renderer)) + if (!isGraphicsElement(*renderer)) return false; AffineTransform ctm; - SVGElement* svgElement = toSVGElement(renderer->node()); + SVGElement* svgElement = toSVGElement(renderer->element()); getElementCTM(svgElement, ctm); ASSERT(svgElement->renderer()); return intersectsAllowingEmpty(rect, ctm.mapRect(svgElement->renderer()->repaintRectInLocalCoordinates())); } -bool RenderSVGModelObject::checkEnclosure(RenderObject* renderer, const FloatRect& rect) +bool RenderSVGModelObject::checkEnclosure(RenderElement* renderer, const FloatRect& rect) { if (!renderer || renderer->style().pointerEvents() == PE_NONE) return false; - if (!isGraphicsElement(renderer)) + if (!isGraphicsElement(*renderer)) return false; AffineTransform ctm; - SVGElement* svgElement = toSVGElement(renderer->node()); + SVGElement* svgElement = toSVGElement(renderer->element()); getElementCTM(svgElement, ctm); ASSERT(svgElement->renderer()); return rect.contains(ctm.mapRect(svgElement->renderer()->repaintRectInLocalCoordinates())); diff --git a/Source/WebCore/rendering/svg/RenderSVGModelObject.h b/Source/WebCore/rendering/svg/RenderSVGModelObject.h index 06fc12824e7e..f2486d541300 100644 --- a/Source/WebCore/rendering/svg/RenderSVGModelObject.h +++ b/Source/WebCore/rendering/svg/RenderSVGModelObject.h @@ -59,8 +59,8 @@ public: virtual const RenderObject* pushMappingToContainer(const RenderLayerModelObject* ancestorToStopAt, RenderGeometryMap&) const OVERRIDE FINAL; virtual void styleDidChange(StyleDifference, const RenderStyle* oldStyle) OVERRIDE; - static bool checkIntersection(RenderObject*, const FloatRect&); - static bool checkEnclosure(RenderObject*, const FloatRect&); + static bool checkIntersection(RenderElement*, const FloatRect&); + static bool checkEnclosure(RenderElement*, const FloatRect&); virtual FloatRect repaintRectInLocalCoordinatesExcludingSVGShadow() const { return repaintRectInLocalCoordinates(); } bool hasSVGShadow() const { return m_hasSVGShadow; }