Title: [119760] trunk
Revision
119760
Author
[email protected]
Date
2012-06-07 15:12:31 -0700 (Thu, 07 Jun 2012)

Log Message

Incorrect border rendering when border radius is above 2px.
https://bugs.webkit.org/show_bug.cgi?id=88046

Source/WebCore:

Fixing findInnerVertex's logic to decide which is the better line
to find an inner vertex, x=center point's x of a rendering box or
y=center point's y of a rendering box.

Patch by Takashi Sakamoto <[email protected]> on 2012-06-07
Reviewed by Simon Fraser.

Test: fast/borders/border-radius-valid-border-clipping.html

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

LayoutTests:

Patch by Takashi Sakamoto <[email protected]> on 2012-06-07
Reviewed by Simon Fraser.

* fast/borders/border-radius-valid-border-clipping-expected.txt: Added.
* fast/borders/border-radius-valid-border-clipping.html: Added.
* platform/chromium-mac/fast/borders/border-radius-valid-border-clipping-expected.png: Added.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (119759 => 119760)


--- trunk/LayoutTests/ChangeLog	2012-06-07 22:08:53 UTC (rev 119759)
+++ trunk/LayoutTests/ChangeLog	2012-06-07 22:12:31 UTC (rev 119760)
@@ -1,3 +1,14 @@
+2012-06-07  Takashi Sakamoto  <[email protected]>
+
+        Incorrect border rendering when border radius is above 2px.
+        https://bugs.webkit.org/show_bug.cgi?id=88046
+
+        Reviewed by Simon Fraser.
+
+        * fast/borders/border-radius-valid-border-clipping-expected.txt: Added.
+        * fast/borders/border-radius-valid-border-clipping.html: Added.
+        * platform/chromium-mac/fast/borders/border-radius-valid-border-clipping-expected.png: Added.
+
 2012-06-07  Edaena Salinas Jasso  <[email protected]>
 
         Should fire error event for empty 404 script

Added: trunk/LayoutTests/fast/borders/border-radius-valid-border-clipping-expected.txt (0 => 119760)


