blob: 2e7a59e093ad33a2c02a58faae69b956b03ff0af [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.
#include "core/animation/SVGInterpolationType.h"
#include "core/animation/InterpolationEnvironment.h"
#include "core/animation/StringKeyframe.h"
#include "core/svg/SVGElement.h"
#include "core/svg/properties/SVGProperty.h"
namespace blink {
InterpolationValue SVGInterpolationType::maybeConvertSingle(
const PropertySpecificKeyframe& keyframe,
const InterpolationEnvironment& environment,
const InterpolationValue& underlying,
ConversionCheckers& conversionCheckers) const {
if (keyframe.isNeutral())
return maybeConvertNeutral(underlying, conversionCheckers);
SVGPropertyBase* svgValue = environment.svgBaseValue().cloneForAnimation(
toSVGPropertySpecificKeyframe(keyframe).value());
return maybeConvertSVGValue(*svgValue);
}
InterpolationValue SVGInterpolationType::maybeConvertUnderlyingValue(
const InterpolationEnvironment& environment) const {
return maybeConvertSVGValue(environment.svgBaseValue());
}
void SVGInterpolationType::apply(
const InterpolableValue& interpolableValue,
const NonInterpolableValue* nonInterpolableValue,
InterpolationEnvironment& environment) const {
environment.svgElement().setWebAnimatedAttribute(
attribute(), appliedSVGValue(interpolableValue, nonInterpolableValue));
}
} // namespace blink