Source/WebCore/ChangeLog

 12011-09-03 Dirk Schulze <krit@webkit.org>
 2
 3 SVGAnimatedType should support SVGAnimatedIntegerOptionalInteger animation
 4 https://bugs.webkit.org/show_bug.cgi?id=67563
 5
 6 Reviewed by NOBODY (OOPS!).
 7
 8 Follow up of "SVGAnimation should use direct unit animation for SVGLength": https://bugs.webkit.org/show_bug.cgi?id=61368
 9 This patch continues the conversion to the new concept of SVGAnimatorFactory with SVGAnimatedIntegerOptionalInteger.
 10
 11 SVGAnimatedIntegerOptionalInteger is used for the SVG attributes 'filterRes' and 'order'. Right now we animate them as
 12 SVGAnimatedNumberOptionalNumber. But to implement the animVal and baseVal concept we need to fix it first.
 13
 14 No new tests. Existing tests verify the correct behavior.
 15
 16 * CMakeLists.txt:
 17 * GNUmakefile.list.am:
 18 * WebCore.gypi:
 19 * WebCore.pro:
 20 * WebCore.vcproj/WebCore.vcproj:
 21 * WebCore.xcodeproj/project.pbxproj:
 22 * svg/SVGAllInOne.cpp:
 23 * svg/SVGAnimatedInteger.h:
 24 * svg/SVGAnimatedIntegerOptionalInteger.cpp: Added.
 25 (WebCore::SVGAnimatedIntegerOptionalIntegerAnimator::SVGAnimatedIntegerOptionalIntegerAnimator):
 26 (WebCore::SVGAnimatedIntegerOptionalIntegerAnimator::constructFromString):
 27 (WebCore::SVGAnimatedIntegerOptionalIntegerAnimator::calculateFromAndToValues):
 28 (WebCore::SVGAnimatedIntegerOptionalIntegerAnimator::calculateFromAndByValues):
 29 (WebCore::SVGAnimatedIntegerOptionalIntegerAnimator::calculateAnimatedValue):
 30 (WebCore::SVGAnimatedIntegerOptionalIntegerAnimator::calculateDistance):
 31 * svg/SVGAnimatedIntegerOptionalInteger.h: Added.
 32 (WebCore::SVGAnimatedIntegerOptionalIntegerAnimator::~SVGAnimatedIntegerOptionalIntegerAnimator):
 33 * svg/SVGAnimatedType.cpp:
 34 (WebCore::SVGAnimatedType::~SVGAnimatedType):
 35 (WebCore::SVGAnimatedType::createIntegerOptionalInteger):
 36 (WebCore::SVGAnimatedType::integerOptionalInteger):
 37 (WebCore::SVGAnimatedType::valueAsString):
 38 (WebCore::SVGAnimatedType::setValueAsString):
 39 * svg/SVGAnimatedType.h:
 40 * svg/SVGAnimatorFactory.h:
 41 (WebCore::SVGAnimatorFactory::create):
 42 * svg/properties/SVGPropertyInfo.h:
 43
1442011-09-03 Andrew Wason <rectalogic@rectalogic.com>
245
346 [Qt] Enable support for WebGL OES_standard_derivatives for Qt
94489

Source/WebCore/CMakeLists.txt

@@IF (ENABLE_SVG)
16441644 svg/SVGAnimatedBoolean.cpp
16451645 svg/SVGAnimatedColor.cpp
16461646 svg/SVGAnimatedInteger.cpp
 1647 svg/SVGAnimatedIntegerOptionalInteger.cpp
16471648 svg/SVGAnimatedLength.cpp
16481649 svg/SVGAnimatedLengthList.cpp
16491650 svg/SVGAnimatedNumber.cpp
94086

Source/WebCore/GNUmakefile.list.am

