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

Unified Diff: Source/core/layout/style/LayoutStyle.cpp

Issue 950623002: Store resolved color in AppliedTextDecoration (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Updated patch with underline optimization handling Created 5 years, 9 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
Index: Source/core/layout/style/LayoutStyle.cpp
diff --git a/Source/core/layout/style/LayoutStyle.cpp b/Source/core/layout/style/LayoutStyle.cpp
index 238f0ee44cbabd0726dd4a26f7933e36a6fd9ace..90acbe68430d8928de6f409828fecb13cd5e5fb2 100644
--- a/Source/core/layout/style/LayoutStyle.cpp
+++ b/Source/core/layout/style/LayoutStyle.cpp
@@ -1320,6 +1320,21 @@ void LayoutStyle::addAppliedTextDecoration(const AppliedTextDecoration& decorati
list->append(decoration);
}
+bool LayoutStyle::hasSimpleUnderlineTextDecoration()
+{
+ int decorations = textDecoration();
Timothy Loh 2015/03/25 00:26:23 Don't think we should have to check this. If you l
+ return inherited_flags.m_textUnderline && (decorations & TextDecorationUnderline);
+}
+
+void LayoutStyle::adjustTextDecorationDifference()
+{
+ Color color = visitedDependentColor(CSSPropertyTextDecorationColor);
+ TextDecorationStyle style = textDecorationStyle();
Timothy Loh 2015/03/25 00:26:23 Is this always TextDecorationUnderline when we get
+
+ AppliedTextDecoration underline(TextDecorationUnderline, style, color);
+ addAppliedTextDecoration(underline);
+}
+
void LayoutStyle::applyTextDecorations()
{
if (textDecoration() == TextDecorationNone)
@@ -1327,23 +1342,24 @@ void LayoutStyle::applyTextDecorations()
TextDecorationStyle style = textDecorationStyle();
StyleColor styleColor = decorationColorIncludingFallback(insideLink() == InsideVisitedLink);
+ Color resolvedColor = styleColor.resolve(color());
int decorations = textDecoration();
if (decorations & TextDecorationUnderline) {
// To save memory, we don't use AppliedTextDecoration objects in the
// common case of a single simple underline.
- AppliedTextDecoration underline(TextDecorationUnderline, style, styleColor);
+ AppliedTextDecoration underline(TextDecorationUnderline, style, resolvedColor);
- if (!rareInheritedData->appliedTextDecorations && underline.isSimpleUnderline())
+ if (!rareInheritedData->appliedTextDecorations && underline.isSimpleUnderline(styleColor.isCurrentColor()))
Timothy Loh 2015/03/25 00:26:23 I think this is just if (!rareInheritedData->appli
inherited_flags.m_textUnderline = true;
else
addAppliedTextDecoration(underline);
}
if (decorations & TextDecorationOverline)
- addAppliedTextDecoration(AppliedTextDecoration(TextDecorationOverline, style, styleColor));
+ addAppliedTextDecoration(AppliedTextDecoration(TextDecorationOverline, style, resolvedColor));
if (decorations & TextDecorationLineThrough)
- addAppliedTextDecoration(AppliedTextDecoration(TextDecorationLineThrough, style, styleColor));
+ addAppliedTextDecoration(AppliedTextDecoration(TextDecorationLineThrough, style, resolvedColor));
}
void LayoutStyle::clearAppliedTextDecorations()

Powered by Google App Engine
This is Rietveld 408576698