--- trunk/LayoutTests/fast/borders/border-radius-valid-border-clipping-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/fast/borders/border-radius-valid-border-clipping-expected.txt	2012-06-07 22:12:31 UTC (rev 119760)
@@ -0,0 +1,6 @@
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x446
+  RenderBlock {HTML} at (0,0) size 800x446
+    RenderBody {BODY} at (8,8) size 784x430
+      RenderBlock {DIV} at (0,0) size 83x430 [border: (10px solid #FF0000) (20px solid #008000) (20px solid #FFFF00) (10px solid #0000FF)]

Added: trunk/LayoutTests/fast/borders/border-radius-valid-border-clipping.html (0 => 119760)


--- trunk/LayoutTests/fast/borders/border-radius-valid-border-clipping.html	                        (rev 0)
+++ trunk/LayoutTests/fast/borders/border-radius-valid-border-clipping.html	2012-06-07 22:12:31 UTC (rev 119760)
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<html>
+<head>
+<style>
+div {
+    width: 53px;
+    height: 400px;
+    border-radius: 30px;
+    border-top: 10px solid red;
+    border-left: 10px solid blue;
+    border-right: 20px solid green;
+    border-bottom: 20px solid yellow;
+}
+</style>
+</head>
+<body>
+<div></div>
+</body>
+</html>

Added: trunk/LayoutTests/platform/chromium-mac/fast/borders/border-radius-valid-border-clipping-expected.png (0 => 119760)


--- trunk/LayoutTests/platform/chromium-mac/fast/borders/border-radius-valid-border-clipping-expected.png	                        (rev 0)
+++ trunk/LayoutTests/platform/chromium-mac/fast/borders/border-radius-valid-border-clipping-expected.png	2012-06-07 22:12:31 UTC (rev 119760)
@@ -0,0 +1,13 @@
+\x89PNG
+
+
+IHDR X\x9Av\x82p)tEXtchecksum691eb2dbe9d0b24d4dd5e4e7d1d08754\xDCk\xD6\xCFIDATx\x9C\xED\xDD?l\x9D\xD7}\xC7\xE1\xDF1R$A\x8BH\xF4ROѥ\x81\xF4\xD0\x85\xF3\xCA\xFD\xB3$%\xA5\x9Db\xD1B\x80)\xFD\x81\xD1-p\xEF\x89	M\xE2H\xF1\Y\xF4\xD6\xA6\xE8\xD8(\x9A\xA1\xEB\xA5nZ\x80T\x96\xB6\x8BI\xA3\xDA\x85N\xDA)\xADH\xE2\xA5x\xF5y\xF9<\x80 @"\xCE}\xEF;\x9D\xCF9\xEF\xDBz\xEF\xBDz\xD0\x88 @\x8Cb#@\x80\xC4|\xEAA~x_]\x{DD7A}Zu\xE3F\xD5\xFAzՍ\xD566Z\xEC\xF3\x83^'NTMOW\x9D8Q57Wmn.\xF6\xF9pԴ\xE4\x8B\xFB\xE6f\xAF\xFD\xA8\xEA\xF5׫\xBD\xF5ց\x9D\xE8\xF7\xA7\x9F\xEEu\xEATճ\xCFV\x9B\x9A:\xB0\xD7	\x87M$@\xFA\xEAj\xAF\xA5\xA5j׮\xBA\xC9|_X\xE8u\x83\xFB }u\xB5\xD7K/U[]=\xF4\x93\xF7>7\xD7\xEB\xC5\x85\xEC\xC3}	\x90\xBE\xB9\xD9\xEB\xEC\xD9C\xB9ⱛ\xBE\xB0\xD0\xEB\xD5Wm\xCD\x80{0\xF6\xE9\xCB˽\xABmmM\xEC\xBD?\xDE\xEB\xF2\xE5j\xF3\xF3\xFB\xE0~\xEBcx\xFBŋ\xBD-,\xB4I\x8E\x8F\xAA\xAAէO\xF4\x93\xEBߩ\x8B{1v\x80&\xC1XV@\xFA\xE6f\xAFg\x9E\xA9\xB6\xB66\xD1\xE1q}\xFE+7\xBF;\xD7\xDA\xEA\x87\xEF\xFE\xEA{\xCE>2\xDB\xDF|\xF6͚\xFA\xAC-Y\xB0\x9B}\xC8}\xF0?7\xF3~\xBFMr|\xDC.<v!0\x9A}\xC8\xE6f\xEF\xCF<S5\xF3[\xFFZ\xAF\xBE\xFDʼn\x9B|\xEF;\x89\xD8ݾ\xE4\xF1\xC7{_[k\xAD\xAA깧\xFE\xA5\xDFK\x84\xF4/\xB9\xD7\xC2B\xD5\xCCL\xD5\xF4t\xB5\x99\x99\xFB>\x81\xEF\xBD\xD6֪\x96\x96n\xFBBĽ\x84\xC7N\xB3\x8F\xCC\xF6\x9F\xFD\xF9\xCF\xDC\xC1=\xC8ŋ\xBD\xFF\xFB\xED\x93\xEDQ#\xA4\x9F8\xD1\xEB\xFC\xF9\xAA\x85\x85j\x83\xC1\x9D\xB0\xF7\xE5\xE5^g\xCET\xFB\xF0\xC3v\xAF\xE1\xB1Ӆ'.\xF4\xEF\xFD\xF1\xF7D\xDC\xC6=\xC8\xF2r\xEF\x{DD93}\xEC\xBBEH?v\xAC\xD7+\xAFT[\<P\xF4\xFE\xE1'7\xFF\xF4\xEF\xCE\xED+<v\xBA\xF6g\xD7\xFA\xFCc\xD1\xB7\xDA\xF3cx77{_\\xBC\xF3\xFF\xFF\xF0\xED/\xB4\xB3O\xFD\xFCע\xA6\xCF\xCF\xF7Z_?p\xF1QU\xF5\xF0\xEF~\xF5\xA1\x85'\xC76\xDE\xE2\xB5\xC5\xDA\xFC\xEFM\x8F\xE8\x80[\xEC9@\xBE\xF9ͪ\xAD\xADۯ~|\xEC\xD6\xE9\x97/\xF7v\xEDZ;\xC8o?\xF7Ĺ6\xC7
+[\xBF\xDCj/\xFC\xF8\x85qeO[\xB0VW{\xEF;\xFD\xE5\xFD\xBC_\xFA\xD6?\x9A7\x86\xBF\xFB\xEF\xEF\xF6ٿ\x9E۵^?s\xBD\xCF
+\xE6\xC5w\x80\x84=\xAD\x80\xBC\xFC\xF2\xDE\xFF\xC3o}\xE1\xD0\xC4GU\xD5\xCC#3\xED\xEC\xCCٱm\x9Dz\xF9\xAD=\xDE0\x98p#\xC8\xEAj\xEF++\xA3\xAF~\\xBE\xDC\xFB\xFC\xFC\xE8?P|\xE3+\xDF\xDBX++muc\xD5Y\xF8\xC8\xC8r\xE9\xD2胞:\xD5\xFB\x993\x87/>\xAA\xAA\xE6smpl0\xB6h\xB8\xF4\xD3=\xDC8\x98p#\xC8\xE6f\xEFW\xAF\x8Eǎ\xF5\xFE\x83\xEC\xEF\xA2\xB4ӿszlc]}\xFFj\xF3D,\xD86R\x80\xBC\xF6\xDA\xE8.-UMM\xCEՏ\x8F}\xED\x8B_\xEBx\xAF\xBD\xB7\x87l\xA4Y^m\xB0\xC1\xE0\xF0n\xBD\xDAi8=\xEBwX~\xC4n\xA4\xF5\xF0\xF9\x85\xFB\xBB\x98\x83\xE4\xE4\xE0\xE4ضM\xADl\xAC\xFA(\x80q\xD85@\xAE_\xFD=!_\xFF\xFA\xFE.\xE6 \x99ydf\xAC\xE3]_\xBF\xEEGޮ\xF2\xCE;\xA3
+4;\xDB\xFB\xF4\xF4\xE1\xDF~\xF5\xB1\xE3\x9F9>\xD6\xF1\xDE\xF9ň7&خ\xB2\xB11\xDA@\xA7N\xED\xF3J\x98'?\xFF\xE4X\xC7\xDB\xD8\xDA\xEBxp\x8D-@\xBE\xF4\xA5}^Ʉ 0B\x80\xAC\xAF\x8F6Љ\xFB\xBD\x94\x83ep|0\xD6\xF1ַF\xBC\x910\xC1Z\xEFw?d>꩎я\xAA\xED\xA5\xF1i\xE9/N\xE0M\x80=\xE91\xBC\xE3 @\x80\xC4 F\x801\x88 @\x8Cb#@\x80\xC4 F\x801\x88 @\x8Cb#@\x80\xC4 F\x801\x88 @\x8Cb#@\x80\xC4 F\x801\x88 @\x8Cb#@\x80\xC4 F\x801\x88 @\x8Cb#@\x80\xC4 F\x801\x88 @\x8Cb#@\x80\xC4 F\x801\x88 @\x8Cb#@\x80\xC4 F\x801\x88 @\x8Cb#@\x80\xC4 F\x801\x88 @\x8Cb#@\x80\xC4 F\x801\x88 @\x8Cb#@\x80\xC4 F\x801\x88 @\x8Cb#@\x80\xC4 F\x801\x88 @\x8Cb#@\x80\xC4 F\x801\x88 @\x8Cb#@\x80\xC4 F\x801\x88 @\x8Cb#@\x80\xC4 F\x801\x88 @\x8Cb#@\x80\xC4 F\x801\x88 @\x8Cb#@\x80\xC4 F\x801\x88 @\x8Cb#@\x80\xC4 F\x801\x88 @\x8Cb#@\x80\xC4 F\x801\x88 @\x8Cb#@\x80\xC4 F\x801\x88 @\x8Cb#@\x80\xC4 F\x801\x88 @\x8Cb#@\x80\xC4 F\x801\x88 @\x8Cb#@\x80\xC4 F\x801\x88 @\x8Cb#@\x80\xC4 F\x801\x88 @\x8Cb#@\x80\xC4 F\x801\x88 @\x8Cb#@\x80\xC4 F\x801\x88 @\x8Cb#@\x80\xC4 F\x801\x88 @\x8Cb#@\x80\xC4 F\x801\x88 @\x8Cb#@\x80\xC4 F\x801\x88 @\x8Cb#@\x80\xC4 F\x801\x88 @\x8Cb#@\x80\xC4 F\x801\x88 @\x8Cb#@\x80\xC4 F\x801\x88 @\x8Cb#@\x80\xC4 F\x801\x88 @\x8Cb#@\x80\xC4 F\x801\x88 @\x8Cb#@\x80\xC4 F\x801\x88 @\x8Cb#@\x80\xC4 F\x801\x88 @\x8Cb#@\x80\xC4 F\x801\x88 @\x8Cb#@\x80\xC4 F\x801\x88 @\x8Cb#@\x80\xC4 F\x801\x88 @\x8Cb#@\x80\xC4 F\x801\x88 @\x8Cb#@\x80\xC4 F\x801\x88 @\x8Cb#@\x80\xC4 F\x801\x88 @\x8Cb#@\x80\xC4 F\x801\x88 @\x8Cb#@\x80\xC4 F\x801\x88 @\x8Cb#@\x80\xC4 F\x801\x88 @\x8Cb#@\x80\xC4 F\x801\x88 @\x8Cb#@\x80Č-@67{\xD7X\xC0d[\x80\xBC\xF5ָF:\xD6\xFEmMP\xC0\x98\xED \x83\xC1h+\x97.\xED\xFFb\x92\xF7\xFE㽱\x8E7864y\xBBȣ\x8F\x8E6\xD0\xCAJk\xCB˓\xB3
+\xEB\x8D~c\xAC\xE3=:5\xE2\x8D\x80	6\xC2
+\xC8\xE8\x83-.V\xAD\xAD}x\xF3\xDE/\xE7`X\xDF\\xEFW߿\xDA\xC69\xE6\xE0\xF8`\x9C\xC3\xC0\xA14\xD6\xD9\xDAjmk\xEB;\xD5\xFBҡ^	y\xE1\xC7/\x8C}L#ȓO\x8E>\xD8p\xB8ه\xC3Wj\xED|\xEB}\xD8{\xF7Ѕ\xC8\xD2\xDF/\x8D}\xF5\xA3\xAA\xEA\xC9\xCF\xEF\xE1F\xC0\x84\xDA5@\x86\xC36\xF2d\xFC\xDB\xDF\xFE\xA3\xB5\xD5\xD6\xDAl\xEB\xFD\xB9\xDE\xFB\xEA\xA1\x91ޗ\xFA\xB1O\xFF\xCD}\xB9\xD6\xE1\xF4p\xECQ\x87\xCDH\x8F\xE1=yr\xF7\xC3\xE5\xAF~\xDC\xFA\xEF\xAD]n\xAD
+[\xEFӽ\xF7\xF32Fz\xDF轟ꭝo\x8B\xB3o?\xF4\xC3?yj\xAC\xE7XNN\xB8\xEF§F\xF9\xA1\xF9\x{1A9557B}\xFF\xCCG\xABw\xFC-k\xADj\xA9\xB6\xFFT\xF5\xFEt\xAF\x9A\xA9\xAA\xE3U5\xF7\xD1O
+\xAA\xB5Ad\xA5`{{\xD8?Vյj\xED\xDA'>sq\xF6퇪\x9E\xBA\xF9\xDCo\x8F\xE5=)\xF3\x8F͏c8\xF4Zﻯnln\xF6\xFE\xF0\xC3wފ5n\x{195547}'n\x8B\xD1\xE5\xB5\xF1D\xC8\xF5A\x9F\xFA\xEC\xD4\xC4\xDDث\x91&\xD7SS\xAD\x9D>}\xE7P\xD9y\xF6c\x92\x8Cc;\xD6\xE9\xC7N\x8B\xF8\xC8ȿ\xDD\xFE\xF9\xDB\xFF\xFB\x9D\xCE~L\x8A\xFDF\xC8\xF3\xBFw\x87G\xD0\xC8\xE107\xD7\xDAp\xF8\xEB\xAB \x93\xBA\xFA\xB1ӽF\xC8p0\xECs\x839\xAB\xF0\x91\x91΀|lu\xB5\xF7\x9D\x8F\xE5\x9DԳw\xB2\xD73!\xD7\xCF\ \xB0Þ\xB6N\xCD͵v\xEA\xD4\xFF\xCBQX\xFD\xD8i/+!ggΊ\xB8ŞV@\xAA\xB6\x9F\x885=]\xF5\xF8\xE3[u\x94V?v\xDAm%\xE4ا\x8F\xF5\xF5s\xEB\xE5\xF09|\xD2H\xEF\xD9ij\xAA\xB5+Wz\xFF\xDC\xE7\xEE\xFEޏI\xB6\xDB{B\xAE,\p{\x90\xAA\xAA\xF9\xF9\xD6z?\xDA\xF3\xEB;Eȅ'.\xF4\xF9\xC7\xE6\x8F\xF6\xCD\x80;\xD8\xF3\xAC\x9Dz\x9F\x{DB7D}{\xA4'\xDB;\xB7c\xCD\xFC\xF6L_\xFB\x8B\xB5#}?\xE0n\xF6 \x9B\xBD\xEAd\x89\x90\xA7n.\xFD\xF4?\xDBʙ[\xAF\xE0.\xF6 U"\xA4\xAA\xAA\xF7\x99\xFE\xCB\xFF}\xB3\xE67\x9E\xD82\xC08\xEC;@\xAA\x8Ev\x84\xF4>ӫV\xAA5+\xB0\x9B\xB1\xFCƾ\xB5\xA9\xD6\xDAZ\xEB\xFD\xFC\x91z/H\xEF\xE7{kkM|\xC0hƲ\xB2S\xEF˽\xEAL\xB5\xF6\xE1\xC4N\xCA{?֫\xAETk\x9Ev{1\xF63ۓ\xF2k\xD5\xFB\x89\x89\
+\xD9\xFE^\xD7\xC4܃\xFBrh\xBA\xB5\xB9V\xB5V\xBD\xBFطW\xBFޏ\xF5\xDE_\xEC\xADm\xB4\xED\xEF\xEC\xD5ط`\xDDj\xFB\x80\xFARU]\xAF\xD6~r\xE8&\xEE\xBD\xB5W
+\xAB꜃\xE6\xB0O\xF7=@vڎ\x91+U\xF5\xFA\x81\x8E\x91\xED\xE88U\xDBgYD\x8CK4@n\xD5\xFB\xF5^\xB5ZU7\xAAj\xBD\xAAnTk7b\xFE\xED\xF3'\xAAj\xBA\xB6\xFF\x9E\xABֆ\x82\xEE\x93 \xC0\xD1\xE2\xCD\xDD@\x8Cb#@\x80\xC4 F\x801\x88 @\x8Cb#@\x80\xC4 F\x801\x88 @\x8Cb#@\x80\xC4 F\x801\x88 @\x8Cb#@\x80\xC4 F\x801\x88 @\x8Cb#@\x80\xC4 F\x801\x88 @\x8Cb#@\x80\xC4 F\x801\x88 @\x8Cb#@\x80\xC4 F\x801\x88 @\x8Cb#@\x80\xC4 F\x801\x88 @\x8Cb#@\x80\xC4 F\x801\x88 @\x8Cb#@\x80\xC4 F\x801\x88 @\x8Cb#@\x80\xC4 F\x801\x88 @\x8Cb#@\x80\xC4 F\x801\x88 @\x8Cb#@\x80\xC4 F\x801\x88 @\x8Cb#@\x80\xC4 F\x801\x88 @\x8Cb#@\x80\xC4 F\x801\x88 @\x8Cb#@\x80\xC4 F\x801\x88 @\x8Cb#@\x80\xC4 F\x801\x88 @\x8Cb#@\x80\xC4 F\x801\x88 @\x8Cb#@\x80\xC4 F\x801\x88 @\x8Cb#@\x80\xC4 F\x801\x88 @\xCC\xFF\x98~<\x8CRv@\x82IEND\xAEB`\x82
\ No newline at end of file

