| Index: Source/core/svg/SVGTransformList.cpp
|
| diff --git a/Source/core/svg/SVGTransformList.cpp b/Source/core/svg/SVGTransformList.cpp
|
| index 171fa554e13043cb06562e6d2325173dd77f6d45..89aab9991d6d03d84d45bc9e15603a3454b5faeb 100644
|
| --- a/Source/core/svg/SVGTransformList.cpp
|
| +++ b/Source/core/svg/SVGTransformList.cpp
|
| @@ -35,9 +35,9 @@
|
|
|
| namespace blink {
|
|
|
| -inline PassRefPtr<SVGTransformList> toSVGTransformList(PassRefPtr<SVGPropertyBase> passBase)
|
| +inline PassRefPtrWillBeRawPtr<SVGTransformList> toSVGTransformList(PassRefPtrWillBeRawPtr<SVGPropertyBase> passBase)
|
| {
|
| - RefPtr<SVGPropertyBase> base = passBase;
|
| + RefPtrWillBeRawPtr<SVGPropertyBase> base = passBase;
|
| ASSERT(base->type() == SVGTransformList::classType());
|
| return static_pointer_cast<SVGTransformList>(base.release());
|
| }
|
| @@ -50,13 +50,13 @@ SVGTransformList::~SVGTransformList()
|
| {
|
| }
|
|
|
| -PassRefPtr<SVGTransform> SVGTransformList::consolidate()
|
| +PassRefPtrWillBeRawPtr<SVGTransform> SVGTransformList::consolidate()
|
| {
|
| AffineTransform matrix;
|
| if (!concatenate(matrix))
|
| return SVGTransform::create();
|
|
|
| - RefPtr<SVGTransform> transform = SVGTransform::create(matrix);
|
| + RefPtrWillBeRawPtr<SVGTransform> transform = SVGTransform::create(matrix);
|
| clear();
|
| return appendItem(transform);
|
| }
|
| @@ -112,7 +112,7 @@ static const int requiredValuesForType[] = {0, 6, 1, 1, 1, 1, 1};
|
| static const int optionalValuesForType[] = {0, 0, 1, 1, 2, 0, 0};
|
|
|
| template<typename CharType>
|
| -PassRefPtr<SVGTransform> parseTransformOfType(unsigned type, const CharType*& ptr, const CharType* end)
|
| +PassRefPtrWillBeRawPtr<SVGTransform> parseTransformOfType(unsigned type, const CharType*& ptr, const CharType* end)
|
| {
|
| if (type == SVG_TRANSFORM_UNKNOWN)
|
| return nullptr;
|
| @@ -123,7 +123,7 @@ PassRefPtr<SVGTransform> parseTransformOfType(unsigned type, const CharType*& pt
|
| return nullptr;
|
| }
|
|
|
| - RefPtr<SVGTransform> transform = SVGTransform::create();
|
| + RefPtrWillBeRawPtr<SVGTransform> transform = SVGTransform::create();
|
|
|
| switch (type) {
|
| case SVG_TRANSFORM_SKEWX:
|
| @@ -178,7 +178,7 @@ bool SVGTransformList::parseInternal(const CharType*& ptr, const CharType* end)
|
| return false;
|
| ptr++;
|
|
|
| - RefPtr<SVGTransform> transform = parseTransformOfType(transformType, ptr, end);
|
| + RefPtrWillBeRawPtr<SVGTransform> transform = parseTransformOfType(transformType, ptr, end);
|
| if (!transform)
|
| return false;
|
|
|
| @@ -249,15 +249,15 @@ void SVGTransformList::setValueAsString(const String& value, ExceptionState& exc
|
| }
|
| }
|
|
|
| -PassRefPtr<SVGPropertyBase> SVGTransformList::cloneForAnimation(const String& value) const
|
| +PassRefPtrWillBeRawPtr<SVGPropertyBase> SVGTransformList::cloneForAnimation(const String& value) const
|
| {
|
| ASSERT_NOT_REACHED();
|
| return nullptr;
|
| }
|
|
|
| -PassRefPtr<SVGTransformList> SVGTransformList::create(SVGTransformType transformType, const String& value)
|
| +PassRefPtrWillBeRawPtr<SVGTransformList> SVGTransformList::create(SVGTransformType transformType, const String& value)
|
| {
|
| - RefPtr<SVGTransform> transform;
|
| + RefPtrWillBeRawPtr<SVGTransform> transform = nullptr;
|
| if (value.isEmpty()) {
|
| } else if (value.is8Bit()) {
|
| const LChar* ptr = value.characters8();
|
| @@ -269,7 +269,7 @@ PassRefPtr<SVGTransformList> SVGTransformList::create(SVGTransformType transform
|
| transform = parseTransformOfType(transformType, ptr, end);
|
| }
|
|
|
| - RefPtr<SVGTransformList> svgTransformList = SVGTransformList::create();
|
| + RefPtrWillBeRawPtr<SVGTransformList> svgTransformList = SVGTransformList::create();
|
| if (transform)
|
| svgTransformList->append(transform);
|
| return svgTransformList.release();
|
| @@ -280,20 +280,20 @@ void SVGTransformList::add(PassRefPtrWillBeRawPtr<SVGPropertyBase> other, SVGEle
|
| if (isEmpty())
|
| return;
|
|
|
| - RefPtr<SVGTransformList> otherList = toSVGTransformList(other);
|
| + RefPtrWillBeRawPtr<SVGTransformList> otherList = toSVGTransformList(other);
|
| if (length() != otherList->length())
|
| return;
|
|
|
| ASSERT(length() == 1);
|
| - RefPtr<SVGTransform> fromTransform = at(0);
|
| - RefPtr<SVGTransform> toTransform = otherList->at(0);
|
| + RefPtrWillBeRawPtr<SVGTransform> fromTransform = at(0);
|
| + RefPtrWillBeRawPtr<SVGTransform> toTransform = otherList->at(0);
|
|
|
| ASSERT(fromTransform->transformType() == toTransform->transformType());
|
| clear();
|
| append(SVGTransformDistance::addSVGTransforms(fromTransform, toTransform));
|
| }
|
|
|
| -void SVGTransformList::calculateAnimatedValue(SVGAnimationElement* animationElement, float percentage, unsigned repeatCount, PassRefPtr<SVGPropertyBase> fromValue, PassRefPtr<SVGPropertyBase> toValue, PassRefPtr<SVGPropertyBase> toAtEndOfDurationValue, SVGElement* contextElement)
|
| +void SVGTransformList::calculateAnimatedValue(SVGAnimationElement* animationElement, float percentage, unsigned repeatCount, PassRefPtrWillBeRawPtr<SVGPropertyBase> fromValue, PassRefPtrWillBeRawPtr<SVGPropertyBase> toValue, PassRefPtrWillBeRawPtr<SVGPropertyBase> toAtEndOfDurationValue, SVGElement* contextElement)
|
| {
|
| ASSERT(animationElement);
|
| bool isToAnimation = animationElement->animationMode() == ToAnimation;
|
| @@ -302,17 +302,17 @@ void SVGTransformList::calculateAnimatedValue(SVGAnimationElement* animationElem
|
| // ‘to’ attribute value, which conflicts mathematically with the requirement for additive transform animations
|
| // to be post-multiplied. As a consequence, in SVG 1.1 the behavior of to animations for ‘animateTransform’ is undefined
|
| // FIXME: This is not taken into account yet.
|
| - RefPtr<SVGTransformList> fromList = isToAnimation ? this : toSVGTransformList(fromValue);
|
| - RefPtr<SVGTransformList> toList = toSVGTransformList(toValue);
|
| - RefPtr<SVGTransformList> toAtEndOfDurationList = toSVGTransformList(toAtEndOfDurationValue);
|
| + RefPtrWillBeRawPtr<SVGTransformList> fromList = isToAnimation ? PassRefPtrWillBeRawPtr<SVGTransformList>(this) : toSVGTransformList(fromValue);
|
| + RefPtrWillBeRawPtr<SVGTransformList> toList = toSVGTransformList(toValue);
|
| + RefPtrWillBeRawPtr<SVGTransformList> toAtEndOfDurationList = toSVGTransformList(toAtEndOfDurationValue);
|
|
|
| size_t toListSize = toList->length();
|
| if (!toListSize)
|
| return;
|
|
|
| // Get a reference to the from value before potentially cleaning it out (in the case of a To animation.)
|
| - RefPtr<SVGTransform> toTransform = toList->at(0);
|
| - RefPtr<SVGTransform> effectiveFrom;
|
| + RefPtrWillBeRawPtr<SVGTransform> toTransform = toList->at(0);
|
| + RefPtrWillBeRawPtr<SVGTransform> effectiveFrom = nullptr;
|
| // If there's an existing 'from'/underlying value of the same type use that, else use a "zero transform".
|
| if (fromList->length() && fromList->at(0)->transformType() == toTransform->transformType())
|
| effectiveFrom = fromList->at(0);
|
| @@ -323,21 +323,21 @@ void SVGTransformList::calculateAnimatedValue(SVGAnimationElement* animationElem
|
| if (!isEmpty() && (!animationElement->isAdditive() || isToAnimation))
|
| clear();
|
|
|
| - RefPtr<SVGTransform> currentTransform = SVGTransformDistance(effectiveFrom, toTransform).scaledDistance(percentage).addToSVGTransform(effectiveFrom);
|
| + RefPtrWillBeRawPtr<SVGTransform> currentTransform = SVGTransformDistance(effectiveFrom, toTransform).scaledDistance(percentage).addToSVGTransform(effectiveFrom);
|
| if (animationElement->isAccumulated() && repeatCount) {
|
| - RefPtr<SVGTransform> effectiveToAtEnd = !toAtEndOfDurationList->isEmpty() ? toAtEndOfDurationList->at(0) : SVGTransform::create(toTransform->transformType(), SVGTransform::ConstructZeroTransform);
|
| + RefPtrWillBeRawPtr<SVGTransform> effectiveToAtEnd = !toAtEndOfDurationList->isEmpty() ? PassRefPtrWillBeRawPtr<SVGTransform>(toAtEndOfDurationList->at(0)) : SVGTransform::create(toTransform->transformType(), SVGTransform::ConstructZeroTransform);
|
| append(SVGTransformDistance::addSVGTransforms(currentTransform, effectiveToAtEnd, repeatCount));
|
| } else {
|
| append(currentTransform);
|
| }
|
| }
|
|
|
| -float SVGTransformList::calculateDistance(PassRefPtr<SVGPropertyBase> toValue, SVGElement*)
|
| +float SVGTransformList::calculateDistance(PassRefPtrWillBeRawPtr<SVGPropertyBase> toValue, SVGElement*)
|
| {
|
| // FIXME: This is not correct in all cases. The spec demands that each component (translate x and y for example)
|
| // is paced separately. To implement this we need to treat each component as individual animation everywhere.
|
|
|
| - RefPtr<SVGTransformList> toList = toSVGTransformList(toValue);
|
| + RefPtrWillBeRawPtr<SVGTransformList> toList = toSVGTransformList(toValue);
|
| if (isEmpty() || length() != toList->length())
|
| return -1;
|
|
|
|
|