@@webcore_sources += \
34853485 Source/WebCore/svg/SVGAnimatedEnumeration.h \
34863486 Source/WebCore/svg/SVGAnimatedInteger.cpp \
34873487 Source/WebCore/svg/SVGAnimatedInteger.h \
 3488 Source/WebCore/svg/SVGAnimatedIntegerOptionalInteger.cpp \
 3489 Source/WebCore/svg/SVGAnimatedIntegerOptionalInteger.h \
34883490 Source/WebCore/svg/SVGAnimatedLength.cpp \
34893491 Source/WebCore/svg/SVGAnimatedLength.h \
34903492 Source/WebCore/svg/SVGAnimatedLengthList.cpp \
94086

Source/WebCore/WebCore.gypi

10631063 'svg/SVGAnimatedColor.h',
10641064 'svg/SVGAnimatedEnumeration.h',
10651065 'svg/SVGAnimatedInteger.h',
 1066 'svg/SVGAnimatedIntegerOptionalInteger.h'
10661067 'svg/SVGAnimatedLength.h',
10671068 'svg/SVGAnimatedLengthList.h',
10681069 'svg/SVGAnimatedNumber.h',

59415942 'svg/SVGAnimatedBoolean.cpp',
59425943 'svg/SVGAnimatedColor.cpp',
59435944 'svg/SVGAnimatedInteger.cpp',
 5945 'svg/SVGAnimatedIntegerOptionalInteger.cpp',
59445946 'svg/SVGAnimatedLength.cpp',
59455947 'svg/SVGAnimatedLengthList.cpp',
59465948 'svg/SVGAnimatedNumber.cpp',
94086

Source/WebCore/WebCore.pro

@@HEADERS += \
23552355 svg/SVGAnimatedColor.h \
23562356 svg/SVGAnimatedEnumeration.h \
23572357 svg/SVGAnimatedInteger.h \
 2358 svg/SVGAnimatedIntegerOptionalInteger.h \
23582359 svg/SVGAnimatedLength.h \
23592360 svg/SVGAnimatedLengthList.h \
23602361 svg/SVGAnimatedNumber.h \

@@contains(DEFINES, ENABLE_SVG=1) {
33873388 svg/SVGAnimatedBoolean.cpp \
33883389 svg/SVGAnimatedColor.cpp \
33893390 svg/SVGAnimatedInteger.cpp \
 3391 svg/SVGAnimatedIntegerOptionalInteger.cpp \
33903392 svg/SVGAnimatedLength.cpp \
33913393 svg/SVGAnimatedLengthList.cpp \
33923394 svg/SVGAnimatedNumber.cpp \
94086

Source/WebCore/WebCore.vcproj/WebCore.vcproj

6622666226 >
6622766227 </File>
6622866228 <File
 66229 RelativePath="..\svg\SVGAnimatedIntegerOptionalInteger.h"
 66230 >
 66231 </File>
 66232 <File
6622966233 RelativePath="..\svg\SVGAnimatedLength.h"
6623066234 >
6623166235 </File>
94086

Source/WebCore/WebCore.xcodeproj/project.pbxproj

10541054 43A6266713B3D11000AC94B8 /* SVGAnimatedString.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43A6266613B3D11000AC94B8 /* SVGAnimatedString.cpp */; };
10551055 43B9336913B261B1004584BF /* SVGAnimatedPointList.h in Headers */ = {isa = PBXBuildFile; fileRef = 43B9336713B261B1004584BF /* SVGAnimatedPointList.h */; };
10561056 43B9336A13B261B1004584BF /* SVGAnimatedPointList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43B9336813B261B1004584BF /* SVGAnimatedPointList.cpp */; };
 1057 43BD6B861410E2D3009891DC /* SVGAnimatedIntegerOptionalInteger.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43BD6B851410E2D2009891DC /* SVGAnimatedIntegerOptionalInteger.cpp */; };
 1058 43BD6B881410E312009891DC /* SVGAnimatedIntegerOptionalInteger.h in Headers */ = {isa = PBXBuildFile; fileRef = 43BD6B871410E312009891DC /* SVGAnimatedIntegerOptionalInteger.h */; };
