Home | History | Annotate | Download | only in rendering
      1 /*
      2     Copyright (C) 2004, 2005 Nikolas Zimmermann <zimmermann (at) kde.org>
      3                   2004, 2005, 2006 Rob Buis <buis (at) kde.org>
      4                   2009 Google, Inc.
      5 
      6     This library is free software; you can redistribute it and/or
      7     modify it under the terms of the GNU Library General Public
      8     License as published by the Free Software Foundation; either
      9     version 2 of the License, or (at your option) any later version.
     10 
     11     This library is distributed in the hope that it will be useful,
     12     but WITHOUT ANY WARRANTY; without even the implied warranty of
     13     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     14     Library General Public License for more details.
     15 
     16     You should have received a copy of the GNU Library General Public License
     17     along with this library; see the file COPYING.LIB.  If not, write to
     18     the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
     19     Boston, MA 02110-1301, USA.
     20  */
     21 
     22 #include "config.h"
     23 
     24 #if ENABLE(SVG)
     25 #include "RenderSVGTransformableContainer.h"
     26 
     27 #include "SVGShadowTreeElements.h"
     28 #include "SVGStyledTransformableElement.h"
     29 
     30 namespace WebCore {
     31 
     32 RenderSVGTransformableContainer::RenderSVGTransformableContainer(SVGStyledTransformableElement* node)
     33     : RenderSVGContainer(node)
     34 {
     35 }
     36 
     37 const AffineTransform& RenderSVGTransformableContainer::localToParentTransform() const
     38 {
     39     return m_localTransform;
     40 }
     41 
     42 AffineTransform RenderSVGTransformableContainer::localTransform() const
     43 {
     44     return m_localTransform;
     45 }
     46 
     47 void RenderSVGTransformableContainer::calculateLocalTransform()
     48 {
     49     m_localTransform = static_cast<SVGStyledTransformableElement*>(node())->animatedLocalTransform();
     50     if (!node()->hasTagName(SVGNames::gTag) || !static_cast<SVGGElement*>(node())->isShadowTreeContainerElement())
     51         return;
     52 
     53     FloatSize translation = static_cast<SVGShadowTreeContainerElement*>(node())->containerTranslation();
     54     if (translation.width() == 0 && translation.height() == 0)
     55         return;
     56 
     57     m_localTransform.translate(translation.width(), translation.height());
     58 }
     59 
     60 }
     61 
     62 #endif // ENABLE(SVG)
     63