<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[208058] trunk</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/208058">208058</a></dd>
<dt>Author</dt> <dd>simon.fraser@apple.com</dd>
<dt>Date</dt> <dd>2016-10-28 11:34:17 -0700 (Fri, 28 Oct 2016)</dd>
</dl>

<h3>Log Message</h3>
<pre>Wrong blur radius for filter: drop-shadow()
https://bugs.webkit.org/show_bug.cgi?id=163667

Reviewed by Darin Adler.

Source/WebCore:

The &quot;stdDev&quot; parameter to &lt;feDropShadow&gt; and &lt;feGaussianBlur&gt; represents the standard
deviation (σ) of the Gaussian blur function. CSS filters drop-shadow() and blur() follow
this with their radius parameter.

However, CSS box-shadow and text-shadow use 2σ to describe the blur radius, since this
is conveniently close to the number of pixels the effect of the blur extends out.

feDropShadow, which is used by non-accelerated filter: drop-shadow(), was using
the wrong blur radius because it passed its stdDev directly to ShadowBlur. ShadowBlur
was written for CSS box-shadow, so expected its input &quot;blur radius&quot; to be twice the
stdDev.

Tests: css3/filters/drop-shadow-blur-radius.html
       svg/filters/feDropShadow-blur-radius.html

* platform/graphics/filters/FEDropShadow.cpp:
(WebCore::FEDropShadow::platformApplySoftware):

LayoutTests:

Mismatch tests to detect that the blurry area extends out from under a masking
element on top.

