Have is<>(T*) function do a null check on the pointer argument
[WebKit-https.git] / Source / WebCore / svg / SVGLocatable.cpp
index cad52c8..9f2a554 100644 (file)
@@ -21,8 +21,6 @@
  */
 
 #include "config.h"
-
-#if ENABLE(SVG)
 #include "SVGLocatable.h"
 
 #include "RenderElement.h"
@@ -38,7 +36,7 @@ static bool isViewportElement(Node* node)
     return (node->hasTagName(SVGNames::svgTag)
         || node->hasTagName(SVGNames::symbolTag)
         || node->hasTagName(SVGNames::foreignObjectTag)
-        || isSVGImageElement(node));
+        || is<SVGImageElement>(*node));
 }
 
 SVGElement* SVGLocatable::nearestViewportElement(const SVGElement* element)
@@ -46,19 +44,19 @@ SVGElement* SVGLocatable::nearestViewportElement(const SVGElement* element)
     ASSERT(element);
     for (Element* current = element->parentOrShadowHostElement(); current; current = current->parentOrShadowHostElement()) {
         if (isViewportElement(current))
-            return toSVGElement(current);
+            return downcast<SVGElement>(current);
     }
 
-    return 0;
+    return nullptr;
 }
 
 SVGElement* SVGLocatable::farthestViewportElement(const SVGElement* element)
 {
     ASSERT(element);
-    SVGElement* farthest = 0;
+    SVGElement* farthest = nullptr;
     for (Element* current = element->parentOrShadowHostElement(); current; current = current->parentOrShadowHostElement()) {
         if (isViewportElement(current))
-            farthest = toSVGElement(current);
+            farthest = downcast<SVGElement>(current);
     }
     return farthest;
 }
@@ -84,12 +82,12 @@ AffineTransform SVGLocatable::computeCTM(SVGElement* element, CTMScope mode, Sty
 
     AffineTransform ctm;
 
-    SVGElement* stopAtElement = mode == NearestViewportScope ? nearestViewportElement(element) : 0;
+    SVGElement* stopAtElement = mode == NearestViewportScope ? nearestViewportElement(element) : nullptr;
     for (Element* currentElement = element; currentElement; currentElement = currentElement->parentOrShadowHostElement()) {
         if (!currentElement->isSVGElement())
             break;
 
-        ctm = toSVGElement(currentElement)->localCoordinateSpaceTransform(mode).multiply(ctm);
+        ctm = downcast<SVGElement>(*currentElement).localCoordinateSpaceTransform(mode).multiply(ctm);
 
         // For getCTM() computation, stop at the nearest viewport element
         if (currentElement == stopAtElement)
@@ -103,8 +101,8 @@ AffineTransform SVGLocatable::getTransformToElement(SVGElement* target, Exceptio
 {
     AffineTransform ctm = getCTM(styleUpdateStrategy);
 
-    if (target && target->isSVGGraphicsElement()) {
-        AffineTransform targetCTM = toSVGGraphicsElement(target)->getCTM(styleUpdateStrategy);
+    if (is<SVGGraphicsElement>(target)) {
+        AffineTransform targetCTM = downcast<SVGGraphicsElement>(*target).getCTM(styleUpdateStrategy);
         if (!targetCTM.isInvertible()) {
             ec = SVGException::SVG_MATRIX_NOT_INVERTABLE;
             return ctm;
@@ -116,5 +114,3 @@ AffineTransform SVGLocatable::getTransformToElement(SVGElement* target, Exceptio
 }
 
 }
-
-#endif // ENABLE(SVG)