InterpolationValue CSSImageSliceInterpolationType::maybeConvertNeutral(const InterpolationValue& underlying, ConversionCheckers& conversionCheckers) const { SliceTypes underlyingTypes = UnderlyingSliceTypesChecker::getUnderlyingSliceTypes(underlying); conversionCheckers.append(UnderlyingSliceTypesChecker::create(underlyingTypes)); LengthBox zeroBox( Length(0, underlyingTypes.isNumber[SideTop] ? Fixed : Percent), Length(0, underlyingTypes.isNumber[SideRight] ? Fixed : Percent), Length(0, underlyingTypes.isNumber[SideBottom] ? Fixed : Percent), Length(0, underlyingTypes.isNumber[SideLeft] ? Fixed : Percent)); return convertImageSlice(ImageSlice(zeroBox, underlyingTypes.fill), 1); }
InterpolationValue CSSBorderImageLengthBoxInterpolationType::maybeConvertNeutral( const InterpolationValue& underlying, ConversionCheckers& conversionCheckers) const { SideNumbers underlyingSideNumbers = UnderlyingSideNumbersChecker::getUnderlyingSideNumbers(underlying); conversionCheckers.append( UnderlyingSideNumbersChecker::create(underlyingSideNumbers)); const auto& zero = [&underlyingSideNumbers](size_t index) { return underlyingSideNumbers.isNumber[index] ? BorderImageLength(0) : BorderImageLength(Length(0, Fixed)); }; BorderImageLengthBox zeroBox(zero(SideTop), zero(SideRight), zero(SideBottom), zero(SideLeft)); return convertBorderImageLengthBox(zeroBox, 1); }