void CSSToStyleMap::mapFillSize(CSSPropertyID, FillLayer& layer, const CSSValue& value) { if (value.isInitialValue()) { layer.setSize(FillLayer::initialFillSize(layer.type())); return; } if (!is<CSSPrimitiveValue>(value)) return; auto& primitiveValue = downcast<CSSPrimitiveValue>(value); FillSize fillSize; switch (primitiveValue.getValueID()) { case CSSValueContain: fillSize.type = Contain; break; case CSSValueCover: fillSize.type = Cover; break; default: ASSERT(fillSize.type == SizeLength); if (!convertToLengthSize(primitiveValue, m_resolver->state().cssToLengthConversionData(), fillSize.size)) return; break; } layer.setSize(fillSize); }
void SizeListPropertyFunctions::setSizeList(CSSPropertyID property, ComputedStyle& style, const SizeList& sizeList) { FillLayer* fillLayer = accessFillLayer(property, style); FillLayer* prev = nullptr; for (const FillSize& size : sizeList) { if (!fillLayer) fillLayer = prev->ensureNext(); fillLayer->setSize(size); prev = fillLayer; fillLayer = fillLayer->next(); } while (fillLayer) { fillLayer->clearSize(); fillLayer = fillLayer->next(); } }