void SVGAnimatedIntegerAnimator::calculateFromAndToValues(OwnPtr<SVGAnimatedType>& from, OwnPtr<SVGAnimatedType>& to, const String& fromString, const String& toString) { ASSERT(m_contextElement); ASSERT(m_animationElement); SVGAnimateElement* animationElement = static_cast<SVGAnimateElement*>(m_animationElement); animationElement->determinePropertyValueTypes(fromString, toString); from = constructFromString(fromString); to = constructFromString(toString); }
void SVGAnimatedNumberOptionalNumberAnimator::calculateFromAndByValues(OwnPtr<SVGAnimatedType>& from, OwnPtr<SVGAnimatedType>& to, const String& fromString, const String& byString) { ASSERT(m_contextElement); ASSERT(m_animationElement); SVGAnimateElement* animationElement = static_cast<SVGAnimateElement*>(m_animationElement); animationElement->determinePropertyValueTypes(fromString, byString); from = constructFromString(fromString); to = constructFromString(byString); pair<float, float>& fromNumberPair = from->numberOptionalNumber(); pair<float, float>& toNumberPair = to->numberOptionalNumber(); toNumberPair.first += fromNumberPair.first; toNumberPair.second += fromNumberPair.second; }
void SVGAnimatedLengthListAnimator::calculateFromAndByValues(OwnPtr<SVGAnimatedType>& from, OwnPtr<SVGAnimatedType>& to, const String& fromString, const String& byString) { ASSERT(m_contextElement); ASSERT(m_animationElement); SVGAnimateElement* animationElement = static_cast<SVGAnimateElement*>(m_animationElement); animationElement->determinePropertyValueTypes(fromString, byString); from = constructFromString(fromString); to = constructFromString(byString); SVGLengthList& fromLengthList = from->lengthList(); SVGLengthList& toLengthList = to->lengthList(); unsigned itemsCount = fromLengthList.size(); if (itemsCount != toLengthList.size()) return; SVGLengthContext lengthContext(m_contextElement); ExceptionCode ec = 0; for (unsigned i = 0; i < itemsCount; ++i) { toLengthList[i].setValue(toLengthList[i].value(lengthContext) + fromLengthList[i].value(lengthContext), lengthContext, ec); ASSERT(!ec); } }