10571059 43C092BC12D9E4EE00A989C3 /* RenderSVGForeignObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 43C092BA12D9E4EE00A989C3 /* RenderSVGForeignObject.h */; };
10581060 43D2597713C816F400608559 /* ImageBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43D2597613C816F400608559 /* ImageBuffer.cpp */; };
10591061 43F6FD9613BCD0B100224052 /* SVGAnimatedInteger.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43F6FD9513BCD0B100224052 /* SVGAnimatedInteger.cpp */; };

76487650 43A6266613B3D11000AC94B8 /* SVGAnimatedString.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGAnimatedString.cpp; sourceTree = "<group>"; };
76497651 43B9336713B261B1004584BF /* SVGAnimatedPointList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGAnimatedPointList.h; sourceTree = "<group>"; };
76507652 43B9336813B261B1004584BF /* SVGAnimatedPointList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGAnimatedPointList.cpp; sourceTree = "<group>"; };
 7653 43BD6B851410E2D2009891DC /* SVGAnimatedIntegerOptionalInteger.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGAnimatedIntegerOptionalInteger.cpp; sourceTree = "<group>"; };
 7654 43BD6B871410E312009891DC /* SVGAnimatedIntegerOptionalInteger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGAnimatedIntegerOptionalInteger.h; sourceTree = "<group>"; };
76517655 43C092B912D9E4EE00A989C3 /* RenderSVGForeignObject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderSVGForeignObject.cpp; sourceTree = "<group>"; };
76527656 43C092BA12D9E4EE00A989C3 /* RenderSVGForeignObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderSVGForeignObject.h; sourceTree = "<group>"; };
76537657 43D2597613C816F400608559 /* ImageBuffer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ImageBuffer.cpp; sourceTree = "<group>"; };

1766117665 B22277E80D00BF1F0071B782 /* SVGAnimatedEnumeration.idl */,
1766217666 43F6FD9513BCD0B100224052 /* SVGAnimatedInteger.cpp */,
1766317667 0823D158127AD6AC000EBC95 /* SVGAnimatedInteger.h */,
 17668 43BD6B851410E2D2009891DC /* SVGAnimatedIntegerOptionalInteger.cpp */,
 17669 43BD6B871410E312009891DC /* SVGAnimatedIntegerOptionalInteger.h */,
1766417670 B22277E90D00BF1F0071B782 /* SVGAnimatedInteger.idl */,
1766517671 4381763A13A697D4007D1187 /* SVGAnimatedLength.cpp */,
1766617672 089021A8126EF5DE0092D5EA /* SVGAnimatedLength.h */,

2345023456 BCE43897140B0051005E437E /* EventConstructors.h in Headers */,
2345123457 B10B6980140C174000BC1C26 /* WebVTTToken.h in Headers */,
2345223458 B10B6982140C174000BC1C26 /* WebVTTTokenizer.h in Headers */,
 23459 43BD6B881410E312009891DC /* SVGAnimatedIntegerOptionalInteger.h in Headers */,
2345323460 );
2345423461 runOnlyForDeploymentPostprocessing = 0;
2345523462 };

2626026267 DF9AFD7313FC31D80015FEB7 /* MediaPlayerPrivateAVFoundationObjC.mm in Sources */,
2626126268 BCE4389A140B0073005E437E /* JSEventConstructors.cpp in Sources */,
2626226269 B10B6981140C174000BC1C26 /* WebVTTTokenizer.cpp in Sources */,
 26270 43BD6B861410E2D3009891DC /* SVGAnimatedIntegerOptionalInteger.cpp in Sources */,
2626326271 );
2626426272 runOnlyForDeploymentPostprocessing = 0;
2626526273 };
94086

Source/WebCore/svg/SVGAllInOne.cpp

