blob: 791534070ee0daf432e15dacbfa6a766ddab8f12 [file] [log] [blame]
// 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 SVGInterpolationType_h
#define SVGInterpolationType_h
#include "core/animation/InterpolationType.h"
namespace blink {
class SVGPropertyBase;
class SVGInterpolationType : public InterpolationType {
protected:
SVGInterpolationType(const QualifiedName& attribute)
: InterpolationType(PropertyHandle(attribute)) {}
const QualifiedName& attribute() const {
return getProperty().svgAttribute();
}
virtual InterpolationValue maybeConvertNeutral(
const InterpolationValue& underlying,
ConversionCheckers&) const = 0;
virtual InterpolationValue maybeConvertSVGValue(
const SVGPropertyBase&) const = 0;
virtual SVGPropertyBase* appliedSVGValue(
const InterpolableValue&,
const NonInterpolableValue*) const = 0;
InterpolationValue maybeConvertSingle(const PropertySpecificKeyframe&,
const InterpolationEnvironment&,
const InterpolationValue& underlying,
ConversionCheckers&) const override;
InterpolationValue maybeConvertUnderlyingValue(
const InterpolationEnvironment&) const override;
void apply(const InterpolableValue&,
const NonInterpolableValue*,
InterpolationEnvironment&) const override;
};
} // namespace blink
#endif // SVGInterpolationType_h