Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1362)

Side by Side Diff: Source/core/svg/SVGStyledElement.h

Issue 21042009: [SVG2] Merge SVGStyledElement into SVGElement (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Rebase on master Created 7 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « Source/core/svg/SVGStopElement.idl ('k') | Source/core/svg/SVGStyledElement.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 /*
2 * Copyright (C) 2004, 2005, 2006, 2007, 2008 Nikolas Zimmermann <zimmermann@kde .org>
3 * Copyright (C) 2004, 2005, 2007 Rob Buis <buis@kde.org>
4 *
5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Library General Public
7 * License as published by the Free Software Foundation; either
8 * version 2 of the License, or (at your option) any later version.
9 *
10 * This library is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Library General Public License for more details.
14 *
15 * You should have received a copy of the GNU Library General Public License
16 * along with this library; see the file COPYING.LIB. If not, write to
17 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18 * Boston, MA 02110-1301, USA.
19 */
20
21 #ifndef SVGStyledElement_h
22 #define SVGStyledElement_h
23
24 #include "CSSPropertyNames.h"
25 #include "core/svg/SVGAnimatedString.h"
26 #include "core/svg/SVGElement.h"
27 #include "core/svg/SVGLocatable.h"
28 #include "wtf/HashSet.h"
29 #include "wtf/PassRefPtr.h"
30
31 namespace WebCore {
32
33 void mapAttributeToCSSProperty(HashMap<StringImpl*, CSSPropertyID>* propertyName ToIdMap, const QualifiedName& attrName);
34
35 class CSSValue;
36 class CSSStyleDeclaration;
37
38 // FIXME(webkit.org/b/107386): SVGStyledElement should be merged into SVGElement as specified by SVG2.
39 class SVGStyledElement : public SVGElement {
40 public:
41 virtual String title() const;
42
43 bool hasRelativeLengths() const { return !m_elementsWithRelativeLengths.isEm pty(); }
44
45 virtual bool supportsMarkers() const { return false; }
46
47 PassRefPtr<CSSValue> getPresentationAttribute(const String& name);
48
49 bool isKnownAttribute(const QualifiedName&);
50
51 bool instanceUpdatesBlocked() const;
52 void setInstanceUpdatesBlocked(bool);
53
54 virtual void animatedPropertyTypeForAttribute(const QualifiedName&, Vector<A nimatedPropertyType>&);
55 static bool isAnimatableCSSProperty(const QualifiedName&);
56
57 virtual AffineTransform localCoordinateSpaceTransform(SVGLocatable::CTMScope ) const;
58
59 virtual bool needsPendingResourceHandling() const { return true; }
60
61 protected:
62 SVGStyledElement(const QualifiedName&, Document*, ConstructionType = CreateS VGElement);
63 virtual bool rendererIsNeeded(const NodeRenderingContext&);
64
65 virtual void parseAttribute(const QualifiedName&, const AtomicString&) OVERR IDE;
66 virtual bool isPresentationAttribute(const QualifiedName&) const OVERRIDE;
67 virtual void collectStyleForPresentationAttribute(const QualifiedName&, cons t AtomicString&, MutableStylePropertySet*) OVERRIDE;
68 virtual void svgAttributeChanged(const QualifiedName&) OVERRIDE;
69
70 virtual InsertionNotificationRequest insertedInto(ContainerNode*) OVERRIDE;
71 virtual void removedFrom(ContainerNode*) OVERRIDE;
72 virtual void childrenChanged(bool changedByParser = false, Node* beforeChang e = 0, Node* afterChange = 0, int childCountDelta = 0);
73
74 static CSSPropertyID cssPropertyIdForSVGAttributeName(const QualifiedName&);
75 void updateRelativeLengthsInformation() { updateRelativeLengthsInformation(s elfHasRelativeLengths(), this); }
76 void updateRelativeLengthsInformation(bool hasRelativeLengths, SVGStyledElem ent*);
77
78 virtual bool selfHasRelativeLengths() const { return false; }
79
80 private:
81 virtual bool isSVGStyledElement() const OVERRIDE { return true; }
82
83 void buildPendingResourcesIfNeeded();
84
85 HashSet<SVGStyledElement*> m_elementsWithRelativeLengths;
86
87 BEGIN_DECLARE_ANIMATED_PROPERTIES(SVGStyledElement)
88 DECLARE_ANIMATED_STRING(ClassName, className)
89 END_DECLARE_ANIMATED_PROPERTIES
90 };
91
92 inline SVGStyledElement* toSVGStyledElement(Node* node)
93 {
94 ASSERT_WITH_SECURITY_IMPLICATION(!node || (node->isStyledElement() && node-> isSVGElement()));
95 return static_cast<SVGStyledElement*>(node);
96 }
97
98 } // namespace WebCore
99
100 #endif // SVGStyledElement
OLDNEW
« no previous file with comments | « Source/core/svg/SVGStopElement.idl ('k') | Source/core/svg/SVGStyledElement.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698