Title: [87389] trunk
Revision
87389
Author
simon.fra...@apple.com
Date
2011-05-26 08:56:47 -0700 (Thu, 26 May 2011)

Log Message

2011-05-26  Simon Fraser  <simon.fra...@apple.com>

        Reviewed by Adam Roben.

        Some repeating linear gradients look wrong
        https://bugs.webkit.org/show_bug.cgi?id=61371

        Test: fast/gradients/css3-repeating-linear-gradients2.html

        Fix incorrect stop duplication code when filling forwards a repeating
        gradient. The "if (srcStopOrdinal < originalNumStops - 1)" test was wrong
        because srcStopOrdinal had been adjusted for stops added by start-filling,
        but originalNumStops had not. Fix by considering srcStopOrdinal as an index
        into the original stops, so comparing it with originalNumStops remains valid.

        * css/CSSGradientValue.cpp:
        (WebCore::CSSGradientValue::addStops):

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (87388 => 87389)


--- trunk/LayoutTests/ChangeLog	2011-05-26 15:54:54 UTC (rev 87388)
+++ trunk/LayoutTests/ChangeLog	2011-05-26 15:56:47 UTC (rev 87389)
@@ -1,5 +1,18 @@
 2011-05-25  Simon Fraser  <simon.fra...@apple.com>
 
+        Reviewed by Adam Roben.
+
+        Some repeating linear gradients look wrong
+        https://bugs.webkit.org/show_bug.cgi?id=61371
+        
+        Pixel test for repeating linear gradient.
+
+        * fast/gradients/css3-repeating-linear-gradients2-expected.txt: Added.
+        * fast/gradients/css3-repeating-linear-gradients2.html: Added.
+        * platform/mac/fast/gradients/css3-repeating-linear-gradients2-expected.png: Added.
+
+2011-05-25  Simon Fraser  <simon.fra...@apple.com>
+
         Reviewed by Dan Bernstein.
 
         Always antialias table borders when scaling

Added: trunk/LayoutTests/fast/gradients/css3-repeating-linear-gradients2-expected.txt (0 => 87389)


--- trunk/LayoutTests/fast/gradients/css3-repeating-linear-gradients2-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/fast/gradients/css3-repeating-linear-gradients2-expected.txt	2011-05-26 15:56:47 UTC (rev 87389)
@@ -0,0 +1 @@
+

Added: trunk/LayoutTests/fast/gradients/css3-repeating-linear-gradients2.html (0 => 87389)


--- trunk/LayoutTests/fast/gradients/css3-repeating-linear-gradients2.html	                        (rev 0)
+++ trunk/LayoutTests/fast/gradients/css3-repeating-linear-gradients2.html	2011-05-26 15:56:47 UTC (rev 87389)
@@ -0,0 +1,32 @@
+<!DOCTYPE html>
+
+<html>
+<head>
+  <style>
+    .box {
+      display: inline-block;
+      height: 120px;
+      width: 400px;
+      margin: 10px;
+      border: 1px solid black;
+      background-repeat: no-repeat;
+    }
+
+    .linear1 {
+      background-image: -webkit-repeating-linear-gradient(0deg, green 150px, blue 175px, blue 200px);
+      background-image: -moz-repeating-linear-gradient(0deg, green 150px, blue 175px, blue 200px);
+    }
+  </style>
+  <script>
+    if (window.layoutTestController) {
+      var dumpPixels = true;
+      layoutTestController.dumpAsText(dumpPixels);
+    }
+  </script>
+</head>
+<body>
+
+  <div class="linear1 box"></div>
+
+</body>
+</html>

Added: trunk/LayoutTests/platform/mac/fast/gradients/css3-repeating-linear-gradients2-expected.png


(Binary files differ)
Property changes on: trunk/LayoutTests/platform/mac/fast/gradients/css3-repeating-linear-gradients2-expected.png ___________________________________________________________________

Added: svn:mime-type

Modified: trunk/Source/WebCore/ChangeLog (87388 => 87389)


--- trunk/Source/WebCore/ChangeLog	2011-05-26 15:54:54 UTC (rev 87388)
+++ trunk/Source/WebCore/ChangeLog	2011-05-26 15:56:47 UTC (rev 87389)
@@ -1,3 +1,21 @@
+2011-05-26  Simon Fraser  <simon.fra...@apple.com>
+
+        Reviewed by Adam Roben.
+
+        Some repeating linear gradients look wrong
+        https://bugs.webkit.org/show_bug.cgi?id=61371
+
+        Test: fast/gradients/css3-repeating-linear-gradients2.html
+        
+        Fix incorrect stop duplication code when filling forwards a repeating
+        gradient. The "if (srcStopOrdinal < originalNumStops - 1)" test was wrong
+        because srcStopOrdinal had been adjusted for stops added by start-filling,
+        but originalNumStops had not. Fix by considering srcStopOrdinal as an index
+        into the original stops, so comparing it with originalNumStops remains valid.
+
+        * css/CSSGradientValue.cpp:
+        (WebCore::CSSGradientValue::addStops):
+
 2011-05-26  Vsevolod Vlasov  <vse...@chromium.org>
 
         Reviewed by Yury Semikhatsky.

Modified: trunk/Source/WebCore/css/CSSGradientValue.cpp (87388 => 87389)


--- trunk/Source/WebCore/css/CSSGradientValue.cpp	2011-05-26 15:54:54 UTC (rev 87388)
+++ trunk/Source/WebCore/css/CSSGradientValue.cpp	2011-05-26 15:56:47 UTC (rev 87389)
@@ -281,16 +281,17 @@
             float lastOffset = stops[stops.size() - 1].offset;
             if (lastOffset < maxExtent) {
                 float currOffset = lastOffset;
-                size_t srcStopOrdinal = originalFirstStopIndex;
+                size_t srcStopOrdinal = 0;
 
                 while (true) {
-                    GradientStop newStop = stops[srcStopOrdinal];
+                    size_t srcStopIndex = originalFirstStopIndex + srcStopOrdinal;
+                    GradientStop newStop = stops[srcStopIndex];
                     newStop.offset = currOffset;
                     stops.append(newStop);
                     if (currOffset > maxExtent)
                         break;
                     if (srcStopOrdinal < originalNumStops - 1)
-                        currOffset += stops[srcStopOrdinal + 1].offset - stops[srcStopOrdinal].offset;
+                        currOffset += stops[srcStopIndex + 1].offset - stops[srcStopIndex].offset;
                     srcStopOrdinal = (srcStopOrdinal + 1) % originalNumStops;
                 }
             }
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to