Address post-review comments after r237955
authormmaxfield@apple.com <mmaxfield@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 11 Nov 2018 17:13:40 +0000 (17:13 +0000)
committermmaxfield@apple.com <mmaxfield@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 11 Nov 2018 17:13:40 +0000 (17:13 +0000)
https://bugs.webkit.org/show_bug.cgi?id=191496

Reviewed by Darin Adler.

Source/WebCore:

* rendering/TextDecorationPainter.cpp:
(WebCore::TextDecorationPainter::paintTextDecoration):
* style/InlineTextBoxStyle.cpp:
(WebCore::computeUnderlineOffset):
* style/InlineTextBoxStyle.h:

LayoutTests:

* fast/css3-text/css3-text-decoration/text-underline-negative-expected.html:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@238075 268f45cc-cd09-0410-ab3c-d52691b4dbfc

LayoutTests/ChangeLog
LayoutTests/fast/css3-text/css3-text-decoration/text-underline-negative-expected.html
Source/WebCore/ChangeLog
Source/WebCore/rendering/TextDecorationPainter.cpp
Source/WebCore/style/InlineTextBoxStyle.cpp
Source/WebCore/style/InlineTextBoxStyle.h

index 4f8d17a..21fbd2d 100644 (file)
@@ -1,3 +1,12 @@
+2018-11-11  Myles C. Maxfield  <mmaxfield@apple.com>
+
+        Address post-review comments after r237955
+        https://bugs.webkit.org/show_bug.cgi?id=191496
+
+        Reviewed by Darin Adler.
+
+        * fast/css3-text/css3-text-decoration/text-underline-negative-expected.html:
+
 2018-11-10  Simon Fraser  <simon.fraser@apple.com>
 
         Remove support for -webkit-svg-shadow
index 20b593e..a5893d9 100644 (file)
@@ -4,6 +4,6 @@
 </head>
 <body>
 This test makes sure you can't place an underline to make it look like a line-through. The test passes if all the underlines are in the correct place.
-<div style="font: 100px 'Ahem'; text-decoration: underline; -webkit-text-decoration-color: green; text-underline-offset: 0px; -webkit-text-decoration-skip: none;">&#xc9;<span style="text-underline-offset: 13px;">&#xc9;<span style="text-underline-offset: 23px;">&#xc9;</span></span></div>
+<div style="font: 100px 'Ahem'; text-decoration: underline; -webkit-text-decoration-color: green; text-underline-offset: 0px; -webkit-text-decoration-skip: none;">&#xc9;<span style="text-underline-offset: 14px;">&#xc9;<span style="text-underline-offset: 24px;">&#xc9;</span></span></div>
 </body>
 </html>
index 55766ba..17cce8f 100644 (file)
@@ -1,3 +1,16 @@
+2018-11-11  Myles C. Maxfield  <mmaxfield@apple.com>
+
+        Address post-review comments after r237955
+        https://bugs.webkit.org/show_bug.cgi?id=191496
+
+        Reviewed by Darin Adler.
+
+        * rendering/TextDecorationPainter.cpp:
+        (WebCore::TextDecorationPainter::paintTextDecoration):
+        * style/InlineTextBoxStyle.cpp:
+        (WebCore::computeUnderlineOffset):
+        * style/InlineTextBoxStyle.h:
+
 2018-11-11  Benjamin Poulain  <benjamin@webkit.org>
 
         Fix a fixme: rename wtfObjcMsgSend to wtfObjCMsgSend
index 2574a6f..729cdef 100644 (file)
@@ -287,7 +287,7 @@ void TextDecorationPainter::paintTextDecoration(const TextRun& textRun, const Fl
         if (m_decorations.contains(TextDecoration::Underline)) {
             float textDecorationBaseFontSize = 16;
             auto defaultGap = m_lineStyle.computedFontSize() / textDecorationBaseFontSize;
-            int offset = computeUnderlineOffset(m_lineStyle.textUnderlinePosition(), m_lineStyle.textUnderlineOffset(), m_lineStyle.fontMetrics(), m_inlineTextBox, defaultGap);
+            float offset = computeUnderlineOffset(m_lineStyle.textUnderlinePosition(), m_lineStyle.textUnderlineOffset(), m_lineStyle.fontMetrics(), m_inlineTextBox, defaultGap);
             float wavyOffset = m_styles.underlineStyle == TextDecorationStyle::Wavy ? m_wavyOffset : 0;
             FloatRect rect(localOrigin, FloatSize(m_width, textDecorationThickness));
             rect.move(0, offset + wavyOffset);
index e86944c..8b8174a 100644 (file)
 
 namespace WebCore {
     
-int computeUnderlineOffset(TextUnderlinePosition underlinePosition, TextUnderlineOffset underlineOffset, const FontMetrics& fontMetrics, const InlineTextBox* inlineTextBox, int defaultGap)
+float computeUnderlineOffset(TextUnderlinePosition underlinePosition, TextUnderlineOffset underlineOffset, const FontMetrics& fontMetrics, const InlineTextBox* inlineTextBox, float defaultGap)
 {
     // This represents the gap between the baseline and the closest edge of the underline.
-    int gap = std::max<int>(1, ceilf(defaultGap / 2.0));
+    float gap = std::max<int>(1, std::ceil(defaultGap / 2.0f));
     
     // FIXME: The code for visual overflow detection passes in a null inline text box. This means it is now
     // broken for the case where auto needs to behave like "under".
@@ -78,9 +78,8 @@ int computeUnderlineOffset(TextUnderlinePosition underlinePosition, TextUnderlin
             rootBox.maxLogicalBottomForTextDecorationLine(offset, decorationRenderer, TextDecoration::Underline);
             offset -= inlineTextBox->logicalBottom();
         }
-        auto desiredOffset = inlineTextBox->logicalHeight() + gap + std::max<float>(offset, 0) + underlineOffset.lengthOr(0);
-        desiredOffset = std::max<float>(desiredOffset, fontMetrics.ascent());
-        return desiredOffset;
+        auto desiredOffset = inlineTextBox->logicalHeight() + gap + std::max(offset, 0.0f) + underlineOffset.lengthOr(0);
+        return std::max<float>(desiredOffset, fontMetrics.ascent());
     }
     }
 
index 8730b2c..46a7562 100644 (file)
@@ -51,6 +51,6 @@ struct WavyStrokeParameters {
 };
 WavyStrokeParameters getWavyStrokeParameters(float fontSize);
 GlyphOverflow visualOverflowForDecorations(const RenderStyle& lineStyle, const InlineTextBox*);
-int computeUnderlineOffset(TextUnderlinePosition, TextUnderlineOffset, const FontMetrics&, const InlineTextBox*, int textDecorationThickness);
+float computeUnderlineOffset(TextUnderlinePosition, TextUnderlineOffset, const FontMetrics&, const InlineTextBox*, float textDecorationThickness);
     
 } // namespace WebCore