<feImage> ignores preserveAspectRatio="none"
https://bugs.webkit.org/show_bug.cgi?id=76780
Reviewed by Antti Koivisto.
Add new testcase covering preserveAspectRatio="none" + <feImage>, which is now fixed.
* platform/chromium/test_expectations.txt: Add new test, that needs a rebaseline.
* platform/mac/svg/filters/feImage-preserveAspectratio-expected.png: Added.
* platform/mac/svg/filters/feImage-preserveAspectratio-expected.txt: Added.
* svg/filters/feImage-preserveAspectratio.svg: Added.
2012-01-21 Nikolas Zimmermann <nzimmermann@rim.com>
<feImage> ignores preserveAspectRatio="none"
https://bugs.webkit.org/show_bug.cgi?id=76780
Reviewed by Antti Koivisto.
preserveAspectRatio="none" was ignored in SVGFEImage. It always called transformRect() w/o checking
whether it was supposed to transform the rect or not - move code from RenderSVGImage right into
transformRect(), to do nothing if preserveAspectRatio="none" was given.
Test: svg/filters/feImage-preserveAspectratio.svg
* rendering/svg/RenderSVGImage.cpp:
(WebCore::RenderSVGImage::paint):
* svg/SVGPreserveAspectRatio.cpp:
(WebCore::SVGPreserveAspectRatio::transformRect):
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@105575
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
+2012-01-21 Nikolas Zimmermann <nzimmermann@rim.com>
+
+ <feImage> ignores preserveAspectRatio="none"
+ https://bugs.webkit.org/show_bug.cgi?id=76780
+
+ Reviewed by Antti Koivisto.
+
+ Add new testcase covering preserveAspectRatio="none" + <feImage>, which is now fixed.
+
+ * platform/chromium/test_expectations.txt: Add new test, that needs a rebaseline.
+ * platform/mac/svg/filters/feImage-preserveAspectratio-expected.png: Added.
+ * platform/mac/svg/filters/feImage-preserveAspectratio-expected.txt: Added.
+ * svg/filters/feImage-preserveAspectratio.svg: Added.
+
2012-01-21 Jochen Eisinger <jochen@chromium.org>
history.replaceState should update the HistoryItem to use a GET method if previously non-GET (POST)
BUGWK76647 : tables/mozilla_expected_failures/bugs/97619.html = IMAGE+TEXT
BUGWK76647 : svg/zoom/page/zoom-background-images.html = IMAGE
+// Just needs a rebaseline.
+BUGWK76780 : svg/filters/feImage-preserveAspectRatio.svg = IMAGE+TEXT
+
// Change error (misspelling) underlines from Windows look to Mac look.
BUG_CARYCLARK MAC : editing/deleting/delete-3928305-fix.html = IMAGE
BUG_CARYCLARK MAC : editing/deleting/delete-3959464-fix.html = IMAGE
--- /dev/null
+layer at (0,0) size 800x600
+ RenderView at (0,0) size 800x600
+layer at (0,0) size 600x250
+ RenderSVGRoot {svg} at (0,0) size 600x250
+ RenderSVGHiddenContainer {defs} at (0,0) size 0x0
+ RenderSVGResourceFilter {filter} [id="Default"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
+ [feImage image-size="100x100"]
+ RenderSVGResourceFilter {filter} [id="Fitted"] [filterUnits=objectBoundingBox] [primitiveUnits=objectBoundingBox]
+ [feImage image-size="100x100"]
+ RenderSVGResourceFilter {filter} [id="Shifted"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
+ [feImage image-size="100x100"]
+ RenderSVGRect {rect} at (0,0) size 600x250 [stroke={[type=SOLID] [color=#0000FF]}] [x=1.00] [y=1.00] [width=598.00] [height=248.00]
+ RenderSVGContainer {g} at (40,5) size 520x241
+ RenderSVGRect {rect} at (40,5) size 120x241 [fill={[type=SOLID] [color=#000000]}] [x=50.00] [y=25.00] [width=100.00] [height=200.00]
+ [filter="Default"] RenderSVGResourceFilter {filter} at (40,5) size 120x240
+ RenderSVGRect {rect} at (49,24) size 102x202 [stroke={[type=SOLID] [color=#008000]}] [x=50.00] [y=25.00] [width=100.00] [height=200.00]
+ RenderSVGRect {rect} at (240,5) size 120x241 [fill={[type=SOLID] [color=#000000]}] [x=250.00] [y=25.00] [width=100.00] [height=200.00]
+ [filter="Fitted"] RenderSVGResourceFilter {filter} at (240,5) size 120x240
+ RenderSVGRect {rect} at (249,24) size 102x202 [stroke={[type=SOLID] [color=#008000]}] [x=250.00] [y=25.00] [width=100.00] [height=200.00]
+ RenderSVGRect {rect} at (440,5) size 120x241 [fill={[type=SOLID] [color=#000000]}] [x=450.00] [y=25.00] [width=100.00] [height=200.00]
+ [filter="Shifted"] RenderSVGResourceFilter {filter} at (440,5) size 120x240
+ RenderSVGRect {rect} at (449,24) size 102x202 [stroke={[type=SOLID] [color=#008000]}] [x=450.00] [y=25.00] [width=100.00] [height=200.00]
--- /dev/null
+<svg width="600" height="250" viewBox="0 0 600 250"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink">
+ <title>Example feImage - Examples of feImage use</title>
+ <desc>Three examples of using feImage, the first showing the
+ default rendering, the second showing the image fit
+ to a box and the third showing the image
+ shifted and clipped.</desc>
+ <defs>
+ <filter id="Default">
+ <feImage xlink:href="../W3C-SVG-1.1/resources/smiley.png" />
+ </filter>
+ <filter id="Fitted" primitiveUnits="objectBoundingBox">
+ <feImage xlink:href="../W3C-SVG-1.1/resources/smiley.png"
+ x="0" y="0" width="100%" height="100%"
+ preserveAspectRatio="none"/>
+ </filter>
+ <filter id="Shifted">
+ <feImage xlink:href="../W3C-SVG-1.1/resources/smiley.png"
+ x="500" y="5"/>
+ </filter>
+ </defs>
+ <rect fill="none" stroke="blue"
+ x="1" y="1" width="598" height="248"/>
+ <g>
+ <rect x="50" y="25" width="100" height="200" filter="url(#Default)"/>
+ <rect x="50" y="25" width="100" height="200" fill="none" stroke="green"/>
+ <rect x="250" y="25" width="100" height="200" filter="url(#Fitted)"/>
+ <rect x="250" y="25" width="100" height="200" fill="none" stroke="green"/>
+ <rect x="450" y="25" width="100" height="200" filter="url(#Shifted)"/>
+ <rect x="450" y="25" width="100" height="200" fill="none" stroke="green"/>
+ </g>
+</svg>
+2012-01-21 Nikolas Zimmermann <nzimmermann@rim.com>
+
+ <feImage> ignores preserveAspectRatio="none"
+ https://bugs.webkit.org/show_bug.cgi?id=76780
+
+ Reviewed by Antti Koivisto.
+
+ preserveAspectRatio="none" was ignored in SVGFEImage. It always called transformRect() w/o checking
+ whether it was supposed to transform the rect or not - move code from RenderSVGImage right into
+ transformRect(), to do nothing if preserveAspectRatio="none" was given.
+
+ Test: svg/filters/feImage-preserveAspectratio.svg
+
+ * rendering/svg/RenderSVGImage.cpp:
+ (WebCore::RenderSVGImage::paint):
+ * svg/SVGPreserveAspectRatio.cpp:
+ (WebCore::SVGPreserveAspectRatio::transformRect):
+
2012-01-21 Jochen Eisinger <jochen@chromium.org>
history.replaceState should update the HistoryItem to use a GET method if previously non-GET (POST)
FloatRect srcRect(0, 0, image->width(), image->height());
SVGImageElement* imageElement = static_cast<SVGImageElement*>(node());
- if (imageElement->preserveAspectRatio().align() != SVGPreserveAspectRatio::SVG_PRESERVEASPECTRATIO_NONE)
- imageElement->preserveAspectRatio().transformRect(destRect, srcRect);
+ imageElement->preserveAspectRatio().transformRect(destRect, srcRect);
childPaintInfo.context->drawImage(image.get(), ColorSpaceDeviceRGB, destRect, srcRect);
}
void SVGPreserveAspectRatio::transformRect(FloatRect& destRect, FloatRect& srcRect)
{
+ if (m_align == SVG_PRESERVEASPECTRATIO_NONE)
+ return;
+
FloatSize imageSize = srcRect.size();
float origDestWidth = destRect.width();
float origDestHeight = destRect.height();