PassOwnPtr<PairwisePrimitiveInterpolation> CSSLengthInterpolationType::mergeSingleConversions(InterpolationValue& startValue, InterpolationValue& endValue) const { return PairwisePrimitiveInterpolation::create(*this, startValue.mutableComponent().interpolableValue.release(), endValue.mutableComponent().interpolableValue.release(), CSSLengthNonInterpolableValue::merge(startValue.nonInterpolableValue(), endValue.nonInterpolableValue())); }
PassOwnPtr<PairwisePrimitiveInterpolation> CSSShadowListInterpolationType::mergeSingleConversions(InterpolationValue& startValue, InterpolationValue& endValue) const { PairwiseInterpolationComponent component = ListInterpolationFunctions::mergeSingleConversions( startValue.mutableComponent(), endValue.mutableComponent(), ShadowInterpolationFunctions::mergeSingleConversions); if (!component) return nullptr; return PairwisePrimitiveInterpolation::create(*this, component); }
PassOwnPtr<PairwisePrimitiveInterpolation> SVGTransformListInterpolationType::mergeSingleConversions(InterpolationValue& startValue, InterpolationValue& endValue) const { if (!transformTypesMatch(startValue, endValue)) return nullptr; return PairwisePrimitiveInterpolation::create(*this, startValue.mutableComponent().interpolableValue.release(), endValue.mutableComponent().interpolableValue.release(), endValue.mutableComponent().nonInterpolableValue.release()); }
PassOwnPtr<PairwisePrimitiveInterpolation> PathInterpolationFunctions::mergeSingleConversions(const InterpolationType& type, InterpolationValue& startValue, InterpolationValue& endValue) { const Vector<SVGPathSegType>& startTypes = toSVGPathNonInterpolableValue(startValue.nonInterpolableValue())->pathSegTypes(); const Vector<SVGPathSegType>& endTypes = toSVGPathNonInterpolableValue(endValue.nonInterpolableValue())->pathSegTypes(); if (!pathSegTypesMatch(startTypes, endTypes)) return nullptr; return PairwisePrimitiveInterpolation::create(type, startValue.mutableComponent().interpolableValue.release(), endValue.mutableComponent().interpolableValue.release(), const_cast<NonInterpolableValue*>(endValue.nonInterpolableValue())); // Take ref. }