Title: [225152] trunk
- Revision
- 225152
- Author
- [email protected]
- Date
- 2017-11-26 18:19:53 -0800 (Sun, 26 Nov 2017)
Log Message
feImage as filter input has skewed colors
https://bugs.webkit.org/show_bug.cgi?id=180021
Reviewed by Sam Weinig.
Source/WebCore:
Using an <feImage> as a filter input sometimes results in incorrect colors, because
the image is being sourced as linearRGB when it should always be sRGB.
Fix by setting the result colorspace in FEImage before we allocate the output
buffer.
Tests: svg/filters/feImage-color-fidelity-expected.svg
svg/filters/feImage-color-fidelity.svg
* svg/graphics/filters/SVGFEImage.cpp:
(WebCore::FEImage::platformApplySoftware):
LayoutTests:
* svg/filters/feImage-color-fidelity-expected.svg: Added.
* svg/filters/feImage-color-fidelity.svg: Added.
Modified Paths
Added Paths
Diff
Modified: trunk/LayoutTests/ChangeLog (225151 => 225152)
--- trunk/LayoutTests/ChangeLog 2017-11-27 01:46:59 UTC (rev 225151)
+++ trunk/LayoutTests/ChangeLog 2017-11-27 02:19:53 UTC (rev 225152)
@@ -1,5 +1,15 @@
2017-11-26 Simon Fraser <[email protected]>
+ feImage as filter input has skewed colors
+ https://bugs.webkit.org/show_bug.cgi?id=180021
+
+ Reviewed by Sam Weinig.
+
+ * svg/filters/feImage-color-fidelity-expected.svg: Added.
+ * svg/filters/feImage-color-fidelity.svg: Added.
+
+2017-11-26 Simon Fraser <[email protected]>
+
Use more Uint8ClampedArray& and constness in filter and image buffer code
https://bugs.webkit.org/show_bug.cgi?id=180008
Added: trunk/LayoutTests/svg/filters/feImage-color-fidelity-expected.svg (0 => 225152)
--- trunk/LayoutTests/svg/filters/feImage-color-fidelity-expected.svg (rev 0)
+++ trunk/LayoutTests/svg/filters/feImage-color-fidelity-expected.svg 2017-11-27 02:19:53 UTC (rev 225152)
@@ -0,0 +1,8 @@
+<svg version="1.2" width="600" height="300" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <defs>
+ <filter id="image" filterUnits="objectBoundingBox" primitiveUnits="userSpaceOnUse" x="0" y="0" width="1" height="1">
+ <feImage xlink:href="" result="image-out" width="200" height="200" />
+ </filter>
+ </defs>
+ <rect filter="url(#image)" fill="none" stroke="green" x="50" y="50" width="200" height="200"/>
+</svg>
Added: trunk/LayoutTests/svg/filters/feImage-color-fidelity.svg (0 => 225152)
--- trunk/LayoutTests/svg/filters/feImage-color-fidelity.svg (rev 0)
+++ trunk/LayoutTests/svg/filters/feImage-color-fidelity.svg 2017-11-27 02:19:53 UTC (rev 225152)
@@ -0,0 +1,10 @@
+<svg version="1.2" width="600" height="300" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <defs>
+ <filter id="displacement" filterUnits="objectBoundingBox" primitiveUnits="userSpaceOnUse" x="0" y="0" width="1" height="1">
+ <feImage xlink:href="" result="image-out" width="200" height="200" />
+ <feFlood flood-color="black" flood-opacity="1.0" height="200" width="200" result="black-input"/>
+ <feDisplacementMap scale="0" in="image-out" in2="black-input" xChannelSelector="R" yChannelSelector="G"/>
+ </filter>
+ </defs>
+ <rect filter="url(#displacement)" fill="none" stroke="green" x="50" y="50" width="200" height="200"/>
+</svg>
Modified: trunk/Source/WebCore/ChangeLog (225151 => 225152)
--- trunk/Source/WebCore/ChangeLog 2017-11-27 01:46:59 UTC (rev 225151)
+++ trunk/Source/WebCore/ChangeLog 2017-11-27 02:19:53 UTC (rev 225152)
@@ -1,3 +1,22 @@
+2017-11-26 Simon Fraser <[email protected]>
+
+ feImage as filter input has skewed colors
+ https://bugs.webkit.org/show_bug.cgi?id=180021
+
+ Reviewed by Sam Weinig.
+
+ Using an <feImage> as a filter input sometimes results in incorrect colors, because
+ the image is being sourced as linearRGB when it should always be sRGB.
+
+ Fix by setting the result colorspace in FEImage before we allocate the output
+ buffer.
+
+ Tests: svg/filters/feImage-color-fidelity-expected.svg
+ svg/filters/feImage-color-fidelity.svg
+
+ * svg/graphics/filters/SVGFEImage.cpp:
+ (WebCore::FEImage::platformApplySoftware):
+
2017-11-26 Minsheng Liu <[email protected]>
Cleanup code for RenderMathMLUnderOver::layoutBlock
Modified: trunk/Source/WebCore/svg/graphics/filters/SVGFEImage.cpp (225151 => 225152)
--- trunk/Source/WebCore/svg/graphics/filters/SVGFEImage.cpp 2017-11-27 01:46:59 UTC (rev 225151)
+++ trunk/Source/WebCore/svg/graphics/filters/SVGFEImage.cpp 2017-11-27 02:19:53 UTC (rev 225152)
@@ -94,6 +94,9 @@
if (!m_image && !renderer)
return;
+ // FEImage results are always in ColorSpaceSRGB
+ setResultColorSpace(ColorSpaceSRGB);
+
ImageBuffer* resultImage = createImageBufferResult();
if (!resultImage)
return;
@@ -111,9 +114,6 @@
IntPoint paintLocation = absolutePaintRect().location();
destRect.move(-paintLocation.x(), -paintLocation.y());
- // FEImage results are always in ColorSpaceSRGB
- setResultColorSpace(ColorSpaceSRGB);
-
if (renderer) {
const AffineTransform& absoluteTransform = filter().absoluteTransform();
resultImage->context().concatCTM(absoluteTransform);
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes