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

Side by Side Diff: Source/core/svg/properties/SVGAnimatedPropertyMacros.h

Issue 177803003: [SVG] Make all C-macros used in the old property implementation NOOP. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: styles Created 6 years, 9 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/SVGViewElement.cpp ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2004, 2005, 2006, 2007, 2008 Nikolas Zimmermann <zimmermann@kde .org> 2 * Copyright (C) 2004, 2005, 2006, 2007, 2008 Nikolas Zimmermann <zimmermann@kde .org>
3 * Copyright (C) 2004, 2005 Rob Buis <buis@kde.org> 3 * Copyright (C) 2004, 2005 Rob Buis <buis@kde.org>
4 * Copyright (C) Research In Motion Limited 2010-2011. All rights reserved. 4 * Copyright (C) Research In Motion Limited 2010-2011. All rights reserved.
5 * 5 *
6 * This library is free software; you can redistribute it and/or 6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Library General Public 7 * modify it under the terms of the GNU Library General Public
8 * License as published by the Free Software Foundation; either 8 * License as published by the Free Software Foundation; either
9 * version 2 of the License, or (at your option) any later version. 9 * version 2 of the License, or (at your option) any later version.
10 * 10 *
(...skipping 12 matching lines...) Expand all
23 #define SVGAnimatedPropertyMacros_h 23 #define SVGAnimatedPropertyMacros_h
24 24
25 #include "core/dom/Element.h" 25 #include "core/dom/Element.h"
26 #include "core/svg/properties/SVGAnimatedProperty.h" 26 #include "core/svg/properties/SVGAnimatedProperty.h"
27 #include "core/svg/properties/SVGAttributeToPropertyMap.h" 27 #include "core/svg/properties/SVGAttributeToPropertyMap.h"
28 #include "core/svg/properties/SVGPropertyTraits.h" 28 #include "core/svg/properties/SVGPropertyTraits.h"
29 #include "wtf/StdLibExtras.h" 29 #include "wtf/StdLibExtras.h"
30 30
31 namespace WebCore { 31 namespace WebCore {
32 32
33 // SVGSynchronizableAnimatedProperty implementation
34 template<typename PropertyType>
35 struct SVGSynchronizableAnimatedProperty {
36 SVGSynchronizableAnimatedProperty()
37 : value(SVGPropertyTraits<PropertyType>::initialValue())
38 , shouldSynchronize(false)
39 {
40 }
41
42 template<typename ConstructorParameter1>
43 SVGSynchronizableAnimatedProperty(const ConstructorParameter1& value1)
44 : value(value1)
45 , shouldSynchronize(false)
46 {
47 }
48
49 template<typename ConstructorParameter1, typename ConstructorParameter2>
50 SVGSynchronizableAnimatedProperty(const ConstructorParameter1& value1, const ConstructorParameter2& value2)
51 : value(value1, value2)
52 , shouldSynchronize(false)
53 {
54 }
55
56 void synchronize(Element* ownerElement, const QualifiedName& attrName, const AtomicString& value)
57 {
58 ownerElement->setSynchronizedLazyAttribute(attrName, value);
59 }
60
61 PropertyType value;
62 bool shouldSynchronize : 1;
63 };
64
65 // Property registration helpers 33 // Property registration helpers
66 #define BEGIN_REGISTER_ANIMATED_PROPERTIES(OwnerType) \ 34 #define BEGIN_REGISTER_ANIMATED_PROPERTIES(OwnerType)
67 SVGAttributeToPropertyMap& OwnerType::attributeToPropertyMap() \ 35 #define REGISTER_LOCAL_ANIMATED_PROPERTY(LowerProperty)
68 { \ 36 #define REGISTER_PARENT_ANIMATED_PROPERTIES(ClassName)
69 DEFINE_STATIC_LOCAL(SVGAttributeToPropertyMap, s_attributeToPropertyMap, ()) ; \ 37 #define END_REGISTER_ANIMATED_PROPERTIES
70 return s_attributeToPropertyMap; \
71 } \
72 \
73 SVGAttributeToPropertyMap& OwnerType::localAttributeToPropertyMap() const \
74 { \
75 return attributeToPropertyMap(); \
76 } \
77 \
78 void OwnerType::registerAnimatedPropertiesFor##OwnerType() \
79 { \
80 OwnerType::m_cleanupAnimatedPropertiesCaller.setOwner(this); \
81 SVGAttributeToPropertyMap& map = OwnerType::attributeToPropertyMap(); \
82 if (!map.isEmpty()) \
83 return; \
84 typedef OwnerType UseOwnerType;
85
86 #define REGISTER_LOCAL_ANIMATED_PROPERTY(LowerProperty) \
87 map.addProperty(UseOwnerType::LowerProperty##PropertyInfo());
88
89 #define REGISTER_PARENT_ANIMATED_PROPERTIES(ClassName) \
90 map.addProperties(ClassName::attributeToPropertyMap()); \
91
92 #define END_REGISTER_ANIMATED_PROPERTIES }
93 38
94 // Property declaration helpers (used in SVG*.h files) 39 // Property declaration helpers (used in SVG*.h files)
95 #define BEGIN_DECLARE_ANIMATED_PROPERTIES(OwnerType) \ 40 #define BEGIN_DECLARE_ANIMATED_PROPERTIES(OwnerType)
96 public: \ 41 #define DECLARE_ANIMATED_PROPERTY(TearOffType, PropertyType, UpperProperty, Lowe rProperty)
97 static SVGAttributeToPropertyMap& attributeToPropertyMap(); \ 42 #define END_DECLARE_ANIMATED_PROPERTIES
98 virtual SVGAttributeToPropertyMap& localAttributeToPropertyMap() const; \
99 void registerAnimatedPropertiesFor##OwnerType(); \
100 typedef OwnerType UseOwnerType;
101
102 #define DECLARE_ANIMATED_PROPERTY(TearOffType, PropertyType, UpperProperty, Lowe rProperty) \
103 public: \
104 static const SVGPropertyInfo* LowerProperty##PropertyInfo(); \
105 bool LowerProperty##Specified() const; \
106 PropertyType& LowerProperty##CurrentValue() const; \
107 PropertyType& LowerProperty##BaseValue() const; \
108 void set##UpperProperty##BaseValue(const PropertyType& type); \
109 PassRefPtr<TearOffType> LowerProperty(); \
110 \
111 private: \
112 void synchronize##UpperProperty(); \
113 static PassRefPtr<SVGAnimatedProperty> lookupOrCreate##UpperProperty##Wrappe r(SVGElement* maskedOwnerType); \
114 static void synchronize##UpperProperty(SVGElement* maskedOwnerType); \
115 \
116 mutable SVGSynchronizableAnimatedProperty<PropertyType> m_##LowerProperty;
117
118 #define END_DECLARE_ANIMATED_PROPERTIES \
119 CleanUpAnimatedPropertiesCaller m_cleanupAnimatedPropertiesCaller;
120 43
121 } 44 }
122 45
123 #endif // SVGAnimatedPropertyMacros_h 46 #endif // SVGAnimatedPropertyMacros_h
OLDNEW
« no previous file with comments | « Source/core/svg/SVGViewElement.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698