Title: [200889] trunk
Revision
200889
Author
[email protected]
Date
2016-05-13 15:40:57 -0700 (Fri, 13 May 2016)

Log Message

cross-fade() rendering doesn't match expectation
https://bugs.webkit.org/show_bug.cgi?id=157665
rdar://problem/17917708

Reviewed by Dean Jackson.

Source/WebCore:

Cross-fading two opaque images would result in a non-opaque result in between the endpoints,
probably because r157045 caused both images to be drawn with srcOver, since drawImage()
clobbers the composite operation in the context.

Fix by passing the composite operation to the drawImage() calls for the non-transparency layer
code path.

Converted css3/images/cross-fade-blending.html into a ref test to test this.

* platform/graphics/CrossfadeGeneratedImage.cpp:
(WebCore::drawCrossfadeSubimage):

LayoutTests:

Make css3/images/cross-fade-blending.html a ref test.

* css3/images/cross-fade-blending-expected.html: Added.
* css3/images/cross-fade-blending-expected.png: Removed.
* css3/images/cross-fade-blending-expected.txt: Removed.
* css3/images/cross-fade-blending.html:
* platform/mac/css3/images/cross-fade-blending-expected.png: Removed.

Modified Paths

Added Paths

Removed Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (200888 => 200889)


--- trunk/LayoutTests/ChangeLog	2016-05-13 22:40:52 UTC (rev 200888)
+++ trunk/LayoutTests/ChangeLog	2016-05-13 22:40:57 UTC (rev 200889)
@@ -1,5 +1,21 @@
 2016-05-13  Simon Fraser  <[email protected]>
 
+        cross-fade() rendering doesn't match expectation
+        https://bugs.webkit.org/show_bug.cgi?id=157665
+        rdar://problem/17917708
+
+        Reviewed by Dean Jackson.
+
+        Make css3/images/cross-fade-blending.html a ref test.
+
+        * css3/images/cross-fade-blending-expected.html: Added.
+        * css3/images/cross-fade-blending-expected.png: Removed.
+        * css3/images/cross-fade-blending-expected.txt: Removed.
+        * css3/images/cross-fade-blending.html:
+        * platform/mac/css3/images/cross-fade-blending-expected.png: Removed.
+
+2016-05-13  Simon Fraser  <[email protected]>
+
         Unprefix -webkit-cross-fade()
         https://bugs.webkit.org/show_bug.cgi?id=157632
 

Added: trunk/LayoutTests/css3/images/cross-fade-blending-expected.html (0 => 200889)


--- trunk/LayoutTests/css3/images/cross-fade-blending-expected.html	                        (rev 0)
+++ trunk/LayoutTests/css3/images/cross-fade-blending-expected.html	2016-05-13 22:40:57 UTC (rev 200889)
@@ -0,0 +1,17 @@
+<html>
+<style>
+div
+{
+    width: 200px;
+    height: 100px;
+}
+
+.image
+{
+    background-image: url(resources/green-10.png);
+}
+</style>
+<div class="image"></div>
+<div class="image"></div>
+<div class="image"></div>
+</html>

Deleted: trunk/LayoutTests/css3/images/cross-fade-blending-expected.png (200888 => 200889)


