Index: third_party/WebKit/Source/core/animation/ListSVGInterpolation.h |
diff --git a/third_party/WebKit/Source/core/animation/ListSVGInterpolation.h b/third_party/WebKit/Source/core/animation/ListSVGInterpolation.h |
deleted file mode 100644 |
index 89c3120ccea59d3c30ba0596597a0666c95f4e2f..0000000000000000000000000000000000000000 |
--- a/third_party/WebKit/Source/core/animation/ListSVGInterpolation.h |
+++ /dev/null |
@@ -1,132 +0,0 @@ |
-// Copyright 2015 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#ifndef ListSVGInterpolation_h |
-#define ListSVGInterpolation_h |
- |
-#include "core/animation/SVGInterpolation.h" |
-#include "core/svg/properties/SVGAnimatedProperty.h" |
-#include "core/svg/properties/SVGProperty.h" |
- |
-namespace blink { |
- |
-template<typename InterpolationType, typename NonInterpolableType> |
-class ListSVGInterpolationImpl : public SVGInterpolation { |
-public: |
- typedef typename InterpolationType::ListType ListType; |
- typedef typename InterpolationType::ListType::ItemPropertyType ItemPropertyType; |
- |
- static PassRefPtr<ListSVGInterpolationImpl<InterpolationType, NonInterpolableType>> maybeCreate(SVGPropertyBase* start, SVGPropertyBase* end, PassRefPtrWillBeRawPtr<SVGAnimatedPropertyBase> attribute) |
- { |
- ASSERT(start->type() == ListType::classType()); |
- ASSERT(end->type() == ListType::classType()); |
- |
- ListType* startList = static_cast<ListType*>(start); |
- ListType* endList = static_cast<ListType*>(end); |
- if (startList->length() != endList->length()) |
- return nullptr; |
- |
- size_t length = startList->length(); |
- for (size_t i = 0; i < length; i++) { |
- if (!InterpolationType::canCreateFrom(startList->at(i), endList->at(i))) { |
- return nullptr; |
- } |
- } |
- |
- Vector<NonInterpolableType> nonInterpolableData(length); |
- OwnPtr<InterpolableList> startValue = InterpolableList::create(length); |
- OwnPtr<InterpolableList> endValue = InterpolableList::create(length); |
- for (size_t i = 0; i < length; i++) { |
- startValue->set(i, InterpolationType::toInterpolableValue(startList->at(i), attribute.get(), &nonInterpolableData.at(i))); |
- endValue->set(i, InterpolationType::toInterpolableValue(endList->at(i), attribute.get(), nullptr)); |
- } |
- |
- return adoptRef(new ListSVGInterpolationImpl<InterpolationType, NonInterpolableType>(startValue.release(), endValue.release(), attribute, nonInterpolableData)); |
- } |
- |
-private: |
- ListSVGInterpolationImpl(PassOwnPtr<InterpolableValue> start, PassOwnPtr<InterpolableValue> end, PassRefPtrWillBeRawPtr<SVGAnimatedPropertyBase> attribute, Vector<NonInterpolableType> nonInterpolableData) |
- : SVGInterpolation(start, end, attribute) |
- { |
- m_nonInterpolableData.swap(nonInterpolableData); |
- } |
- |
- static PassRefPtrWillBeRawPtr<ListType> fromInterpolableValue(const InterpolableValue& value, const Vector<NonInterpolableType>& m_nonInterpolableData, const SVGElement* element, const SVGAnimatedPropertyBase* attribute) |
- { |
- const InterpolableList& listValue = toInterpolableList(value); |
- RefPtrWillBeRawPtr<ListType> result = InterpolationType::createList(*attribute); |
- for (size_t i = 0; i < listValue.length(); i++) |
- result->append(InterpolationType::fromInterpolableValue(*listValue.get(i), m_nonInterpolableData.at(i), element, attribute->attributeName())); |
- return result.release(); |
- } |
- |
- virtual PassRefPtrWillBeRawPtr<SVGPropertyBase> interpolatedValue(SVGElement& element) const |
- { |
- return fromInterpolableValue(*m_cachedValue, m_nonInterpolableData, &element, attribute()); |
- } |
- |
- Vector<NonInterpolableType> m_nonInterpolableData; |
-}; |
- |
-template<typename InterpolationType> |
-class ListSVGInterpolationImpl<InterpolationType, void> : public SVGInterpolation { |
-public: |
- typedef typename InterpolationType::ListType ListType; |
- |
- static PassRefPtr<ListSVGInterpolationImpl<InterpolationType, void>> maybeCreate(SVGPropertyBase* start, SVGPropertyBase* end, PassRefPtrWillBeRawPtr<SVGAnimatedPropertyBase> attribute) |
- { |
- ASSERT(start->type() == ListType::classType()); |
- ASSERT(end->type() == ListType::classType()); |
- |
- ListType* startList = static_cast<ListType*>(start); |
- ListType* endList = static_cast<ListType*>(end); |
- if (startList->length() != endList->length()) |
- return nullptr; |
- |
- return adoptRef(new ListSVGInterpolationImpl<InterpolationType, void>(toInterpolableValue(startList), toInterpolableValue(endList), attribute)); |
- } |
- |
-private: |
- ListSVGInterpolationImpl(PassOwnPtr<InterpolableValue> start, PassOwnPtr<InterpolableValue> end, PassRefPtrWillBeRawPtr<SVGAnimatedPropertyBase> attribute) |
- : SVGInterpolation(start, end, attribute) |
- { |
- } |
- |
- static PassOwnPtr<InterpolableValue> toInterpolableValue(ListType* listValue) |
- { |
- size_t length = listValue->length(); |
- OwnPtr<InterpolableList> result = InterpolableList::create(length); |
- for (size_t i = 0; i < length; i++) |
- result->set(i, InterpolationType::toInterpolableValue(listValue->at(i))); |
- return result.release(); |
- } |
- |
- static PassRefPtrWillBeRawPtr<ListType> fromInterpolableValue(const InterpolableValue& value) |
- { |
- const InterpolableList& listValue = toInterpolableList(value); |
- RefPtrWillBeRawPtr<ListType> result = ListType::create(); |
- for (size_t i = 0; i < listValue.length(); i++) { |
- result->append(InterpolationType::fromInterpolableValue(*listValue.get(i))); |
- } |
- return result.release(); |
- } |
- |
- virtual PassRefPtrWillBeRawPtr<SVGPropertyBase> interpolatedValue(SVGElement& element) const |
- { |
- return fromInterpolableValue(*m_cachedValue); |
- } |
-}; |
- |
-template<typename InterpolationType> |
-class ListSVGInterpolation { |
-public: |
- static PassRefPtr<ListSVGInterpolationImpl<InterpolationType, typename InterpolationType::NonInterpolableType>> maybeCreate(SVGPropertyBase* start, SVGPropertyBase* end, PassRefPtrWillBeRawPtr<SVGAnimatedPropertyBase> attribute) |
- { |
- return ListSVGInterpolationImpl<InterpolationType, typename InterpolationType::NonInterpolableType>::maybeCreate(start, end, attribute); |
- } |
-}; |
- |
-} // namespace blink |
- |
-#endif // ListSVGInterpolation_h |