Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(36)

Unified Diff: Source/core/rendering/InlineTextBox.cpp

Issue 14576017: Implement CSS3TextDecorations runtime flag in favor of CSS3_TEXT (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Removed updated on text-underline-position for now (to be discussed & re-added later) Created 7 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/core/platform/graphics/GraphicsTypes.h ('k') | Source/core/rendering/RenderObject.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/rendering/InlineTextBox.cpp
diff --git a/Source/core/rendering/InlineTextBox.cpp b/Source/core/rendering/InlineTextBox.cpp
index e414189dbebc94590f08c23373f4b4cb6e49a0d3..930eef0f8c963713351daf19e25c42c6c6a58586 100644
--- a/Source/core/rendering/InlineTextBox.cpp
+++ b/Source/core/rendering/InlineTextBox.cpp
@@ -924,7 +924,6 @@ static StrokeStyle textDecorationStyleToStrokeStyle(TextDecorationStyle decorati
case TextDecorationStyleSolid:
strokeStyle = SolidStroke;
break;
-#if ENABLE(CSS3_TEXT)
case TextDecorationStyleDouble:
strokeStyle = DoubleStroke;
break;
@@ -937,7 +936,6 @@ static StrokeStyle textDecorationStyleToStrokeStyle(TextDecorationStyle decorati
case TextDecorationStyleWavy:
strokeStyle = WavyStroke;
break;
-#endif // CSS3_TEXT
}
return strokeStyle;
@@ -970,7 +968,6 @@ static int computeUnderlineOffset(const TextUnderlinePosition underlinePosition,
}
#endif // CSS3_TEXT
-#if ENABLE(CSS3_TEXT)
static void adjustStepToDecorationLength(float& step, float& controlPointDistance, float length)
{
ASSERT(step > 0);
@@ -1092,7 +1089,6 @@ static void strokeWavyTextDecoration(GraphicsContext* context, FloatPoint& p1, F
context->setShouldAntialias(true);
context->strokePath(path);
}
-#endif // CSS3_TEXT
void InlineTextBox::paintDecoration(GraphicsContext* context, const FloatPoint& boxOrigin, ETextDecoration deco, TextDecorationStyle decorationStyle, const ShadowData* shadow)
{
@@ -1163,16 +1159,17 @@ void InlineTextBox::paintDecoration(GraphicsContext* context, const FloatPoint&
shadow = shadow->next();
}
-#if ENABLE(CSS3_TEXT)
// Offset between lines - always non-zero, so lines never cross each other.
float doubleOffset = textDecorationThickness + 1.f;
-#endif // CSS3_TEXT
context->setStrokeStyle(textDecorationStyleToStrokeStyle(decorationStyle));
if (deco & UNDERLINE) {
context->setStrokeColor(underline, colorSpace);
#if ENABLE(CSS3_TEXT)
TextUnderlinePosition underlinePosition = styleToUse->textUnderlinePosition();
const int underlineOffset = computeUnderlineOffset(underlinePosition, styleToUse->fontMetrics(), this, textDecorationThickness);
+#else
+ const int underlineOffset = styleToUse->fontMetrics().ascent() + max<int>(1, ceilf(textDecorationThickness / 2.0));
+#endif // CSS3_TEXT
switch (decorationStyle) {
case TextDecorationStyleWavy: {
@@ -1187,14 +1184,9 @@ void InlineTextBox::paintDecoration(GraphicsContext* context, const FloatPoint&
if (decorationStyle == TextDecorationStyleDouble)
context->drawLineForText(FloatPoint(localOrigin.x(), localOrigin.y() + underlineOffset + doubleOffset), width, isPrinting);
}
-#else
- // Leave one pixel of white between the baseline and the underline.
- context->drawLineForText(FloatPoint(localOrigin.x(), localOrigin.y() + baseline + 1), width, isPrinting);
-#endif // CSS3_TEXT
}
if (deco & OVERLINE) {
context->setStrokeColor(overline, colorSpace);
-#if ENABLE(CSS3_TEXT)
switch (decorationStyle) {
case TextDecorationStyleWavy: {
FloatPoint start(localOrigin.x(), localOrigin.y() - doubleOffset);
@@ -1203,17 +1195,13 @@ void InlineTextBox::paintDecoration(GraphicsContext* context, const FloatPoint&
break;
}
default:
-#endif // CSS3_TEXT
context->drawLineForText(localOrigin, width, isPrinting);
-#if ENABLE(CSS3_TEXT)
if (decorationStyle == TextDecorationStyleDouble)
context->drawLineForText(FloatPoint(localOrigin.x(), localOrigin.y() - doubleOffset), width, isPrinting);
}
-#endif // CSS3_TEXT
}
if (deco & LINE_THROUGH) {
context->setStrokeColor(linethrough, colorSpace);
-#if ENABLE(CSS3_TEXT)
switch (decorationStyle) {
case TextDecorationStyleWavy: {
FloatPoint start(localOrigin.x(), localOrigin.y() + 2 * baseline / 3);
@@ -1222,13 +1210,10 @@ void InlineTextBox::paintDecoration(GraphicsContext* context, const FloatPoint&
break;
}
default:
-#endif // CSS3_TEXT
context->drawLineForText(FloatPoint(localOrigin.x(), localOrigin.y() + 2 * baseline / 3), width, isPrinting);
-#if ENABLE(CSS3_TEXT)
if (decorationStyle == TextDecorationStyleDouble)
context->drawLineForText(FloatPoint(localOrigin.x(), localOrigin.y() + doubleOffset + 2 * baseline / 3), width, isPrinting);
}
-#endif // CSS3_TEXT
}
} while (shadow);
« no previous file with comments | « Source/core/platform/graphics/GraphicsTypes.h ('k') | Source/core/rendering/RenderObject.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698