haikuwebkit/LayoutTests/svg/paint-order/paint-order-markers-stroke-...

5 lines
245 B
XML
Raw Permalink Normal View History

[SVG2] support paint-order presentation attribute https://bugs.webkit.org/show_bug.cgi?id=129373 Reviewed by Dean Jackson. Source/WebCore: Add support for the paint-order property from SVG2. The presentation attribute/CSS property allows to paint fill, stroke and markers in any order the author desires. Firefox supports this but behind a runtime flag. It is just activated in nightly builds by default. Chromium supports it behind a runtime flag as well but is going to ship it pretty soon. Tests: svg/paint-order/paint-order-fill-expected.svg svg/paint-order/paint-order-fill-markers-expected.svg svg/paint-order/paint-order-fill-markers.svg svg/paint-order/paint-order-fill.svg svg/paint-order/paint-order-markers-expected.svg svg/paint-order/paint-order-markers-stroke-expected.svg svg/paint-order/paint-order-markers-stroke.svg svg/paint-order/paint-order-markers.svg svg/paint-order/paint-order-normal-expected.svg svg/paint-order/paint-order-normal.svg svg/paint-order/paint-order-stroke-expected.svg svg/paint-order/paint-order-stroke-marker-expected.svg svg/paint-order/paint-order-stroke-marker.svg svg/paint-order/paint-order-stroke.svg svg/paint-order/paint-order-text-markers-expected.svg svg/paint-order/paint-order-text-markers.svg svg/paint-order/paint-order-text-normal-expected.svg svg/paint-order/paint-order-text-normal.svg svg/paint-order/paint-order-text-stroke-expected.svg svg/paint-order/paint-order-text-stroke.svg svg/paint-order/paint-order-text-tspan-001-expected.svg svg/paint-order/paint-order-text-tspan-001.svg svg/paint-order/paint-order-text-tspan-002-expected.svg svg/paint-order/paint-order-text-tspan-002.svg svg/paint-order/parsing-paint-order.html * css/CSSComputedStyleDeclaration.cpp: Computed style for paint-order. (WebCore::ComputedStyleExtractor::propertyValue): * css/CSSParser.h: * css/CSSPropertyNames.in: * css/CSSValueKeywords.in: * css/SVGCSSComputedStyleDeclaration.cpp: (WebCore::paintOrder): (WebCore::ComputedStyleExtractor::svgPropertyValue): * css/SVGCSSParser.cpp: Parse paint-order. Take care of serialization at this point already to get element style correct. (WebCore::CSSParser::parseSVGValue): (WebCore::CSSParser::parsePaintOrder): * css/SVGCSSStyleSelector.cpp: (WebCore::StyleResolver::applySVGProperty): * rendering/style/SVGRenderStyle.cpp: (WebCore::SVGRenderStyle::paintTypesForPaintOrder): (WebCore::SVGRenderStyle::diff): Repaint on change. * rendering/style/SVGRenderStyle.h: (WebCore::SVGRenderStyle::initialPaintOrder): (WebCore::SVGRenderStyle::setPaintOrder): (WebCore::SVGRenderStyle::paintOrder): (WebCore::SVGRenderStyle::InheritedFlags::operator==): (WebCore::SVGRenderStyle::setBitDefaults): * rendering/style/SVGRenderStyleDefs.h: * rendering/svg/RenderSVGShape.cpp: Change order of painting based on paint-order. (WebCore::RenderSVGShape::strokeShape): (WebCore::RenderSVGShape::fillStrokeMarkers): (WebCore::RenderSVGShape::paint): (WebCore::RenderSVGShape::addFocusRingRects): * rendering/svg/RenderSVGShape.h: * rendering/svg/SVGInlineTextBox.cpp: (WebCore::SVGInlineTextBox::paint): Ditto. * svg/SVGElement.cpp: Make property a presentation attribute. (WebCore::populateAttributeNameToCSSPropertyIDMap): (WebCore::populateAttributeNameToAnimatedPropertyTypeMap): * svg/svgattrs.in: Add paint-order attribute. LayoutTests: Test parsing and bahvior of the paint-order property. * svg/paint-order/paint-order-fill-expected.svg: Added. * svg/paint-order/paint-order-fill-markers-expected.svg: Added. * svg/paint-order/paint-order-fill-markers.svg: Added. * svg/paint-order/paint-order-fill.svg: Added. * svg/paint-order/paint-order-markers-expected.svg: Added. * svg/paint-order/paint-order-markers-stroke-expected.svg: Added. * svg/paint-order/paint-order-markers-stroke.svg: Added. * svg/paint-order/paint-order-markers.svg: Added. * svg/paint-order/paint-order-normal-expected.svg: Added. * svg/paint-order/paint-order-normal.svg: Added. * svg/paint-order/paint-order-stroke-expected.svg: Added. * svg/paint-order/paint-order-stroke-marker-expected.svg: Added. * svg/paint-order/paint-order-stroke-marker.svg: Added. * svg/paint-order/paint-order-stroke.svg: Added. * svg/paint-order/paint-order-text-markers-expected.svg: Added. * svg/paint-order/paint-order-text-markers.svg: Added. * svg/paint-order/paint-order-text-normal-expected.svg: Added. * svg/paint-order/paint-order-text-normal.svg: Added. * svg/paint-order/paint-order-text-stroke-expected.svg: Added. * svg/paint-order/paint-order-text-stroke.svg: Added. * svg/paint-order/paint-order-text-tspan-001-expected.svg: Added. * svg/paint-order/paint-order-text-tspan-001.svg: Added. * svg/paint-order/paint-order-text-tspan-002-expected.svg: Added. * svg/paint-order/paint-order-text-tspan-002.svg: Added. * svg/paint-order/parsing-paint-order-expected.txt: Added. * svg/paint-order/parsing-paint-order.html: Added. Canonical link: https://commits.webkit.org/148185@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@165595 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2014-03-14 02:25:41 +00:00
<svg xmlns="http://www.w3.org/2000/svg">
<rect width="100" height="100" fill="yellow"/>
<rect x="50" y="50" width="100" height="100" fill="none" stroke="green" stroke-width="20"/>
<rect x="50" y="50" width="100" height="100" fill="blue"/>
</svg>