bool SVGAnimateElement::calculateFromAndToValues(const String& fromString, const String& toString) { SVGElement* targetElement = this->targetElement(); if (!targetElement) return false; determinePropertyValueTypes(fromString, toString); ensureAnimator()->calculateFromAndToValues(m_fromProperty, m_toProperty, fromString, toString); return true; }
bool SVGAnimateElement::calculateFromAndByValues(const String& fromString, const String& byString) { SVGElement* targetElement = this->targetElement(); if (!targetElement) return false; if (animationMode() == ByAnimation && !isAdditive()) return false; ASSERT(!hasTagName(SVGNames::setTag)); determinePropertyValueTypes(fromString, byString); ensureAnimator()->calculateFromAndByValues(m_fromType, m_toType, fromString, byString); ASSERT(m_animatedPropertyType == m_animator->type()); return true; }
bool SVGAnimateElement::calculateFromAndByValues(const String& fromString, const String& byString) { SVGElement* targetElement = this->targetElement(); if (!targetElement) return false; if (animationMode() == ByAnimation && !isAdditive()) return false; // from-by animation may only be used with attributes that support addition (e.g. most numeric attributes). if (animationMode() == FromByAnimation && !animatedPropertyTypeSupportsAddition()) return false; ASSERT(!isSVGSetElement(*this)); determinePropertyValueTypes(fromString, byString); ensureAnimator()->calculateFromAndByValues(m_fromProperty, m_toProperty, fromString, byString); return true; }