Title: [147533] trunk
Revision
147533
Author
[email protected]
Date
2013-04-03 02:48:04 -0700 (Wed, 03 Apr 2013)

Log Message

With borders of differing alpha, the corners become squared off
https://bugs.webkit.org/show_bug.cgi?id=113744

Reviewed by Simon Fraser.

Source/WebCore:

paintTranslucentBorderSides should pick up borders with common color
in order: top, bottom, left and right (not top, right, bottom and
left), because willBeOverdrawn depends on the assumption, borders are
drawn in order: top, bottom, left and right.

Test: fast/borders/border-left-right-same-bottom-different-color.html

* rendering/RenderBoxModelObject.cpp:
(WebCore::RenderBoxModelObject::paintTranslucentBorderSides):

LayoutTests:

* fast/borders/border-left-right-same-bottom-different-color-expected.txt: Added.
* fast/borders/border-left-right-same-bottom-different-color.html: Added.
* platform/chromium-linux/fast/borders/border-left-right-same-bottom-different-color-expected.png: Added.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (147532 => 147533)


--- trunk/LayoutTests/ChangeLog	2013-04-03 09:45:49 UTC (rev 147532)
+++ trunk/LayoutTests/ChangeLog	2013-04-03 09:48:04 UTC (rev 147533)
@@ -1,3 +1,14 @@
+2013-04-03  Takashi Sakamoto  <[email protected]>
+
+        With borders of differing alpha, the corners become squared off
+        https://bugs.webkit.org/show_bug.cgi?id=113744
+
+        Reviewed by Simon Fraser.
+
+        * fast/borders/border-left-right-same-bottom-different-color-expected.txt: Added.
+        * fast/borders/border-left-right-same-bottom-different-color.html: Added.
+        * platform/chromium-linux/fast/borders/border-left-right-same-bottom-different-color-expected.png: Added.
+
 2013-04-03  Ádám Kallai  <[email protected]>
 
         [Qt] Unreviewed gardening. Updated platform specific expected files.

Added: trunk/LayoutTests/fast/borders/border-left-right-same-bottom-different-color-expected.txt (0 => 147533)


--- trunk/LayoutTests/fast/borders/border-left-right-same-bottom-different-color-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/fast/borders/border-left-right-same-bottom-different-color-expected.txt	2013-04-03 09:48:04 UTC (rev 147533)
@@ -0,0 +1,6 @@
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x176
+  RenderBlock {HTML} at (0,0) size 800x176
+    RenderBody {BODY} at (8,8) size 784x160
+      RenderBlock {DIV} at (0,0) size 260x160 [bgcolor=#AAAAAA] [border: (30px solid #00A1007F) (30px solid #CCCCCC) (30px solid #00A100) (30px solid #CCCCCC)]

Added: trunk/LayoutTests/fast/borders/border-left-right-same-bottom-different-color.html (0 => 147533)


--- trunk/LayoutTests/fast/borders/border-left-right-same-bottom-different-color.html	                        (rev 0)
+++ trunk/LayoutTests/fast/borders/border-left-right-same-bottom-different-color.html	2013-04-03 09:48:04 UTC (rev 147533)
@@ -0,0 +1,25 @@
+<!doctype html>
+<html>
+<head>
+<style>
+div {
+    width: 200px;
+    height: 100px;
+    background: #aaa;
+}
+#hasBorder {
+    border-top: 30px solid rgba(0, 161, 0, .5);
+    border-right: 30px solid #CCC;
+    border-bottom: 30px solid rgba(0, 161, 0, 1);
+    border-left: 30px solid #CCC;
+}
+</style>
+</head>
+<body>
+  <!-- [bug 113744] With borders of differing alpha, the corners become squared off -->
+  <!-- https://bugs.webkit.org/show_bug.cgi?id=113744 -->
+  <!-- A 45 degree angle (with an equal width border) should be expected -->
+  <!-- at the corners. If the corners become squared off, this test fails.-->
+  <div id="hasBorder"></div>
+</body>
+</html>

Added: trunk/LayoutTests/platform/chromium-linux/fast/borders/border-left-right-same-bottom-different-color-expected.png


(Binary files differ)
Property changes on: trunk/LayoutTests/platform/chromium-linux/fast/borders/border-left-right-same-bottom-different-color-expected.png ___________________________________________________________________

Added: svn:mime-type

Modified: trunk/Source/WebCore/ChangeLog (147532 => 147533)


--- trunk/Source/WebCore/ChangeLog	2013-04-03 09:45:49 UTC (rev 147532)
+++ trunk/Source/WebCore/ChangeLog	2013-04-03 09:48:04 UTC (rev 147533)
@@ -1,3 +1,20 @@
+2013-04-03  Takashi Sakamoto  <[email protected]>
+
+        With borders of differing alpha, the corners become squared off
+        https://bugs.webkit.org/show_bug.cgi?id=113744
+
+        Reviewed by Simon Fraser.
+
+        paintTranslucentBorderSides should pick up borders with common color
+        in order: top, bottom, left and right (not top, right, bottom and
+        left), because willBeOverdrawn depends on the assumption, borders are
+        drawn in order: top, bottom, left and right.
+
+        Test: fast/borders/border-left-right-same-bottom-different-color.html
+
+        * rendering/RenderBoxModelObject.cpp:
+        (WebCore::RenderBoxModelObject::paintTranslucentBorderSides):
+
 2013-04-03  Mihnea Ovidenie  <[email protected]>
 
         [New Multicolumn]Remove assert in RenderMultiColumnFlowThread::createAnonymous

Modified: trunk/Source/WebCore/rendering/RenderBoxModelObject.cpp (147532 => 147533)


--- trunk/Source/WebCore/rendering/RenderBoxModelObject.cpp	2013-04-03 09:45:49 UTC (rev 147532)
+++ trunk/Source/WebCore/rendering/RenderBoxModelObject.cpp	2013-04-03 09:48:04 UTC (rev 147533)
@@ -1796,13 +1796,17 @@
 void RenderBoxModelObject::paintTranslucentBorderSides(GraphicsContext* graphicsContext, const RenderStyle* style, const RoundedRect& outerBorder, const RoundedRect& innerBorder, const IntPoint& innerBorderAdjustment,
     const BorderEdge edges[], BorderEdgeFlags edgesToDraw, BackgroundBleedAvoidance bleedAvoidance, bool includeLogicalLeftEdge, bool includeLogicalRightEdge, bool antialias)
 {
+    // willBeOverdrawn assumes that we draw in order: top, bottom, left, right.
+    // This is different from BoxSide enum order.
+    static BoxSide paintOrder[] = { BSTop, BSBottom, BSLeft, BSRight };
+
     while (edgesToDraw) {
         // Find undrawn edges sharing a color.
         Color commonColor;
         
         BorderEdgeFlags commonColorEdgeSet = 0;
-        for (int i = BSTop; i <= BSLeft; ++i) {
-            BoxSide currSide = static_cast<BoxSide>(i);
+        for (size_t i = 0; i < sizeof(paintOrder) / sizeof(paintOrder[0]); ++i) {
+            BoxSide currSide = paintOrder[i];
             if (!includesEdge(edgesToDraw, currSide))
                 continue;
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to