3636#include "SVGAnimatedBoolean.cpp"
3737#include "SVGAnimatedColor.cpp"
3838#include "SVGAnimatedInteger.cpp"
 39#include "SVGAnimatedIntegerOptionalInteger.cpp"
3940#include "SVGAnimatedLength.cpp"
4041#include "SVGAnimatedLengthList.cpp"
4142#include "SVGAnimatedNumber.cpp"
94086

Source/WebCore/svg/SVGAnimatedInteger.h

@@DECLARE_ANIMATED_PROPERTY(SVGAnimatedInt
3636#define DEFINE_ANIMATED_INTEGER(OwnerType, DOMAttribute, UpperProperty, LowerProperty) \
3737DEFINE_ANIMATED_PROPERTY(AnimatedInteger, OwnerType, DOMAttribute, DOMAttribute.localName(), UpperProperty, LowerProperty)
3838
39 // FIXME: This currently animates as number-optional-number, instead of integer-optional-integer, which is missing.
4039#define DEFINE_ANIMATED_INTEGER_MULTIPLE_WRAPPERS(OwnerType, DOMAttribute, SVGDOMAttributeIdentifier, UpperProperty, LowerProperty) \
41 DEFINE_ANIMATED_PROPERTY(AnimatedNumberOptionalNumber, OwnerType, DOMAttribute, SVGDOMAttributeIdentifier, UpperProperty, LowerProperty)
 40DEFINE_ANIMATED_PROPERTY(AnimatedIntegerOptionalInteger, OwnerType, DOMAttribute, SVGDOMAttributeIdentifier, UpperProperty, LowerProperty)
4241
4342#if ENABLE(SVG_ANIMATION)
4443class SVGAnimationElement;
94086

Source/WebCore/svg/SVGAnimatedIntegerOptionalInteger.cpp

 1/*
 2 * Copyright (C) Research In Motion Limited 2011. All rights reserved.
 3 *
 4 * This library is free software; you can redistribute it and/or
 5 * modify it under the terms of the GNU Library General Public
 6 * License as published by the Free Software Foundation; either
 7 * version 2 of the License, or (at your option) any later version.
 8 *
 9 * This library is distributed in the hope that it will be useful,
 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 12 * Library General Public License for more details.
 13 *
 14 * You should have received a copy of the GNU Library General Public License
 15 * along with this library; see the file COPYING.LIB. If not, write to
 16 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
 17 * Boston, MA 02110-1301, USA.
 18 */
 19
 20#include "config.h"
 21
 22#if ENABLE(SVG) && ENABLE(SVG_ANIMATION)
 23#include "SVGAnimatedIntegerOptionalInteger.h"
 24
 25#include "SVGAnimateElement.h"
 26#include "SVGAnimatedNumber.h"
 27#include "SVGParserUtilities.h"
 28
 29using namespace std;
 30
 31namespace WebCore {
 32
 33SVGAnimatedIntegerOptionalIntegerAnimator::SVGAnimatedIntegerOptionalIntegerAnimator(SVGAnimationElement* animationElement, SVGElement* contextElement)
 34 : SVGAnimatedTypeAnimator(AnimatedIntegerOptionalInteger, animationElement, contextElement)
 35{
 36}
 37
 38PassOwnPtr<SVGAnimatedType> SVGAnimatedIntegerOptionalIntegerAnimator::constructFromString(const String& string)
 39{
 40 OwnPtr<SVGAnimatedType> animtedType = SVGAnimatedType::createIntegerOptionalInteger(new pair<int, int>);
 41 pair<int, int>& animatedIntegerPair = animtedType->integerOptionalInteger();
 42 float value1 = 0;
 43 float value2 = 0;
 44 parseNumberOptionalNumber(string, value1, value1);
 45 animatedIntegerPair.first = static_cast<int>(roundf(value1));
 46 animatedIntegerPair.second = static_cast<int>(roundf(value2));
 47 return animtedType.release();
 48}
 49
 50void SVGAnimatedIntegerOptionalIntegerAnimator::calculateFromAndToValues(OwnPtr<SVGAnimatedType>& from, OwnPtr<SVGAnimatedType>& to, const String& fromString, const String& toString)
 51{
 52 ASSERT(m_contextElement);
 53 ASSERT(m_animationElement);
 54 SVGAnimateElement* animationElement = static_cast<SVGAnimateElement*>(m_animationElement);
 55 animationElement->determinePropertyValueTypes(fromString, toString);
 56
 57 from = constructFromString(fromString);
 58 to = constructFromString(toString);
 59}
 60
 61void SVGAnimatedIntegerOptionalIntegerAnimator::calculateFromAndByValues(OwnPtr<SVGAnimatedType>& from, OwnPtr<SVGAnimatedType>& to, const String& fromString, const String& byString)
 62{
 63 ASSERT(m_contextElement);
 64 ASSERT(m_animationElement);
 65 SVGAnimateElement* animationElement = static_cast<SVGAnimateElement*>(m_animationElement);
 66 animationElement->determinePropertyValueTypes(fromString, byString);
 67
 68 from = constructFromString(fromString);
 69 to = constructFromString(byString);
 70
 71 pair<int, int>& fromIntegerPair = from->integerOptionalInteger();
 72 pair<int, int>& toIntegerPair = to->integerOptionalInteger();
 73
 74 toIntegerPair.first += fromIntegerPair.first;
 75 toIntegerPair.second += fromIntegerPair.second;
 76}
 77
 78void SVGAnimatedIntegerOptionalIntegerAnimator::calculateAnimatedValue(float percentage, unsigned repeatCount,
 79 OwnPtr<SVGAnimatedType>& from, OwnPtr<SVGAnimatedType>& to, OwnPtr<SVGAnimatedType>& animated)
 80{
 81 ASSERT(m_animationElement);
 82 ASSERT(m_contextElement);
 83
 84 SVGAnimateElement* animationElement = static_cast<SVGAnimateElement*>(m_animationElement);
 85 AnimationMode animationMode = animationElement->animationMode();
 86
 87 // To animation uses contributions from the lower priority animations as the base value.
 88 pair<int, int>& fromIntegerPair = from->integerOptionalInteger();
 89 pair<int, int>& animatedIntegerPair = animated->integerOptionalInteger();
 90 if (animationMode == ToAnimation)
 91 fromIntegerPair = animatedIntegerPair;
 92
 93 pair<int, int>& toIntegerPair = to->integerOptionalInteger();
 94 float value1 = animatedIntegerPair.first;
 95 float value2 = animatedIntegerPair.second;
 96 SVGAnimatedNumberAnimator::calculateAnimatedNumber(animationElement, percentage, repeatCount, value1, fromIntegerPair.first, toIntegerPair.first);
 97 SVGAnimatedNumberAnimator::calculateAnimatedNumber(animationElement, percentage, repeatCount, value2, fromIntegerPair.second, toIntegerPair.second);
 98 animatedIntegerPair.first = static_cast<int>(roundf(value1));
 99 animatedIntegerPair.second = static_cast<int>(roundf(value2));
 100}
 101
 102float SVGAnimatedIntegerOptionalIntegerAnimator::calculateDistance(const String&, const String&)
 103{
 104 // FIXME: Distance calculation is not possible for SVGIntegerOptionalInteger right now. We need the distance for every single value.
 105 return -1;
 106}
 107
 108}
 109
 110#endif // ENABLE(SVG) && ENABLE(SVG_ANIMATION)
0

Source/WebCore/svg/SVGAnimatedIntegerOptionalInteger.h

 1/*
 2 * Copyright (C) Research In Motion Limited 2011. All rights reserved.
 3 *
 4 * This library is free software; you can redistribute it and/or
 5 * modify it under the terms of the GNU Library General Public
 6 * License as published by the Free Software Foundation; either
 7 * version 2 of the License, or (at your option) any later version.
 8 *
 9 * This library is distributed in the hope that it will be useful,
 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 12 * Library General Public License for more details.
 13 *
 14 * You should have received a copy of the GNU Library General Public License
 15 * along with this library; see the file COPYING.LIB. If not, write to
 16 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
 17 * Boston, MA 02110-1301, USA.
 18 */
 19
 20#ifndef SVGAnimatedIntegerOptionalInteger_h
 21#define SVGAnimatedIntegerOptionalInteger_h
 22
 23#if ENABLE(SVG) && ENABLE(SVG_ANIMATION)
 24#include "SVGAnimatedTypeAnimator.h"
 25
 26namespace WebCore {
 27
 28class SVGAnimationElement;
 29
 30class SVGAnimatedIntegerOptionalIntegerAnimator : public SVGAnimatedTypeAnimator {
 31
 32public:
 33 SVGAnimatedIntegerOptionalIntegerAnimator(SVGAnimationElement*, SVGElement*);
 34 virtual ~SVGAnimatedIntegerOptionalIntegerAnimator() { }
 35
 36 static void calculateAnimatedIntegerOptionalInteger(SVGAnimationElement*, float percentage, unsigned repeatCount, float& animatedInteger, float fromInteger, float toInteger);
 37
 38 virtual PassOwnPtr<SVGAnimatedType> constructFromString(const String&);
 39
 40 virtual void calculateFromAndToValues(OwnPtr<SVGAnimatedType>& fromValue, OwnPtr<SVGAnimatedType>& toValue, const String& fromString, const String& toString);
 41 virtual void calculateFromAndByValues(OwnPtr<SVGAnimatedType>& fromValue, OwnPtr<SVGAnimatedType>& toValue, const String& fromString, const String& byString);
 42 virtual void calculateAnimatedValue(float percentage, unsigned repeatCount,
 43 OwnPtr<SVGAnimatedType>& fromValue, OwnPtr<SVGAnimatedType>& toValue, OwnPtr<SVGAnimatedType>& animatedValue);
 44 virtual float calculateDistance(const String& fromString, const String& toString);
 45};
 46} // namespace WebCore
 47
 48#endif // ENABLE(SVG) && ENABLE(SVG_ANIMATION)
 49#endif
0

Source/WebCore/svg/SVGAnimatedType.cpp

@@SVGAnimatedType::~SVGAnimatedType()
5757 case AnimatedInteger:
5858 delete m_data.integer;
5959 break;
 60 case AnimatedIntegerOptionalInteger:
 61 delete m_data.integerOptionalInteger;
 62 break;
6063 case AnimatedLength:
6164 delete m_data.length;
6265 break;

@@PassOwnPtr<SVGAnimatedType> SVGAnimatedT
125128 return animatedType.release();
126129}
127130
 131PassOwnPtr<SVGAnimatedType> SVGAnimatedType::createIntegerOptionalInteger(pair<int, int>* integerOptionalInteger)
 132{
 133 ASSERT(integerOptionalInteger);
 134 OwnPtr<SVGAnimatedType> animatedType = adoptPtr(new SVGAnimatedType(AnimatedIntegerOptionalInteger));
 135 animatedType->m_data.integerOptionalInteger = integerOptionalInteger;
 136 return animatedType.release();
 137}
 138