Modified: trunk/Source/WebCore/ChangeLog (119759 => 119760)


--- trunk/Source/WebCore/ChangeLog	2012-06-07 22:08:53 UTC (rev 119759)
+++ trunk/Source/WebCore/ChangeLog	2012-06-07 22:12:31 UTC (rev 119760)
@@ -1,3 +1,19 @@
+2012-06-07  Takashi Sakamoto  <[email protected]>
+
+        Incorrect border rendering when border radius is above 2px.
+        https://bugs.webkit.org/show_bug.cgi?id=88046
+
+        Fixing findInnerVertex's logic to decide which is the better line
+        to find an inner vertex, x=center point's x of a rendering box or
+        y=center point's y of a rendering box.
+
+        Reviewed by Simon Fraser.
+
+        Test: fast/borders/border-radius-valid-border-clipping.html
+
+        * rendering/RenderBoxModelObject.cpp:
+        (WebCore::findInnerVertex):
+
 2012-06-07  Edaena Salinas Jasso  <[email protected]>
 
         Should fire error event for empty 404 script

Modified: trunk/Source/WebCore/rendering/RenderBoxModelObject.cpp (119759 => 119760)


--- trunk/Source/WebCore/rendering/RenderBoxModelObject.cpp	2012-06-07 22:08:53 UTC (rev 119759)
+++ trunk/Source/WebCore/rendering/RenderBoxModelObject.cpp	2012-06-07 22:12:31 UTC (rev 119760)
@@ -2431,7 +2431,11 @@
     // If the line between outer and inner corner is towards the horizontal, intersect with a vertical line through the center,
     // otherwise with a horizontal line through the center. The points that form this line are arbitrary (we use 0, 100).
     // Note that if findIntersection fails, it will leave result untouched.
-    if (fabs(outerCorner.x() - innerCorner.x()) > fabs(outerCorner.y() - innerCorner.y()))
+    float diffInnerOuterX = fabs(innerCorner.x() - outerCorner.x());
+    float diffInnerOuterY = fabs(innerCorner.y() - outerCorner.y());
+    float diffCenterOuterX = fabs(centerPoint.x() - outerCorner.x());
+    float diffCenterOuterY = fabs(centerPoint.y() - outerCorner.y());
+    if (diffInnerOuterY * diffCenterOuterX < diffCenterOuterY * diffInnerOuterX)
         findIntersection(outerCorner, innerCorner, FloatPoint(centerPoint.x(), 0), FloatPoint(centerPoint.x(), 100), result);
     else
         findIntersection(outerCorner, innerCorner, FloatPoint(0, centerPoint.y()), FloatPoint(100, centerPoint.y()), result);
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to