* css3/filters/drop-shadow-blur-radius-expected-mismatch.html: Added.
* css3/filters/drop-shadow-blur-radius.html: Added.
* svg/filters/feDropShadow-blur-radius-expected-mismatch.html: Added.
* svg/filters/feDropShadow-blur-radius.html: Added.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsfiltersFEDropShadowcpp">trunk/Source/WebCore/platform/graphics/filters/FEDropShadow.cpp</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkLayoutTestscss3filtersdropshadowblurradiusexpectedmismatchhtml">trunk/LayoutTests/css3/filters/drop-shadow-blur-radius-expected-mismatch.html</a></li>
<li><a href="#trunkLayoutTestscss3filtersdropshadowblurradiushtml">trunk/LayoutTests/css3/filters/drop-shadow-blur-radius.html</a></li>
<li><a href="#trunkLayoutTestssvgfiltersfeDropShadowblurradiusexpectedmismatchhtml">trunk/LayoutTests/svg/filters/feDropShadow-blur-radius-expected-mismatch.html</a></li>
<li><a href="#trunkLayoutTestssvgfiltersfeDropShadowblurradiushtml">trunk/LayoutTests/svg/filters/feDropShadow-blur-radius.html</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (208057 => 208058)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2016-10-28 18:09:41 UTC (rev 208057)
+++ trunk/LayoutTests/ChangeLog        2016-10-28 18:34:17 UTC (rev 208058)
</span><span class="lines">@@ -1,3 +1,18 @@
</span><ins>+2016-10-28  Simon Fraser  &lt;simon.fraser@apple.com&gt;
+
+        Wrong blur radius for filter: drop-shadow()
+        https://bugs.webkit.org/show_bug.cgi?id=163667
+
+        Reviewed by Darin Adler.
+        
+        Mismatch tests to detect that the blurry area extends out from under a masking
+        element on top.
+
+        * css3/filters/drop-shadow-blur-radius-expected-mismatch.html: Added.
+        * css3/filters/drop-shadow-blur-radius.html: Added.
+        * svg/filters/feDropShadow-blur-radius-expected-mismatch.html: Added.
+        * svg/filters/feDropShadow-blur-radius.html: Added.
+
</ins><span class="cx"> 2016-10-28  Youenn Fablet  &lt;youenn@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Expose RTCPeerConnection unprefixed
</span></span></pre></div>
<a id="trunkLayoutTestscss3filtersdropshadowblurradiusexpectedmismatchhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/css3/filters/drop-shadow-blur-radius-expected-mismatch.html (0 => 208058)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/css3/filters/drop-shadow-blur-radius-expected-mismatch.html                                (rev 0)
+++ trunk/LayoutTests/css3/filters/drop-shadow-blur-radius-expected-mismatch.html        2016-10-28 18:34:17 UTC (rev 208058)
</span><span class="lines">@@ -0,0 +1,19 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;head&gt;
+    &lt;style&gt;
+        .overlay {
+            position: absolute;
+            top: 75px;
+            left: 75px;
+            height: 250px;
+            width: 250px;
+            border-radius: 50%;
+            background-color: green;
+        }
+    &lt;/style&gt;
+&lt;/head&gt;
+&lt;body&gt;
+    &lt;div class=&quot;overlay&quot;&gt;&lt;/div&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestscss3filtersdropshadowblurradiushtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/css3/filters/drop-shadow-blur-radius.html (0 => 208058)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/css3/filters/drop-shadow-blur-radius.html                                (rev 0)
+++ trunk/LayoutTests/css3/filters/drop-shadow-blur-radius.html        2016-10-28 18:34:17 UTC (rev 208058)
</span><span class="lines">@@ -0,0 +1,31 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;head&gt;
+    &lt;style&gt;
+        .circle {
+            position: absolute;
+            top: 100px;
+            left: 100px;
+            height: 200px;
+            width: 200px;
+            border-radius: 50%;
+            background-color: white;
+            filter: drop-shadow(0 0 20px black);
+        }
+        
+        .overlay {
+            position: absolute;
+            top: 75px;
+            left: 75px;
+            height: 250px;
+            width: 250px;
+            border-radius: 50%;
+            background-color: green;
+        }
+    &lt;/style&gt;
+&lt;/head&gt;
+&lt;body&gt;
+    &lt;div class=&quot;circle&quot;&gt;&lt;/div&gt;
+    &lt;div class=&quot;overlay&quot;&gt;&lt;/div&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestssvgfiltersfeDropShadowblurradiusexpectedmismatchhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/svg/filters/feDropShadow-blur-radius-expected-mismatch.html (0 => 208058)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/svg/filters/feDropShadow-blur-radius-expected-mismatch.html                                (rev 0)
+++ trunk/LayoutTests/svg/filters/feDropShadow-blur-radius-expected-mismatch.html        2016-10-28 18:34:17 UTC (rev 208058)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; style=&quot;width: 400px; height: 400px;&quot;&gt;
+    &lt;circle cx=&quot;150&quot; cy=&quot;150&quot; r=&quot;124&quot; fill=&quot;green&quot;/&gt;
+&lt;/svg&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestssvgfiltersfeDropShadowblurradiushtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/svg/filters/feDropShadow-blur-radius.html (0 => 208058)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/svg/filters/feDropShadow-blur-radius.html                                (rev 0)
+++ trunk/LayoutTests/svg/filters/feDropShadow-blur-radius.html        2016-10-28 18:34:17 UTC (rev 208058)
</span><span class="lines">@@ -0,0 +1,9 @@
</span><ins>+&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; style=&quot;width: 400px; height: 400px;&quot;&gt;
+    &lt;defs&gt;
+        &lt;filter id=&quot;drop-shadow&quot; x=&quot;-20%&quot; y=&quot;-20%&quot; width=&quot;150%&quot; height=&quot;150%&quot;&gt;
+            &lt;feDropShadow stdDeviation=&quot;20&quot;/&gt;
+        &lt;/filter&gt;
+    &lt;/defs&gt;
+    &lt;circle cx=&quot;150&quot; cy=&quot;150&quot; r=&quot;100&quot; fill=&quot;white&quot; filter=&quot;url(#drop-shadow)&quot;/&gt;
+    &lt;circle cx=&quot;150&quot; cy=&quot;150&quot; r=&quot;124&quot; fill=&quot;green&quot;/&gt;
+&lt;/svg&gt;
</ins></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (208057 => 208058)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2016-10-28 18:09:41 UTC (rev 208057)
+++ trunk/Source/WebCore/ChangeLog        2016-10-28 18:34:17 UTC (rev 208058)
</span><span class="lines">@@ -1,3 +1,28 @@
</span><ins>+2016-10-28  Simon Fraser  &lt;simon.fraser@apple.com&gt;
+
+        Wrong blur radius for filter: drop-shadow()
+        https://bugs.webkit.org/show_bug.cgi?id=163667
+
+        Reviewed by Darin Adler.
+        
+        The &quot;stdDev&quot; parameter to &lt;feDropShadow&gt; and &lt;feGaussianBlur&gt; represents the standard
+        deviation (σ) of the Gaussian blur function. CSS filters drop-shadow() and blur() follow
+        this with their radius parameter.
+        
+        However, CSS box-shadow and text-shadow use 2σ to describe the blur radius, since this
+        is conveniently close to the number of pixels the effect of the blur extends out.
+        
+        feDropShadow, which is used by non-accelerated filter: drop-shadow(), was using
+        the wrong blur radius because it passed its stdDev directly to ShadowBlur. ShadowBlur
+        was written for CSS box-shadow, so expected its input &quot;blur radius&quot; to be twice the
+        stdDev.
+        
+        Tests: css3/filters/drop-shadow-blur-radius.html
+               svg/filters/feDropShadow-blur-radius.html
+
+        * platform/graphics/filters/FEDropShadow.cpp:
+        (WebCore::FEDropShadow::platformApplySoftware):
+
</ins><span class="cx"> 2016-10-28  Youenn Fablet  &lt;youenn@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Expose RTCPeerConnection unprefixed
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsfiltersFEDropShadowcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/filters/FEDropShadow.cpp (208057 => 208058)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/filters/FEDropShadow.cpp        2016-10-28 18:09:41 UTC (rev 208057)
+++ trunk/Source/WebCore/platform/graphics/filters/FEDropShadow.cpp        2016-10-28 18:34:17 UTC (rev 208058)
</span><span class="lines">@@ -78,7 +78,7 @@
</span><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     Filter&amp; filter = this-&gt;filter();
</span><del>-    FloatSize blurRadius(filter.applyHorizontalScale(m_stdX), filter.applyVerticalScale(m_stdY));
</del><ins>+    FloatSize blurRadius(2 * filter.applyHorizontalScale(m_stdX), 2 * filter.applyVerticalScale(m_stdY));
</ins><span class="cx">     blurRadius.scale(filter.filterScale());
</span><span class="cx">     FloatSize offset(filter.applyHorizontalScale(m_dx), filter.applyVerticalScale(m_dy));
</span><span class="cx"> 
</span></span></pre>
</div>
</div>

</body>
</html>