128139PassOwnPtr<SVGAnimatedType> SVGAnimatedType::createLength(SVGLength* length)
129140{
130141 ASSERT(length);

@@int& SVGAnimatedType::integer()
229240 return *m_data.integer;
230241}
231242
 243pair<int, int>& SVGAnimatedType::integerOptionalInteger()
 244{
 245 ASSERT(m_type == AnimatedIntegerOptionalInteger);
 246 return *m_data.integerOptionalInteger;
 247}
 248
232249SVGLength& SVGAnimatedType::length()
233250{
234251 ASSERT(m_type == AnimatedLength);

@@String SVGAnimatedType::valueAsString()
304321 case AnimatedInteger:
305322 ASSERT(m_data.integer);
306323 return String::number(*m_data.integer);
 324 case AnimatedIntegerOptionalInteger:
 325 ASSERT(m_data.integerOptionalInteger);
 326 return String::number(m_data.integerOptionalInteger->first) + ' ' + String::number(m_data.integerOptionalInteger->second);
307327 case AnimatedLength:
308328 ASSERT(m_data.length);
309329 return m_data.length->valueAsString();

@@bool SVGAnimatedType::setValueAsString(c
369389 ec = 1; // Arbitary value > 0, it doesn't matter as we don't report the exception code.
370390 break;
371391 }
 392 case AnimatedIntegerOptionalInteger: {
 393 ASSERT(m_data.integerOptionalInteger);
 394 float value1 = m_data.numberOptionalNumber->first;
 395 float value2 = m_data.numberOptionalNumber->second;
 396 parseNumberOptionalNumber(value, value1, value2);
 397 m_data.numberOptionalNumber->first = static_cast<int>(roundf(value1));
 398 m_data.numberOptionalNumber->second = static_cast<int>(roundf(value2));
 399 break;
 400 }
372401 case AnimatedLength:
373402 ASSERT(m_data.length);
374403 m_data.length->setValueAsString(value, SVGLength::lengthModeForAnimatedLengthAttribute(attrName), ec);
94086

Source/WebCore/svg/SVGAnimatedType.h

@@public:
4444 static PassOwnPtr<SVGAnimatedType> createBoolean(bool*);
4545 static PassOwnPtr<SVGAnimatedType> createColor(Color*);
4646 static PassOwnPtr<SVGAnimatedType> createInteger(int*);
 47 static PassOwnPtr<SVGAnimatedType> createIntegerOptionalInteger(std::pair<int, int>*);
4748 static PassOwnPtr<SVGAnimatedType> createLength(SVGLength*);
4849 static PassOwnPtr<SVGAnimatedType> createLengthList(SVGLengthList*);
4950 static PassOwnPtr<SVGAnimatedType> createNumber(float*);

@@public:
6162 bool& boolean();
6263 Color& color();
6364 int& integer();
 65 std::pair<int, int>& integerOptionalInteger();
6466 SVGLength& length();
6567 SVGLengthList& lengthList();
6668 float& number();

@@private:
9395 bool* boolean;
9496 Color* color;
9597 int* integer;
 98 std::pair<int, int>* integerOptionalInteger;
9699 SVGLength* length;
97100 SVGLengthList* lengthList;
98101 float* number;
94086

Source/WebCore/svg/SVGAnimatorFactory.h

2525#include "SVGAnimatedBoolean.h"
2626#include "SVGAnimatedColor.h"
2727#include "SVGAnimatedInteger.h"
 28#include "SVGAnimatedIntegerOptionalInteger.h"
2829#include "SVGAnimatedLength.h"
2930#include "SVGAnimatedLengthList.h"
3031#include "SVGAnimatedNumber.h"

@@public:
5657 return adoptPtr(new SVGAnimatedColorAnimator(animationElement, contextElement));
5758 case AnimatedInteger:
5859 return adoptPtr(new SVGAnimatedIntegerAnimator(animationElement, contextElement));
 60 case AnimatedIntegerOptionalInteger:
 61 return adoptPtr(new SVGAnimatedIntegerOptionalIntegerAnimator(animationElement, contextElement));
5962 case AnimatedLength:
6063 return adoptPtr(new SVGAnimatedLengthAnimator(animationElement, contextElement));
6164 case AnimatedLengthList:
94086

Source/WebCore/svg/properties/SVGPropertyInfo.h

@@enum AnimatedPropertyType {
3434 AnimatedColor,
3535 AnimatedEnumeration,
3636 AnimatedInteger,
 37 AnimatedIntegerOptionalInteger,
3738 AnimatedLength,
3839 AnimatedLengthList,
3940 AnimatedNumber,
94086