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

Unified Diff: Source/core/style/ComputedStyle.h

Issue 1328283005: Add support for multiple text decorations with same line positioning (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Review feedback Created 5 years, 3 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/style/ComputedStyle.h
diff --git a/Source/core/style/ComputedStyle.h b/Source/core/style/ComputedStyle.h
index 4a0263de57fdd7cc4e9a6cf0bd323239f1ec58ae..7a8afb21bd75499295f9defd5487d790b4d9efdb 100644
--- a/Source/core/style/ComputedStyle.h
+++ b/Source/core/style/ComputedStyle.h
@@ -171,7 +171,7 @@ protected:
&& (_visibility == other._visibility)
&& (_text_align == other._text_align)
&& (_text_transform == other._text_transform)
- && (m_textUnderline == other.m_textUnderline)
+ && (m_hasSimpleUnderline == other.m_hasSimpleUnderline)
&& (_cursor_style == other._cursor_style)
&& (_direction == other._direction)
&& (_white_space == other._white_space)
@@ -193,7 +193,7 @@ protected:
unsigned _visibility : 2; // EVisibility
unsigned _text_align : 4; // ETextAlign
unsigned _text_transform : 2; // ETextTransform
- unsigned m_textUnderline : 1;
+ unsigned m_hasSimpleUnderline : 1; // True if 'underline solid currentColor' is the only text decoration on this element
unsigned _cursor_style : 6; // ECursor
unsigned _direction : 1; // TextDirection
unsigned _white_space : 3; // EWhiteSpace
@@ -297,7 +297,7 @@ protected:
inherited_flags._visibility = initialVisibility();
inherited_flags._text_align = initialTextAlign();
inherited_flags._text_transform = initialTextTransform();
- inherited_flags.m_textUnderline = false;
+ inherited_flags.m_hasSimpleUnderline = false;
inherited_flags._cursor_style = initialCursor();
inherited_flags._direction = initialDirection();
inherited_flags._white_space = initialWhiteSpace();
@@ -587,7 +587,7 @@ public:
TextDecoration textDecorationsInEffect() const;
const Vector<AppliedTextDecoration>& appliedTextDecorations() const;
TextDecoration textDecoration() const { return static_cast<TextDecoration>(visual->textDecoration); }
- TextUnderlinePosition textUnderlinePosition() const { return static_cast<TextUnderlinePosition>(rareInheritedData->m_textUnderlinePosition); }
+ TextUnderlinePosition textUnderlinePosition() const { return static_cast<TextUnderlinePosition>(rareInheritedData->m_hasSimpleUnderlinePosition); }
TextDecorationStyle textDecorationStyle() const { return static_cast<TextDecorationStyle>(rareNonInheritedData->m_textDecorationStyle); }
float wordSpacing() const;
float letterSpacing() const;
@@ -1136,10 +1136,10 @@ public:
void setTextAlignLast(TextAlignLast v) { SET_VAR(rareInheritedData, m_textAlignLast, v); }
void setTextJustify(TextJustify v) { SET_VAR(rareInheritedData, m_textJustify, v); }
void setTextTransform(ETextTransform v) { inherited_flags._text_transform = v; }
- void applyTextDecorations();
+ void applyTextDecorations(bool overrideExistingColors);
void clearAppliedTextDecorations();
void setTextDecoration(TextDecoration v) { SET_VAR(visual, textDecoration, v); }
- void setTextUnderlinePosition(TextUnderlinePosition v) { SET_VAR(rareInheritedData, m_textUnderlinePosition, v); }
+ void setTextUnderlinePosition(TextUnderlinePosition v) { SET_VAR(rareInheritedData, m_hasSimpleUnderlinePosition, v); }
void setTextDecorationStyle(TextDecorationStyle v) { SET_VAR(rareNonInheritedData, m_textDecorationStyle, v); }
void setDirection(TextDirection v) { inherited_flags._direction = v; }
void setSelfOrAncestorHasDirAutoAttribute(bool v) { SET_VAR(rareInheritedData, m_selfOrAncestorHasDirAutoAttribute, v); }
@@ -1381,6 +1381,9 @@ public:
void setSpeak(ESpeak s) { SET_VAR(rareInheritedData, speak, s); }
void setTextCombine(TextCombine v) { SET_VAR(rareInheritedData, m_textCombine, v); }
void setTextDecorationColor(const StyleColor& c) { SET_VAR(rareNonInheritedData, m_textDecorationColor, c); }
+
+ void setSimpleUnderlineColor(const Color& c) { SET_VAR(rareInheritedData, simpleUnderlineColor, c); }
+ void setSimpleUnderlineVisitedColor(const Color& c) { SET_VAR(rareInheritedData, simpleUnderlineVisitedColor, c); }
void setTextEmphasisColor(const StyleColor& c) { SET_VAR_WITH_SETTER(rareInheritedData, textEmphasisColor, setTextEmphasisColor, c); }
void setTextEmphasisFill(TextEmphasisFill fill) { SET_VAR(rareInheritedData, textEmphasisFill, fill); }
void setTextEmphasisMark(TextEmphasisMark mark) { SET_VAR(rareInheritedData, textEmphasisMark, mark); }
@@ -1388,6 +1391,8 @@ public:
void setTextEmphasisPosition(TextEmphasisPosition position) { SET_VAR(rareInheritedData, textEmphasisPosition, position); }
bool setTextOrientation(TextOrientation);
+ Color visitedDependentSimpleUnderlineColor() const { return (insideLink() == InsideVisitedLink) ? rareInheritedData->simpleUnderlineVisitedColor : rareInheritedData->simpleUnderlineColor; }
+
void setMotionPath(PassRefPtr<StyleMotionPath>);
void resetMotionPath();
void setMotionOffset(const Length& motionOffset) { SET_VAR(rareNonInheritedData.access()->m_transform, m_motion.m_offset, motionOffset); }
@@ -1860,6 +1865,7 @@ private:
void appendContent(PassOwnPtrWillBeRawPtr<ContentData>);
void addAppliedTextDecoration(const AppliedTextDecoration&);
+ void updateAppliedTextDecoration(size_t index, Color newColor);
void applyMotionPathTransform(float originX, float originY, TransformationMatrix&) const;
bool diffNeedsFullLayoutAndPaintInvalidation(const ComputedStyle& other) const;

Powered by Google App Engine
This is Rietveld 408576698