Index: Source/core/rendering/style/RenderStyle.h |
diff --git a/Source/core/rendering/style/RenderStyle.h b/Source/core/rendering/style/RenderStyle.h |
index 5e432d81ff77c6289874a23d499c49a34c32b581..872c6e9ad8cd47a9e516b1e6c426d7323ab9de00 100644 |
--- a/Source/core/rendering/style/RenderStyle.h |
+++ b/Source/core/rendering/style/RenderStyle.h |
@@ -97,6 +97,7 @@ using std::max; |
class FilterOperations; |
+class AppliedTextDecoration; |
class BorderData; |
class CounterContent; |
class CursorList; |
@@ -163,7 +164,7 @@ protected: |
&& (_visibility == other._visibility) |
&& (_text_align == other._text_align) |
&& (_text_transform == other._text_transform) |
- && (_text_decorations == other._text_decorations) |
+ && (m_textUnderline == other.m_textUnderline) |
&& (_cursor_style == other._cursor_style) |
&& (_direction == other._direction) |
&& (_white_space == other._white_space) |
@@ -185,24 +186,24 @@ protected: |
unsigned _visibility : 2; // EVisibility |
unsigned _text_align : 4; // ETextAlign |
unsigned _text_transform : 2; // ETextTransform |
- unsigned _text_decorations : TextDecorationBits; |
+ unsigned m_textUnderline : 1; |
unsigned _cursor_style : 6; // ECursor |
unsigned _direction : 1; // TextDirection |
unsigned _white_space : 3; // EWhiteSpace |
- // 32 bits |
unsigned _border_collapse : 1; // EBorderCollapse |
unsigned _box_direction : 1; // EBoxDirection (CSS3 box_direction property, flexible box layout module) |
+ // 32 bits |
// non CSS2 inherited |
unsigned m_rtlOrdering : 1; // Order |
unsigned m_printColorAdjust : PrintColorAdjustBits; |
unsigned _pointerEvents : 4; // EPointerEvents |
unsigned _insideLink : 2; // EInsideLink |
- // 43 bits |
+ // 40 bits |
// CSS Text Layout Module Level 3: Vertical writing support |
unsigned m_writingMode : 2; // WritingMode |
- // 45 bits |
+ // 42 bits |
} inherited_flags; |
// don't inherit |
@@ -302,7 +303,7 @@ protected: |
inherited_flags._visibility = initialVisibility(); |
inherited_flags._text_align = initialTextAlign(); |
inherited_flags._text_transform = initialTextTransform(); |
- inherited_flags._text_decorations = initialTextDecoration(); |
+ inherited_flags.m_textUnderline = false; |
inherited_flags._cursor_style = initialCursor(); |
inherited_flags._direction = initialDirection(); |
inherited_flags._white_space = initialWhiteSpace(); |
@@ -581,7 +582,9 @@ public: |
TextAlignLast textAlignLast() const { return static_cast<TextAlignLast>(rareInheritedData->m_textAlignLast); } |
TextJustify textJustify() const { return static_cast<TextJustify>(rareInheritedData->m_textJustify); } |
ETextTransform textTransform() const { return static_cast<ETextTransform>(inherited_flags._text_transform); } |
- TextDecoration textDecorationsInEffect() const { return static_cast<TextDecoration>(inherited_flags._text_decorations); } |
+ TextDecoration textDecorationsInEffect() const; |
+ const Vector<AppliedTextDecoration>& appliedTextDecorations() const; |
+ bool hasAppliedTextDecorations() const { return appliedTextDecorations().size(); } |
TextDecoration textDecoration() const { return static_cast<TextDecoration>(visual->textDecoration); } |
TextUnderlinePosition textUnderlinePosition() const { return static_cast<TextUnderlinePosition>(rareInheritedData->m_textUnderlinePosition); } |
TextDecorationStyle textDecorationStyle() const { return static_cast<TextDecorationStyle>(rareNonInheritedData->m_textDecorationStyle); } |
@@ -1114,8 +1117,9 @@ 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 addToTextDecorationsInEffect(TextDecoration v) { inherited_flags._text_decorations |= v; } |
- void setTextDecorationsInEffect(TextDecoration v) { inherited_flags._text_decorations = v; } |
+ void addAppliedTextDecoration(const AppliedTextDecoration&); |
+ void applyTextDecorations(); |
+ void clearAppliedTextDecorations(); |
void setTextDecoration(TextDecoration v) { SET_VAR(visual, textDecoration, v); } |
void setTextUnderlinePosition(TextUnderlinePosition v) { SET_VAR(rareInheritedData, m_textUnderlinePosition, v); } |
void setTextDecorationStyle(TextDecorationStyle v) { SET_VAR(rareNonInheritedData, m_textDecorationStyle, v); } |
@@ -1515,7 +1519,8 @@ public: |
bool lastChildState() const { return noninherited_flags.lastChildState; } |
void setLastChildState() { setUnique(); noninherited_flags.lastChildState = true; } |
- StyleColor visitedDependentDecorationColor() const; |
+ StyleColor visitedDependentDecorationStyleColor() const; |
+ Color visitedDependentDecorationColor() const; |
Color visitedDependentColor(int colorProperty) const; |
void setHasExplicitlyInheritedProperties() { noninherited_flags.explicitInheritance = true; } |