Ignore:
Timestamp:
Jun 18, 2012, 4:30:29 PM (13 years ago)
Author:
[email protected]
Message:

Add from-image to css3-images image-resolution
https://bugs.webkit.org/show_bug.cgi?id=85451

Patch by David Barr <[email protected]> on 2012-06-18
Reviewed by Tony Chang.

Source/WebCore:

The css3-images module is at candidate recommendation.
http://www.w3.org/TR/2012/CR-css3-images-20120417/#the-image-resolution

No new tests; extended fast/css/image-resolution/image-resolution.html

  • css/CSSParser.cpp: Accept from-image identifier in image-resolution property.

(WebCore::CSSParser::parseImageResolution): Map CSSValueFromImage to identifier value from cssValuePool.

  • css/CSSValueKeywords.in: Add from-image.
  • css/StyleBuilder.cpp: Extend ApplyPropertyImageResolution to apply RenderStyle::imageResolutionSource.

(WebCore::ApplyPropertyImageResolution::applyInheritValue): Apply RenderStyle::imageResolutionSource.
(WebCore::ApplyPropertyImageResolution::applyInitialValue): Apply RenderStyle::imageResolutionSource.
(WebCore::ApplyPropertyImageResolution::applyValue): Map CSSValueFromImage to ImageResolutionFromImage.

  • rendering/RenderImage.cpp: Extend conditions for recalculation of intrinsic size.

(WebCore::RenderImage::styleDidChange): Update intrinsic size if RenderStyle::imageResolutionSource() has changed.

  • rendering/style/RenderStyle.cpp: Include StyleRareInheritedData::m_imageResolutionSource in style diff.

(WebCore::RenderStyle::diff): Map change in StyleRareInheritedData::m_imageResolutionSource to StyleDifferenceLayout.

  • rendering/style/RenderStyle.h: Add RenderStyle::imageResolutionSource, RenderStyle::setImageResolutionSource, RenderStyle::initialImageResolutionSource.
  • rendering/style/RenderStyleConstants.h: Add enum ImageResolutionSource.
  • rendering/style/StyleRareInheritedData.cpp: Add StyleRareInheritedData::m_imageResolutionSource.

(WebCore::StyleRareInheritedData::StyleRareInheritedData): Add m_imageResolutionSource to default and copy constructor.
(WebCore::StyleRareInheritedData::operator==): Include m_imageResolutionSource in comparison.

  • rendering/style/StyleRareInheritedData.h: Add StyleRareInheritedData::m_imageResolutionSource.

(StyleRareInheritedData): Add 1-bit field StyleRareInheritedData::m_imageResolutionSource.

LayoutTests:

  • fast/css/image-resolution/image-resolution-expected.txt:
  • fast/css/image-resolution/image-resolution.html:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/css/StyleBuilder.cpp

    r120609 r120641  
    17731773    static void applyInheritValue(StyleResolver* styleResolver)
    17741774    {
     1775        ApplyPropertyDefaultBase<ImageResolutionSource, &RenderStyle::imageResolutionSource, ImageResolutionSource, &RenderStyle::setImageResolutionSource, ImageResolutionSource, &RenderStyle::initialImageResolutionSource>::applyInheritValue(styleResolver);
    17751776        ApplyPropertyDefaultBase<float, &RenderStyle::imageResolution, float, &RenderStyle::setImageResolution, float, &RenderStyle::initialImageResolution>::applyInheritValue(styleResolver);
    17761777    }
     
    17781779    static void applyInitialValue(StyleResolver* styleResolver)
    17791780    {
     1781        ApplyPropertyDefaultBase<ImageResolutionSource, &RenderStyle::imageResolutionSource, ImageResolutionSource, &RenderStyle::setImageResolutionSource, ImageResolutionSource, &RenderStyle::initialImageResolutionSource>::applyInitialValue(styleResolver);
    17801782        ApplyPropertyDefaultBase<float, &RenderStyle::imageResolution, float, &RenderStyle::setImageResolution, float, &RenderStyle::initialImageResolution>::applyInitialValue(styleResolver);
    17811783    }
     
    17861788            return;
    17871789        CSSValueList* valueList = static_cast<CSSValueList*>(value);
     1790        ImageResolutionSource source = RenderStyle::initialImageResolutionSource();
     1791        double resolution = RenderStyle::initialImageResolution();
    17881792        for (size_t i = 0; i < valueList->length(); i++) {
    17891793            CSSValue* item = valueList->itemWithoutBoundsCheck(i);
     
    17911795                continue;
    17921796            CSSPrimitiveValue* primitiveValue = static_cast<CSSPrimitiveValue*>(item);
    1793             styleResolver->style()->setImageResolution(primitiveValue->getDoubleValue(CSSPrimitiveValue::CSS_DPPX));
    1794         }
     1797            if (primitiveValue->getIdent() == CSSValueFromImage)
     1798                source = ImageResolutionFromImage;
     1799            else
     1800                resolution = primitiveValue->getDoubleValue(CSSPrimitiveValue::CSS_DPPX);
     1801        }
     1802        styleResolver->style()->setImageResolutionSource(source);
     1803        styleResolver->style()->setImageResolution(resolution);
    17951804    }
    17961805
Note: See TracChangeset for help on using the changeset viewer.