blob: 970abcf5ba986024759000411801ea99a7ff52d0 [file] [log] [blame] [edit]
// 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 IntegerOptionalIntegerSVGInterpolation_h
#define IntegerOptionalIntegerSVGInterpolation_h
#include "core/animation/SVGInterpolation.h"
#include "core/svg/SVGIntegerOptionalInteger.h"
#include "platform/heap/Handle.h"
namespace blink {
class SVGIntegerOptionalInteger;
class IntegerOptionalIntegerSVGInterpolation : public SVGInterpolation {
public:
static PassRefPtr<IntegerOptionalIntegerSVGInterpolation> create(SVGPropertyBase* start, SVGPropertyBase* end, PassRefPtrWillBeRawPtr<SVGAnimatedPropertyBase> attribute, int min)
{
return adoptRef(new IntegerOptionalIntegerSVGInterpolation(toInterpolableValue(start), toInterpolableValue(end), attribute, min));
}
PassRefPtrWillBeRawPtr<SVGPropertyBase> interpolatedValue(SVGElement&) const final
{
return fromInterpolableValue(*m_cachedValue, m_min);
}
private:
IntegerOptionalIntegerSVGInterpolation(PassOwnPtr<InterpolableValue> start, PassOwnPtr<InterpolableValue> end, PassRefPtrWillBeRawPtr<SVGAnimatedPropertyBase> attribute, int min)
: SVGInterpolation(start, end, attribute)
, m_min(min)
{
}
static PassOwnPtr<InterpolableValue> toInterpolableValue(SVGPropertyBase*);
static PassRefPtrWillBeRawPtr<SVGIntegerOptionalInteger> fromInterpolableValue(const InterpolableValue&, int);
const int m_min;
};
}
#endif // IntegerOptionalIntegerSVGInterpolation_h