--- trunk/LayoutTests/css3/images/cross-fade-blending-expected.png	2016-05-13 22:40:52 UTC (rev 200888)
+++ trunk/LayoutTests/css3/images/cross-fade-blending-expected.png	2016-05-13 22:40:57 UTC (rev 200889)
@@ -1,7 +0,0 @@
-\x89PNG
-
--IHDR X')tEXtchecksumbc04d27321e03146cf94bbc61b154f61\x9D3\xB1bKGD\xFF\xFF\xFF\xA0\xBD\xA7\x93
-\xC1IDATx\x9C\xEDܱ-\xC401;\xC8\xFE++\xA4;\xE4?٪QyP\xA1=3\x80\xCE\xF5\xEBN#\xB0b &\xB0b &\xB0b v\xBF-\xF6\xDA_\xEE\xC1\x9F\x98\xE5\xEF\xE7s\xC1\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x
 80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80
 \x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88\xDDo\x83Y\xF3\xE5\xC7p\xC1\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0
 \x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0
 \x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x
 88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88
 	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88=:\xE4\xAF>\xF9z\x9FIEND\xAEB`\x82
\ No newline at end of file

Deleted: trunk/LayoutTests/css3/images/cross-fade-blending-expected.txt (200888 => 200889)


--- trunk/LayoutTests/css3/images/cross-fade-blending-expected.txt	2016-05-13 22:40:52 UTC (rev 200888)
+++ trunk/LayoutTests/css3/images/cross-fade-blending-expected.txt	2016-05-13 22:40:57 UTC (rev 200889)
@@ -1,8 +0,0 @@
-layer at (0,0) size 800x600
-  RenderView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  RenderBlock {HTML} at (0,0) size 800x600
-    RenderBody {BODY} at (8,8) size 784x584
-      RenderBlock {DIV} at (0,0) size 200x100
-      RenderBlock {DIV} at (0,100) size 200x100 [bgcolor=#000000]
-        RenderBlock {DIV} at (0,0) size 200x100

Modified: trunk/LayoutTests/css3/images/cross-fade-blending.html (200888 => 200889)


--- trunk/LayoutTests/css3/images/cross-fade-blending.html	2016-05-13 22:40:52 UTC (rev 200888)
+++ trunk/LayoutTests/css3/images/cross-fade-blending.html	2016-05-13 22:40:57 UTC (rev 200889)
@@ -2,16 +2,22 @@
 <style>
 div
 {
-	width: 200px;
-	height: 100px;
+    width: 200px;
+    height: 100px;
 }
 
-div.crossfade
+.crossfade1
 {
-	background-image: -webkit-cross-fade(url(resources/green-10.png), url(resources/green-10.png), 50%);
+    background-image: cross-fade(url(resources/green-10.png), url(resources/green-10.png), 50%);
 }
+
+.crossfade2
+{
+    background-image: cross-fade(url(resources/green-10.png), url(resources/green-10-2.png), 50%);
+}
 </style>
-<!--The first cross-fade should appear as a 100% green square, 200x200px.-->
-<div class="crossfade"></div>
-<div style="background-color: black"><div class="crossfade"></div></div>
+<!-- All rectangles should look the same-->
+<div class="crossfade1"></div>
+<div class="crossfade2"></div>
+<div style="background-color: black"><div class="crossfade2"></div></div>
 </html>

Added: trunk/LayoutTests/css3/images/resources/green-10-2.png


(Binary files differ)
Property changes on: trunk/LayoutTests/css3/images/resources/green-10-2.png ___________________________________________________________________

Added: svn:mime-type

Deleted: trunk/LayoutTests/platform/mac/css3/images/cross-fade-blending-expected.png


(Binary files differ)

Modified: trunk/Source/WebCore/ChangeLog (200888 => 200889)


--- trunk/Source/WebCore/ChangeLog	2016-05-13 22:40:52 UTC (rev 200888)
+++ trunk/Source/WebCore/ChangeLog	2016-05-13 22:40:57 UTC (rev 200889)
@@ -1,5 +1,25 @@
 2016-05-13  Simon Fraser  <[email protected]>
 
+        cross-fade() rendering doesn't match expectation
+        https://bugs.webkit.org/show_bug.cgi?id=157665
+        rdar://problem/17917708
+
+        Reviewed by Dean Jackson.
+
+        Cross-fading two opaque images would result in a non-opaque result in between the endpoints,
+        probably because r157045 caused both images to be drawn with srcOver, since drawImage()
+        clobbers the composite operation in the context.
+
+        Fix by passing the composite operation to the drawImage() calls for the non-transparency layer
+        code path.
+
+        Converted css3/images/cross-fade-blending.html into a ref test to test this.
+
+        * platform/graphics/CrossfadeGeneratedImage.cpp:
+        (WebCore::drawCrossfadeSubimage):
+
+2016-05-13  Simon Fraser  <[email protected]>
+
         Unprefix -webkit-cross-fade()
         https://bugs.webkit.org/show_bug.cgi?id=157632
 

Modified: trunk/Source/WebCore/platform/graphics/CrossfadeGeneratedImage.cpp (200888 => 200889)


--- trunk/Source/WebCore/platform/graphics/CrossfadeGeneratedImage.cpp	2016-05-13 22:40:52 UTC (rev 200888)
+++ trunk/Source/WebCore/platform/graphics/CrossfadeGeneratedImage.cpp	2016-05-13 22:40:57 UTC (rev 200889)
@@ -50,18 +50,21 @@
     bool useTransparencyLayer = image.isSVGImage();
 
     GraphicsContextStateSaver stateSaver(context);
+    
+    CompositeOperator drawImageOperation = operation;
 
-    context.setCompositeOperation(operation);
-
-    if (useTransparencyLayer)
+    if (useTransparencyLayer) {
+        context.setCompositeOperation(operation);
         context.beginTransparencyLayer(opacity);
-    else
+        drawImageOperation = CompositeSourceOver;
+    } else
         context.setAlpha(opacity);
 
     if (targetSize != imageSize)
         context.scale(FloatSize(targetSize.width() / imageSize.width(), targetSize.height() / imageSize.height()));
-    context.drawImage(image, IntPoint());
 
+    context.drawImage(image, IntPoint(), ImagePaintingOptions(drawImageOperation));
+
     if (useTransparencyLayer)
         context.endTransparencyLayer();
 }
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to