• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2     Copyright (C) 2004, 2005, 2007, 2008 Nikolas Zimmermann <zimmermann@kde.org>
3                   2004, 2005, 2006 Rob Buis <buis@kde.org>
4 
5     This file is part of the KDE project
6 
7     This library is free software; you can redistribute it and/or
8     modify it under the terms of the GNU Library General Public
9     License as published by the Free Software Foundation; either
10     version 2 of the License, or (at your option) any later version.
11 
12     This library is distributed in the hope that it will be useful,
13     but WITHOUT ANY WARRANTY; without even the implied warranty of
14     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15     Library General Public License for more details.
16 
17     You should have received a copy of the GNU Library General Public License
18     along with this library; see the file COPYING.LIB.  If not, write to
19     the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
20     Boston, MA 02110-1301, USA.
21 */
22 
23 #include "config.h"
24 
25 #if ENABLE(SVG)
26 #include "SVGGElement.h"
27 
28 #include "RenderSVGTransformableContainer.h"
29 
30 namespace WebCore {
31 
SVGGElement(const QualifiedName & tagName,Document * doc)32 SVGGElement::SVGGElement(const QualifiedName& tagName, Document* doc)
33     : SVGStyledTransformableElement(tagName, doc)
34     , SVGTests()
35     , SVGLangSpace()
36     , SVGExternalResourcesRequired()
37 {
38 }
39 
~SVGGElement()40 SVGGElement::~SVGGElement()
41 {
42 }
43 
parseMappedAttribute(MappedAttribute * attr)44 void SVGGElement::parseMappedAttribute(MappedAttribute* attr)
45 {
46     if (SVGTests::parseMappedAttribute(attr))
47         return;
48     if (SVGLangSpace::parseMappedAttribute(attr))
49         return;
50     if (SVGExternalResourcesRequired::parseMappedAttribute(attr))
51         return;
52 
53     SVGStyledTransformableElement::parseMappedAttribute(attr);
54 }
55 
svgAttributeChanged(const QualifiedName & attrName)56 void SVGGElement::svgAttributeChanged(const QualifiedName& attrName)
57 {
58     SVGStyledTransformableElement::svgAttributeChanged(attrName);
59 
60     if (!renderer())
61         return;
62 
63     if (SVGTests::isKnownAttribute(attrName) ||
64         SVGLangSpace::isKnownAttribute(attrName) ||
65         SVGExternalResourcesRequired::isKnownAttribute(attrName) ||
66         SVGStyledTransformableElement::isKnownAttribute(attrName))
67         renderer()->setNeedsLayout(true);
68 }
69 
childrenChanged(bool changedByParser,Node * beforeChange,Node * afterChange,int childCountDelta)70 void SVGGElement::childrenChanged(bool changedByParser, Node* beforeChange, Node* afterChange, int childCountDelta)
71 {
72     SVGStyledTransformableElement::childrenChanged(changedByParser, beforeChange, afterChange, childCountDelta);
73 
74     if (renderer())
75         renderer()->setNeedsLayout(true);
76 }
77 
createRenderer(RenderArena * arena,RenderStyle *)78 RenderObject* SVGGElement::createRenderer(RenderArena* arena, RenderStyle*)
79 {
80     return new (arena) RenderSVGTransformableContainer(this);
81 }
82 
83 }
84 
85 #endif // ENABLE(SVG)
86