#ifndef SVGTransformList_h
#define SVGTransformList_h
#include "bindings/v8/ScriptWrappable.h"
#include "core/svg/SVGTransform.h"
#include "core/svg/properties/SVGListPropertyHelper.h"
namespace WebCore {
class SVGTransformListTearOff;
class SVGTransformList FINAL : public SVGListPropertyHelper<SVGTransformList, SVGTransform> {
public:
typedef SVGTransformListTearOff TearOffType;
static PassRefPtr<SVGTransformList> create()
{
return adoptRef(new SVGTransformList());
}
static PassRefPtr<SVGTransformList> create(SVGTransformType, const String&);
virtual ~SVGTransformList();
PassRefPtr<SVGTransform> createSVGTransformFromMatrix(const AffineTransform&) const;
PassRefPtr<SVGTransform> consolidate();
bool concatenate(AffineTransform& result) const;
virtual PassRefPtr<SVGPropertyBase> cloneForAnimation(const String&) const OVERRIDE;
PassRefPtr<SVGTransformList> clone();
virtual String valueAsString() const OVERRIDE;
void setValueAsString(const String&, ExceptionState&);
bool parse(const UChar*& ptr, const UChar* end);
bool parse(const LChar*& ptr, const LChar* end);
virtual void add(PassRefPtr<SVGPropertyBase>, SVGElement*) OVERRIDE;
virtual void calculateAnimatedValue(SVGAnimationElement*, float percentage, unsigned repeatCount, PassRefPtr<SVGPropertyBase> fromValue, PassRefPtr<SVGPropertyBase> toValue, PassRefPtr<SVGPropertyBase> toAtEndOfDurationValue, SVGElement*) OVERRIDE;
virtual float calculateDistance(PassRefPtr<SVGPropertyBase> to, SVGElement*) OVERRIDE;
static AnimatedPropertyType classType() { return AnimatedTransformList; }
private:
SVGTransformList();
bool adjustFromToListValues(PassRefPtr<SVGTransformList> fromList, PassRefPtr<SVGTransformList> toList, float percentage, bool isToAnimation, bool resizeAnimatedListIfNeeded);
template <typename CharType>
bool parseInternal(const CharType*& ptr, const CharType* end);
};
}
#endif