| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) Research In Motion Limited 2011. All rights reserved. | 2 * Copyright (C) Research In Motion Limited 2011. All rights reserved. |
| 3 * | 3 * |
| 4 * This library is free software; you can redistribute it and/or | 4 * This library is free software; you can redistribute it and/or |
| 5 * modify it under the terms of the GNU Library General Public | 5 * modify it under the terms of the GNU Library General Public |
| 6 * License as published by the Free Software Foundation; either | 6 * License as published by the Free Software Foundation; either |
| 7 * version 2 of the License, or (at your option) any later version. | 7 * version 2 of the License, or (at your option) any later version. |
| 8 * | 8 * |
| 9 * This library is distributed in the hope that it will be useful, | 9 * This library is distributed in the hope that it will be useful, |
| 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| (...skipping 17 matching lines...) Expand all Loading... |
| 28 | 28 |
| 29 SVGAnimatedLengthAnimator::SVGAnimatedLengthAnimator(SVGAnimationElement* animat
ionElement, SVGElement* contextElement) | 29 SVGAnimatedLengthAnimator::SVGAnimatedLengthAnimator(SVGAnimationElement* animat
ionElement, SVGElement* contextElement) |
| 30 : SVGAnimatedTypeAnimator(AnimatedLength, animationElement, contextElement) | 30 : SVGAnimatedTypeAnimator(AnimatedLength, animationElement, contextElement) |
| 31 , m_lengthMode(SVGLength::lengthModeForAnimatedLengthAttribute(animationElem
ent->attributeName())) | 31 , m_lengthMode(SVGLength::lengthModeForAnimatedLengthAttribute(animationElem
ent->attributeName())) |
| 32 { | 32 { |
| 33 } | 33 } |
| 34 | 34 |
| 35 static inline SVGLength& sharedSVGLength(SVGLengthMode mode, const String& value
AsString) | 35 static inline SVGLength& sharedSVGLength(SVGLengthMode mode, const String& value
AsString) |
| 36 { | 36 { |
| 37 DEFINE_STATIC_LOCAL(SVGLength, sharedLength, ()); | 37 DEFINE_STATIC_LOCAL(SVGLength, sharedLength, ()); |
| 38 sharedLength.setValueAsString(valueAsString, mode, ASSERT_NO_EXCEPTION_STATE
); | 38 sharedLength.setValueAsString(valueAsString, mode, ASSERT_NO_EXCEPTION); |
| 39 return sharedLength; | 39 return sharedLength; |
| 40 } | 40 } |
| 41 | 41 |
| 42 PassOwnPtr<SVGAnimatedType> SVGAnimatedLengthAnimator::constructFromString(const
String& string) | 42 PassOwnPtr<SVGAnimatedType> SVGAnimatedLengthAnimator::constructFromString(const
String& string) |
| 43 { | 43 { |
| 44 return SVGAnimatedType::createLength(new SVGLength(m_lengthMode, string)); | 44 return SVGAnimatedType::createLength(new SVGLength(m_lengthMode, string)); |
| 45 } | 45 } |
| 46 | 46 |
| 47 PassOwnPtr<SVGAnimatedType> SVGAnimatedLengthAnimator::startAnimValAnimation(con
st SVGElementAnimatedPropertyList& animatedTypes) | 47 PassOwnPtr<SVGAnimatedType> SVGAnimatedLengthAnimator::startAnimValAnimation(con
st SVGElementAnimatedPropertyList& animatedTypes) |
| 48 { | 48 { |
| (...skipping 22 matching lines...) Expand all Loading... |
| 71 | 71 |
| 72 void SVGAnimatedLengthAnimator::addAnimatedTypes(SVGAnimatedType* from, SVGAnima
tedType* to) | 72 void SVGAnimatedLengthAnimator::addAnimatedTypes(SVGAnimatedType* from, SVGAnima
tedType* to) |
| 73 { | 73 { |
| 74 ASSERT(from->type() == AnimatedLength); | 74 ASSERT(from->type() == AnimatedLength); |
| 75 ASSERT(from->type() == to->type()); | 75 ASSERT(from->type() == to->type()); |
| 76 | 76 |
| 77 SVGLengthContext lengthContext(m_contextElement); | 77 SVGLengthContext lengthContext(m_contextElement); |
| 78 const SVGLength& fromLength = from->length(); | 78 const SVGLength& fromLength = from->length(); |
| 79 SVGLength& toLength = to->length(); | 79 SVGLength& toLength = to->length(); |
| 80 | 80 |
| 81 toLength.setValue(toLength.value(lengthContext) + fromLength.value(lengthCon
text), lengthContext, ASSERT_NO_EXCEPTION_STATE); | 81 toLength.setValue(toLength.value(lengthContext) + fromLength.value(lengthCon
text), lengthContext, ASSERT_NO_EXCEPTION); |
| 82 } | 82 } |
| 83 | 83 |
| 84 static SVGLength parseLengthFromString(SVGAnimationElement* animationElement, co
nst String& string) | 84 static SVGLength parseLengthFromString(SVGAnimationElement* animationElement, co
nst String& string) |
| 85 { | 85 { |
| 86 return sharedSVGLength(SVGLength::lengthModeForAnimatedLengthAttribute(anima
tionElement->attributeName()), string); | 86 return sharedSVGLength(SVGLength::lengthModeForAnimatedLengthAttribute(anima
tionElement->attributeName()), string); |
| 87 } | 87 } |
| 88 | 88 |
| 89 void SVGAnimatedLengthAnimator::calculateAnimatedValue(float percentage, unsigne
d repeatCount, SVGAnimatedType* from, SVGAnimatedType* to, SVGAnimatedType* toAt
EndOfDuration, SVGAnimatedType* animated) | 89 void SVGAnimatedLengthAnimator::calculateAnimatedValue(float percentage, unsigne
d repeatCount, SVGAnimatedType* from, SVGAnimatedType* to, SVGAnimatedType* toAt
EndOfDuration, SVGAnimatedType* animated) |
| 90 { | 90 { |
| 91 ASSERT(m_animationElement); | 91 ASSERT(m_animationElement); |
| 92 ASSERT(m_contextElement); | 92 ASSERT(m_contextElement); |
| 93 | 93 |
| 94 SVGLength fromSVGLength = m_animationElement->animationMode() == ToAnimation
? animated->length() : from->length(); | 94 SVGLength fromSVGLength = m_animationElement->animationMode() == ToAnimation
? animated->length() : from->length(); |
| 95 SVGLength toSVGLength = to->length(); | 95 SVGLength toSVGLength = to->length(); |
| 96 const SVGLength& toAtEndOfDurationSVGLength = toAtEndOfDuration->length(); | 96 const SVGLength& toAtEndOfDurationSVGLength = toAtEndOfDuration->length(); |
| 97 SVGLength& animatedSVGLength = animated->length(); | 97 SVGLength& animatedSVGLength = animated->length(); |
| 98 | 98 |
| 99 // Apply CSS inheritance rules. | 99 // Apply CSS inheritance rules. |
| 100 m_animationElement->adjustForInheritance<SVGLength>(parseLengthFromString, m
_animationElement->fromPropertyValueType(), fromSVGLength, m_contextElement); | 100 m_animationElement->adjustForInheritance<SVGLength>(parseLengthFromString, m
_animationElement->fromPropertyValueType(), fromSVGLength, m_contextElement); |
| 101 m_animationElement->adjustForInheritance<SVGLength>(parseLengthFromString, m
_animationElement->toPropertyValueType(), toSVGLength, m_contextElement); | 101 m_animationElement->adjustForInheritance<SVGLength>(parseLengthFromString, m
_animationElement->toPropertyValueType(), toSVGLength, m_contextElement); |
| 102 | 102 |
| 103 SVGLengthContext lengthContext(m_contextElement); | 103 SVGLengthContext lengthContext(m_contextElement); |
| 104 float animatedNumber = animatedSVGLength.value(lengthContext); | 104 float animatedNumber = animatedSVGLength.value(lengthContext); |
| 105 SVGLengthType unitType = percentage < 0.5 ? fromSVGLength.unitType() : toSVG
Length.unitType(); | 105 SVGLengthType unitType = percentage < 0.5 ? fromSVGLength.unitType() : toSVG
Length.unitType(); |
| 106 m_animationElement->animateAdditiveNumber(percentage, repeatCount, fromSVGLe
ngth.value(lengthContext), toSVGLength.value(lengthContext), toAtEndOfDurationSV
GLength.value(lengthContext), animatedNumber); | 106 m_animationElement->animateAdditiveNumber(percentage, repeatCount, fromSVGLe
ngth.value(lengthContext), toSVGLength.value(lengthContext), toAtEndOfDurationSV
GLength.value(lengthContext), animatedNumber); |
| 107 | 107 |
| 108 animatedSVGLength.setValue(lengthContext, animatedNumber, m_lengthMode, unit
Type, ASSERT_NO_EXCEPTION_STATE); | 108 animatedSVGLength.setValue(lengthContext, animatedNumber, m_lengthMode, unit
Type, ASSERT_NO_EXCEPTION); |
| 109 } | 109 } |
| 110 | 110 |
| 111 float SVGAnimatedLengthAnimator::calculateDistance(const String& fromString, con
st String& toString) | 111 float SVGAnimatedLengthAnimator::calculateDistance(const String& fromString, con
st String& toString) |
| 112 { | 112 { |
| 113 ASSERT(m_animationElement); | 113 ASSERT(m_animationElement); |
| 114 ASSERT(m_contextElement); | 114 ASSERT(m_contextElement); |
| 115 SVGLengthMode lengthMode = SVGLength::lengthModeForAnimatedLengthAttribute(m
_animationElement->attributeName()); | 115 SVGLengthMode lengthMode = SVGLength::lengthModeForAnimatedLengthAttribute(m
_animationElement->attributeName()); |
| 116 SVGLength from = SVGLength(lengthMode, fromString); | 116 SVGLength from = SVGLength(lengthMode, fromString); |
| 117 SVGLength to = SVGLength(lengthMode, toString); | 117 SVGLength to = SVGLength(lengthMode, toString); |
| 118 SVGLengthContext lengthContext(m_contextElement); | 118 SVGLengthContext lengthContext(m_contextElement); |
| 119 return fabsf(to.value(lengthContext) - from.value(lengthContext)); | 119 return fabsf(to.value(lengthContext) - from.value(lengthContext)); |
| 120 } | 120 } |
| 121 | 121 |
| 122 } | 122 } |
| OLD | NEW |