Bug 1285658 - Remove a gap between dashed side and dashed corner if border radius is not an integer. r=jrmuizel
authorTooru Fujisawa <arai_a@mac.com>
Sun, 10 Jul 2016 06:18:12 +0900
changeset 344432 a2e0ea4065264c7a738a57c4110b8b13632894a6
parent 344431 fd6e8d0e44befaf5a6bf38945f8529235a4ac0b9
child 344433 2393f903d0a732960e73ae00489d0758d5f526f0
push id6389
push userraliiev@mozilla.com
push dateMon, 19 Sep 2016 13:38:22 +0000
treeherdermozilla-beta@01d67bfe6c81 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersjrmuizel
bugs1285658
milestone50.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1285658 - Remove a gap between dashed side and dashed corner if border radius is not an integer. r=jrmuizel
layout/base/nsCSSRenderingBorders.cpp
layout/reftests/border-dotted/border-dashed-non-integer.html
layout/reftests/border-dotted/border-dashed-radius-non-integer-filled-mask.png
layout/reftests/border-dotted/border-dashed-radius-non-integer-unfilled-mask.png
layout/reftests/border-dotted/reftest.list
--- a/layout/base/nsCSSRenderingBorders.cpp
+++ b/layout/base/nsCSSRenderingBorders.cpp
@@ -1085,23 +1085,25 @@ nsCSSBorderRenderer::GetOuterAndInnerBez
   // |         |
   // |         |
   // |         |
   // +---------+
 
   mozilla::css::Side sideH(GetHorizontalSide(aCorner));
   mozilla::css::Side sideV(GetVerticalSide(aCorner));
 
-  Size innerCornerSize(std::max(0.0f, mBorderRadii[aCorner].width -
-                                mBorderWidths[sideV]),
-                       std::max(0.0f, mBorderRadii[aCorner].height -
-                                mBorderWidths[sideH]));
+  Size outerCornerSize(ceil(mBorderRadii[aCorner].width),
+                       ceil(mBorderRadii[aCorner].height));
+  Size innerCornerSize(ceil(std::max(0.0f, mBorderRadii[aCorner].width -
+                                     mBorderWidths[sideV])),
+                       ceil(std::max(0.0f, mBorderRadii[aCorner].height -
+                                     mBorderWidths[sideH])));
 
   GetBezierPointsForCorner(aOuterBezier, aCorner, mOuterRect.AtCorner(aCorner),
-                           mBorderRadii[aCorner]);
+                           outerCornerSize);
 
   GetBezierPointsForCorner(aInnerBezier, aCorner, mInnerRect.AtCorner(aCorner),
                            innerCornerSize);
 }
 
 void
 nsCSSBorderRenderer::FillSolidBorder(const Rect& aOuterRect,
                                      const Rect& aInnerRect,
new file mode 100644
--- /dev/null
+++ b/layout/reftests/border-dotted/border-dashed-non-integer.html
@@ -0,0 +1,80 @@
+<!DOCTYPE HTML>
+<html>
+  <head>
+    <meta charset="utf-8">
+    <title>dashed border with non-integer radius</title>
+    <style>
+.box {
+  position: relative;
+  width: 420px;
+  height: 420px;
+}
+.mask {
+  position: absolute;
+  top: 0px;
+  left: 0px;
+}
+
+table {
+  border-collapse: separate;
+  border-spacing: 10px;
+  empty-cells: show;
+}
+td {
+  border-style: dashed;
+  border-radius: 24.01px;
+  border-color: black;
+  height: 120px;
+  width: 120px;
+  box-sizing: border-box;
+}
+
+.A {
+  border-width: 1px;
+}
+.B {
+  border-width: 2px;
+}
+.C {
+  border-width: 6px;
+}
+.D {
+  border-width: 8px;
+}
+.E {
+  border-width: 16px;
+}
+.F {
+  border-width: 24px;
+}
+.G {
+  border-width: 32px;
+}
+.H {
+  border-width: 48px;
+}
+.I {
+  border-width: 60px;
+}
+    </style>
+  </head>
+  <body>
+    <div class="box">
+      <table>
+        <tr><td class="A"></td><td class="B"></td><td class="C"></td></tr>
+        <tr><td class="D"></td><td class="E"></td><td class="F"></td></tr>
+        <tr><td class="G"></td><td class="H"></td><td class="I"></td></tr>
+      </table>
+      <img class="mask" src="border-dashed-radius-non-integer-filled-mask.png">
+    </div>
+    <div class="box">
+      <table>
+        <tr><td class="A"></td><td class="B"></td><td class="C"></td></tr>
+        <tr><td class="D"></td><td class="E"></td><td class="F"></td></tr>
+        <tr><td class="G"></td><td class="H"></td><td class="I"></td></tr>
+      </table>
+      <img class="mask" src="border-dashed-radius-non-integer-unfilled-mask.png">
+    </div>
+  </body>
+</html>
+
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..8f0e74e6ac8864e71b22555b2809af80a14dabab
GIT binary patch
literal 6168
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
W&#ap1!PiGXe|RT%$Fhw9N&f>vX-G-{
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..08de9bc493191e9a9219f5839eb78f9b9d40cf87
GIT binary patch
literal 5700
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
--- a/layout/reftests/border-dotted/reftest.list
+++ b/layout/reftests/border-dotted/reftest.list
@@ -3,8 +3,9 @@
 # These check filled and unfilled regions with solid opaque color,
 # so difference less than 80 is ignorable.
 fuzzy(80,1500) == border-dotted-interaction.html masked.html
 fuzzy(80,1500) == border-dotted-no-radius.html masked.html
 fuzzy(80,1500) == border-dotted-radius.html masked.html
 fuzzy(80,1500) == border-dashed-no-radius.html masked.html
 fuzzy(80,1500) == border-dashed-radius.html masked.html
 fuzzy(80,1500) == border-mixed.html masked.html
+fuzzy(80,1500) == border-dashed-non-integer.html masked.html