Exemplo n.º 1
0
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);
}
Exemplo n.º 2
0
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();
  }
}