static std::unique_ptr<InterpolableValue> convertClipComponent( const CSSValue& length) { if (isCSSAuto(length)) return InterpolableList::create(0); return LengthInterpolationFunctions::maybeConvertCSSValue(length) .interpolableValue; }
InterpolationValue CSSClipInterpolationType::maybeConvertValue(const CSSValue& value, const StyleResolverState& state, ConversionCheckers&) const { if (!value.isQuadValue()) return nullptr; const CSSQuadValue& quad = toCSSQuadValue(value); OwnPtr<InterpolableList> list = InterpolableList::create(ClipComponentIndexCount); list->set(ClipTop, convertClipComponent(*quad.top())); list->set(ClipRight, convertClipComponent(*quad.right())); list->set(ClipBottom, convertClipComponent(*quad.bottom())); list->set(ClipLeft, convertClipComponent(*quad.left())); ClipAutos autos( isCSSAuto(*quad.top()), isCSSAuto(*quad.right()), isCSSAuto(*quad.bottom()), isCSSAuto(*quad.left())); return InterpolationValue(list.release(), CSSClipNonInterpolableValue::create(autos)); }
static PassOwnPtr<InterpolableValue> convertClipComponent(const CSSPrimitiveValue& length) { if (isCSSAuto(length)) return InterpolableList::create(0); return CSSLengthInterpolationType::maybeConvertCSSValue(length).interpolableValue.release(); }