diff options
author | The Android Open Source Project <initial-contribution@android.com> | 2009-03-03 18:28:41 -0800 |
---|---|---|
committer | The Android Open Source Project <initial-contribution@android.com> | 2009-03-03 18:28:41 -0800 |
commit | 648161bb0edfc3d43db63caed5cc5213bc6cb78f (patch) | |
tree | 4b825dc642cb6eb9a060e54bf8d69288fbee4904 /WebCore/svg/SVGLocatable.cpp | |
parent | a65af38181ac7d34544586bdb5cd004de93897ad (diff) | |
download | external_webkit-648161bb0edfc3d43db63caed5cc5213bc6cb78f.zip external_webkit-648161bb0edfc3d43db63caed5cc5213bc6cb78f.tar.gz external_webkit-648161bb0edfc3d43db63caed5cc5213bc6cb78f.tar.bz2 |
auto import from //depot/cupcake/@135843
Diffstat (limited to 'WebCore/svg/SVGLocatable.cpp')
-rw-r--r-- | WebCore/svg/SVGLocatable.cpp | 159 |
1 files changed, 0 insertions, 159 deletions
diff --git a/WebCore/svg/SVGLocatable.cpp b/WebCore/svg/SVGLocatable.cpp deleted file mode 100644 index 956a4f9..0000000 --- a/WebCore/svg/SVGLocatable.cpp +++ /dev/null @@ -1,159 +0,0 @@ -/* - Copyright (C) 2004, 2005 Nikolas Zimmermann <wildfox@kde.org> - 2004, 2005, 2006 Rob Buis <buis@kde.org> - - This file is part of the KDE project - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. -*/ - -#include "config.h" -#if ENABLE(SVG) - -#include "SVGLocatable.h" - -#include "AffineTransform.h" -#include "RenderPath.h" -#include "SVGException.h" -#include "SVGSVGElement.h" - -namespace WebCore { - -SVGLocatable::SVGLocatable() -{ -} - -SVGLocatable::~SVGLocatable() -{ -} - -SVGElement* SVGLocatable::nearestViewportElement(const SVGElement* e) -{ - Node* n = e->parentNode(); - while (n && !n->isDocumentNode()) { - if (n->hasTagName(SVGNames::svgTag) || n->hasTagName(SVGNames::symbolTag) || - n->hasTagName(SVGNames::imageTag)) - return static_cast<SVGElement*>(n); -#if ENABLE(SVG_FOREIGN_OBJECT) - if (n->hasTagName(SVGNames::foreignObjectTag)) - return static_cast<SVGElement*>(n); -#endif - - n = n->parentNode(); - } - - return 0; -} - -SVGElement* SVGLocatable::farthestViewportElement(const SVGElement* e) -{ - // FIXME : likely this will be always the <svg> farthest away. - // If we have a different implementation of documentElement(), one - // that give the documentElement() of the svg fragment, it could be - // used instead. This depends on cdf demands though(Rob.) - SVGElement* farthest = 0; - Node* n = e->parentNode(); - while (n && !n->isDocumentNode()) { - if (n->hasTagName(SVGNames::svgTag) || n->hasTagName(SVGNames::symbolTag) || - n->hasTagName(SVGNames::imageTag)) - farthest = static_cast<SVGElement*>(n); -#if ENABLE(SVG_FOREIGN_OBJECT) - if (n->hasTagName(SVGNames::foreignObjectTag)) - farthest = static_cast<SVGElement*>(n); -#endif - - n = n->parentNode(); - } - - return farthest; -} - -// Spec: -// http://www.w3.org/TR/2005/WD-SVGMobile12-20050413/svgudom.html#svg::SVGLocatable -FloatRect SVGLocatable::getBBox(const SVGElement* e) -{ - FloatRect bboxRect; - - e->document()->updateLayoutIgnorePendingStylesheets(); - - if (e && e->renderer()) { - // Need this to make sure we have render object dimensions. - // See bug 11686. - bboxRect = e->renderer()->relativeBBox(false); - } - - return bboxRect; -} - -AffineTransform SVGLocatable::getCTM(const SVGElement* element) -{ - if (!element) - return AffineTransform(); - - AffineTransform ctm; - - Node* parent = element->parentNode(); - if (parent && parent->isSVGElement()) { - SVGElement* parentElement = static_cast<SVGElement*>(parent); - if (parentElement && parentElement->isStyledLocatable()) { - AffineTransform parentCTM = static_cast<SVGStyledLocatableElement*>(parentElement)->getCTM(); - ctm = parentCTM * ctm; - } - } - - return ctm; -} - -AffineTransform SVGLocatable::getScreenCTM(const SVGElement* element) -{ - if (!element) - return AffineTransform(); - - AffineTransform ctm; - - Node* parent = element->parentNode(); - if (parent && parent->isSVGElement()) { - SVGElement* parentElement = static_cast<SVGElement*>(parent); - if (parentElement && parentElement->isStyledLocatable()) { - AffineTransform parentCTM = static_cast<SVGStyledLocatableElement*>(parentElement)->getScreenCTM(); - ctm = parentCTM * ctm; - } - } - - return ctm; -} - -AffineTransform SVGLocatable::getTransformToElement(SVGElement* target, ExceptionCode& ec) const -{ - AffineTransform ctm = getCTM(); - - if (target && target->isStyledLocatable()) { - AffineTransform targetCTM = static_cast<SVGStyledLocatableElement*>(target)->getCTM(); - if (!targetCTM.isInvertible()) { - ec = SVGException::SVG_MATRIX_NOT_INVERTABLE; - return ctm; - } - ctm *= targetCTM.inverse(); - } - - return ctm; -} - -} - -#endif // ENABLE(SVG) - -// vim:ts=4:noet |