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
- trunk/LayoutTests/ChangeLog
- trunk/LayoutTests/css3/images/cross-fade-blending.html
- trunk/Source/WebCore/ChangeLog
- trunk/Source/WebCore/platform/graphics/CrossfadeGeneratedImage.cpp
Added Paths
- trunk/LayoutTests/css3/images/cross-fade-blending-expected.html
- trunk/LayoutTests/css3/images/resources/green-10-2.png
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ܱ-\xC401;\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)
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
