BorderImageLengthBox CSSToStyleMap::mapNinePieceImageQuad(CSSValue* value) const { if (!value || !value->isPrimitiveValue()) return BorderImageLengthBox(Length(Auto)); Quad* slices = toCSSPrimitiveValue(value)->getQuadValue(); // Set up a border image length box to represent our image slices. return BorderImageLengthBox( toBorderImageLength(*slices->top(), cssToLengthConversionData()), toBorderImageLength(*slices->right(), cssToLengthConversionData()), toBorderImageLength(*slices->bottom(), cssToLengthConversionData()), toBorderImageLength(*slices->left(), cssToLengthConversionData())); }
BorderImageLengthBox CSSToStyleMap::mapNinePieceImageQuad(CSSValue* value) const { if (!value || !value->isPrimitiveValue()) return BorderImageLengthBox(Length(Auto)); float zoom = useSVGZoomRules() ? 1.0f : cssToLengthConversionData().zoom(); Quad* slices = toCSSPrimitiveValue(value)->getQuadValue(); // Set up a border image length box to represent our image slices. const CSSToLengthConversionData& conversionData = cssToLengthConversionData().copyWithAdjustedZoom(zoom); return BorderImageLengthBox( toBorderImageLength(*slices->top(), conversionData), toBorderImageLength(*slices->right(), conversionData), toBorderImageLength(*slices->bottom(), conversionData), toBorderImageLength(*slices->left(), conversionData)); }
void CSSToStyleMap::mapFillSize(FillLayer* layer, CSSValue* value) const { if (value->isInitialValue()) { layer->setSizeType(FillLayer::initialFillSizeType(layer->type())); layer->setSizeLength(FillLayer::initialFillSizeLength(layer->type())); return; } if (!value->isPrimitiveValue()) return; CSSPrimitiveValue* primitiveValue = toCSSPrimitiveValue(value); if (primitiveValue->getValueID() == CSSValueContain) layer->setSizeType(Contain); else if (primitiveValue->getValueID() == CSSValueCover) layer->setSizeType(Cover); else layer->setSizeType(SizeLength); LengthSize b = FillLayer::initialFillSizeLength(layer->type()); if (primitiveValue->getValueID() == CSSValueContain || primitiveValue->getValueID() == CSSValueCover) { layer->setSizeLength(b); return; } Length firstLength; Length secondLength; if (Pair* pair = primitiveValue->getPairValue()) { firstLength = pair->first()->convertToLength<AnyConversion>(cssToLengthConversionData()); secondLength = pair->second()->convertToLength<AnyConversion>(cssToLengthConversionData()); } else { firstLength = primitiveValue->convertToLength<AnyConversion>(cssToLengthConversionData()); secondLength = Length(); } b.setWidth(firstLength); b.setHeight(secondLength); layer->setSizeLength(b); }
void CSSToStyleMap::mapFillYPosition(FillLayer* layer, CSSValue* value) const { if (value->isInitialValue()) { layer->setYPosition(FillLayer::initialFillYPosition(layer->type())); return; } if (!value->isPrimitiveValue()) return; CSSPrimitiveValue* primitiveValue = toCSSPrimitiveValue(value); Pair* pair = primitiveValue->getPairValue(); if (pair) primitiveValue = pair->second(); Length length = primitiveValue->convertToLength<FixedConversion | PercentConversion>(cssToLengthConversionData()); layer->setYPosition(length); if (pair) layer->setBackgroundYOrigin(*(pair->first())); }
void CSSToStyleMap::mapFillYPosition(CSSPropertyID propertyID, FillLayer* layer, CSSValue* value) const { if (value->isInitialValue()) { layer->setYPosition(FillLayer::initialFillYPosition(layer->type())); return; } if (!value->isPrimitiveValue()) return; CSSPrimitiveValue* primitiveValue = toCSSPrimitiveValue(value); Pair* pair = primitiveValue->getPairValue(); if (pair) { ASSERT_UNUSED(propertyID, propertyID == CSSPropertyBackgroundPositionY || propertyID == CSSPropertyWebkitMaskPositionY); primitiveValue = pair->second(); } Length length = primitiveValue->convertToLength<FixedConversion | PercentConversion>(cssToLengthConversionData()); layer->setYPosition(length); if (pair) layer->setBackgroundYOrigin(*(pair->first())); }