diff options
Diffstat (limited to 'src/3rdparty/webkit/WebCore/svg/SVGAnimatedProperty.h')
-rw-r--r-- | src/3rdparty/webkit/WebCore/svg/SVGAnimatedProperty.h | 217 |
1 files changed, 0 insertions, 217 deletions
diff --git a/src/3rdparty/webkit/WebCore/svg/SVGAnimatedProperty.h b/src/3rdparty/webkit/WebCore/svg/SVGAnimatedProperty.h deleted file mode 100644 index 0e3ceda..0000000 --- a/src/3rdparty/webkit/WebCore/svg/SVGAnimatedProperty.h +++ /dev/null @@ -1,217 +0,0 @@ -/* - Copyright (C) 2008 Nikolas Zimmermann <zimmermann@kde.org> - Copyright (C) Research In Motion Limited 2009-2010. All rights reserved. - - 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. -*/ - -#ifndef SVGAnimatedProperty_h -#define SVGAnimatedProperty_h - -#if ENABLE(SVG) -#include "SVGAnimatedPropertySynchronizer.h" -#include "SVGAnimatedPropertyTraits.h" -#include "SVGAnimatedTemplate.h" - -namespace WebCore { - -template<typename AnimatedType> -class SVGAnimatedProperty; - -template<typename AnimatedType> -class SVGAnimatedPropertyTearOff : public SVGAnimatedTemplate<AnimatedType> { -public: - typedef typename SVGAnimatedPropertyTraits<AnimatedType>::PassType PassType; - typedef typename SVGAnimatedPropertyTraits<AnimatedType>::ReturnType ReturnType; - - typedef SVGAnimatedPropertyTearOff<AnimatedType> Self; - typedef SVGAnimatedProperty<AnimatedType> Creator; - - static PassRefPtr<Self> create(Creator& creator, SVGElement* contextElement) - { - return adoptRef(new Self(creator, contextElement)); - } - - virtual void setBaseVal(PassType type) - { - m_creator.setBaseValue(type); - m_contextElement->setSynchronizedSVGAttributes(false); - } - - virtual void setAnimVal(PassType type) - { - m_creator.setValue(type); - m_contextElement->setSynchronizedSVGAttributes(false); - } - - virtual ReturnType baseVal() const { return m_creator.baseValue(); } - virtual ReturnType animVal() const { return m_creator.value(); } - virtual const QualifiedName& associatedAttributeName() const { return m_creator.associatedAttributeName(); } - -private: - SVGAnimatedPropertyTearOff(Creator& creator, SVGElement* contextElement) - : m_creator(creator) - , m_contextElement(contextElement) - { - m_creator.setShouldSynchronize(true); - } - - virtual ~SVGAnimatedPropertyTearOff() - { - m_creator.setShouldSynchronize(false); - } - - Creator& m_creator; - RefPtr<SVGElement> m_contextElement; -}; - -template<typename AnimatedType> -class SVGAnimatedProperty { -public: - virtual ~SVGAnimatedProperty() { } - - typedef typename SVGAnimatedPropertyTraits<AnimatedType>::PassType PassType; - typedef typename SVGAnimatedPropertyTraits<AnimatedType>::ReturnType ReturnType; - typedef typename SVGAnimatedPropertyTraits<AnimatedType>::StoredType StoredType; - - SVGAnimatedProperty() - : m_value(SVGAnimatedPropertyTraits<AnimatedType>::null()) - , m_shouldSynchronize(false) - { - } - - template<typename ConstructorParameterOne> - SVGAnimatedProperty(const ConstructorParameterOne& value1) - : m_value(value1) - , m_shouldSynchronize(false) - { - } - - template<typename ConstructorParameterOne, typename ConstructorParameterTwo> - SVGAnimatedProperty(const ConstructorParameterOne& value1, const ConstructorParameterTwo& value2) - : m_value(value1, value2) - , m_shouldSynchronize(false) - { - } - - ReturnType value() const { return SVGAnimatedPropertyTraits<AnimatedType>::toReturnType(m_value); } - ReturnType baseValue() const { return SVGAnimatedPropertyTraits<AnimatedType>::toReturnType(m_value); } - - void setValue(PassType type) { m_value = type; } - void setBaseValue(PassType type) { m_value = type; } - - bool shouldSynchronize() const { return m_shouldSynchronize; } - void setShouldSynchronize(bool value) { m_shouldSynchronize = value; } - - virtual const QualifiedName& associatedAttributeName() const = 0; - -protected: - StoredType m_value; - bool m_shouldSynchronize; -}; - -}; - -// Helper macro used within DECLARE_ANIMATED_PROPERTY below -#define DEFINE_ANIMATED_PROPERTY(OwnerType, DOMAttribute, AnimatedType, UpperProperty) \ -class SVGAnimatedProperty##UpperProperty : public SVGAnimatedProperty<AnimatedType> { \ -public: \ - SVGAnimatedProperty##UpperProperty() \ - : SVGAnimatedProperty<AnimatedType>() \ - { \ - } \ - \ - template<typename ConstructorParameterOne> \ - SVGAnimatedProperty##UpperProperty(const ConstructorParameterOne& value1) \ - : SVGAnimatedProperty<AnimatedType>(value1) \ - { \ - } \ - \ - template<typename ConstructorParameterOne, typename ConstructorParameterTwo> \ - SVGAnimatedProperty##UpperProperty(const ConstructorParameterOne& value1, const ConstructorParameterTwo& value2) \ - : SVGAnimatedProperty<AnimatedType>(value1, value2) \ - { \ - } \ - \ - void synchronize(SVGElement* contextElement) \ - { \ - ASSERT(m_shouldSynchronize); \ - AtomicString value(SVGAnimatedPropertyTraits<AnimatedType>::toString(baseValue())); \ - SVGAnimatedPropertySynchronizer<IsDerivedFromSVGElement<OwnerType>::value>::synchronize(contextElement, DOMAttribute, value); \ - } \ - \ - virtual const QualifiedName& associatedAttributeName() const \ - { \ - return DOMAttribute; \ - } \ -} - -// Helper macro shared by DECLARE_ANIMATED_PROPERTY / DECLARE_ANIMATED_PROPERTY_MULTIPLE_WRAPPERS -#define DECLARE_ANIMATED_PROPERTY_SHARED(OwnerType, DOMAttribute, SVGDOMAttributeIdentifier, AnimatedType, UpperProperty, LowerProperty) \ -private: \ - typedef SVGAnimatedPropertyTearOff<AnimatedType> SVGAnimatedPropertyTearOff##UpperProperty; \ - DEFINE_ANIMATED_PROPERTY(OwnerType, DOMAttribute, AnimatedType, UpperProperty); \ - SVGAnimatedProperty##UpperProperty m_##LowerProperty; \ - \ -public: \ - SVGAnimatedPropertyTraits<AnimatedType>::ReturnType LowerProperty() const \ - { \ - return m_##LowerProperty.value(); \ - } \ - \ - SVGAnimatedPropertyTraits<AnimatedType>::ReturnType LowerProperty##BaseValue() const \ - { \ - return m_##LowerProperty.baseValue(); \ - } \ - \ - void set##UpperProperty(SVGAnimatedPropertyTraits<AnimatedType>::PassType type) \ - { \ - m_##LowerProperty.setValue(type); \ - SVGElement* contextElement = GetOwnerElementForType<OwnerType, IsDerivedFromSVGElement<OwnerType>::value>::ownerElement(this); \ - contextElement->setSynchronizedSVGAttributes(false); \ - } \ - \ - void set##UpperProperty##BaseValue(SVGAnimatedPropertyTraits<AnimatedType>::PassType type) \ - { \ - m_##LowerProperty.setBaseValue(type); \ - SVGElement* contextElement = GetOwnerElementForType<OwnerType, IsDerivedFromSVGElement<OwnerType>::value>::ownerElement(this); \ - contextElement->setSynchronizedSVGAttributes(false); \ - } \ - \ - void synchronize##UpperProperty() \ - { \ - if (!m_##LowerProperty.shouldSynchronize()) \ - return; \ - SVGElement* contextElement = GetOwnerElementForType<OwnerType, IsDerivedFromSVGElement<OwnerType>::value>::ownerElement(this); \ - m_##LowerProperty.synchronize(contextElement); \ - } \ - \ - PassRefPtr<SVGAnimatedPropertyTearOff##UpperProperty> LowerProperty##Animated() \ - { \ - SVGElement* contextElement = GetOwnerElementForType<OwnerType, IsDerivedFromSVGElement<OwnerType>::value>::ownerElement(this); \ - return lookupOrCreateWrapper<AnimatedType, SVGAnimatedPropertyTearOff##UpperProperty>(contextElement, m_##LowerProperty, DOMAttribute); \ - } - -// Used for SVG DOM properties that map exactly to one XML DOM attribute -#define DECLARE_ANIMATED_PROPERTY(OwnerType, DOMAttribute, AnimatedType, UpperProperty, LowerProperty) \ -DECLARE_ANIMATED_PROPERTY_SHARED(OwnerType, DOMAttribute, DOMAttribute.localName(), AnimatedType, UpperProperty, LowerProperty) - -// Used for the rare case multiple SVG DOM properties that map to the same XML dom attribute -#define DECLARE_ANIMATED_PROPERTY_MULTIPLE_WRAPPERS(OwnerType, DOMAttribute, SVGDOMAttributeIdentifier, AnimatedType, UpperProperty, LowerProperty) \ -DECLARE_ANIMATED_PROPERTY_SHARED(OwnerType, DOMAttribute, SVGDOMAttributeIdentifier, AnimatedType, UpperProperty, LowerProperty) - -#endif -#endif |