| Index: third_party/WebKit/Source/core/style/StyleRareInheritedData.h
|
| diff --git a/third_party/WebKit/Source/core/style/StyleRareInheritedData.h b/third_party/WebKit/Source/core/style/StyleRareInheritedData.h
|
| index b4515f6e5d00e5a2cebf75dc0d81188e18659f0c..3240b65456e081768a5a66ae18f61f7b27e4a0da 100644
|
| --- a/third_party/WebKit/Source/core/style/StyleRareInheritedData.h
|
| +++ b/third_party/WebKit/Source/core/style/StyleRareInheritedData.h
|
| @@ -25,149 +25,110 @@
|
| #ifndef StyleRareInheritedData_h
|
| #define StyleRareInheritedData_h
|
|
|
| -#include "core/CoreExport.h"
|
| -#include "core/css/StyleColor.h"
|
| -#include "core/style/TextSizeAdjust.h"
|
| -#include "platform/Length.h"
|
| -#include "platform/graphics/Color.h"
|
| -#include "platform/heap/Handle.h"
|
| -#include "platform/text/TabSize.h"
|
| -#include "wtf/PassRefPtr.h"
|
| -#include "wtf/RefCounted.h"
|
| -#include "wtf/RefVector.h"
|
| -#include "wtf/text/AtomicString.h"
|
| -
|
| namespace blink {
|
|
|
| -class AppliedTextDecoration;
|
| -class CursorData;
|
| -class QuotesData;
|
| -class ShadowList;
|
| -class StyleImage;
|
| -class StyleVariableData;
|
| -
|
| -typedef RefVector<AppliedTextDecoration> AppliedTextDecorationList;
|
| -typedef HeapVector<CursorData> CursorList;
|
| -
|
| -// This struct is for rarely used inherited CSS3, CSS2, and WebKit-specific properties.
|
| -// By grouping them together, we save space, and only allocate this object when someone
|
| -// actually uses one of these properties.
|
| -// TODO(sashab): Move this into a private class on ComputedStyle, and remove
|
| -// all methods on it, merging them into copy/creation methods on ComputedStyle
|
| -// instead. Keep the allocation logic, only allocating a new object if needed.
|
| -class CORE_EXPORT StyleRareInheritedData : public RefCounted<StyleRareInheritedData> {
|
| +enum CSSPropertyID {
|
| + CSSPropertyStopColor = 197,
|
| + CSSPropertyTextDecorationColor = 214,
|
| + CSSPropertyWebkitTextFillColor = 298,
|
| +};
|
| +
|
| +typedef unsigned RGBA32; // RGBA quadruplet
|
| +
|
| +RGBA32 makeRGB(int r, int g, int b);
|
| +
|
| +inline int alphaChannel(RGBA32 color) { return (color >> 24) & 0xFF; }
|
| +
|
| +class Color {
|
| public:
|
| - static PassRefPtr<StyleRareInheritedData> create() { return adoptRef(new StyleRareInheritedData); }
|
| - PassRefPtr<StyleRareInheritedData> copy() const { return adoptRef(new StyleRareInheritedData(*this)); }
|
| - ~StyleRareInheritedData();
|
| + Color() : m_color(Color::transparent) { }
|
| + Color(RGBA32 color) : m_color(color) { }
|
| + Color(int r, int g, int b) : m_color(makeRGB(r, g, b)) { }
|
|
|
| - bool operator==(const StyleRareInheritedData&) const;
|
| - bool operator!=(const StyleRareInheritedData& o) const
|
| - {
|
| - return !(*this == o);
|
| - }
|
| - bool shadowDataEquivalent(const StyleRareInheritedData&) const;
|
| - bool quotesDataEquivalent(const StyleRareInheritedData&) const;
|
| + bool hasAlpha() const { return alpha() < 255; }
|
|
|
| - Persistent<StyleImage> listStyleImage;
|
| + int alpha() const { return alphaChannel(m_color); }
|
|
|
| - StyleColor textStrokeColor() const { return m_textStrokeColorIsCurrentColor ? StyleColor::currentColor() : StyleColor(m_textStrokeColor); }
|
| - StyleColor textFillColor() const { return m_textFillColorIsCurrentColor ? StyleColor::currentColor() : StyleColor(m_textFillColor); }
|
| - StyleColor textEmphasisColor() const { return m_textEmphasisColorIsCurrentColor ? StyleColor::currentColor() : StyleColor(m_textEmphasisColor); }
|
| - StyleColor visitedLinkTextStrokeColor() const { return m_visitedLinkTextStrokeColorIsCurrentColor ? StyleColor::currentColor() : StyleColor(m_visitedLinkTextStrokeColor); }
|
| - StyleColor visitedLinkTextFillColor() const { return m_visitedLinkTextFillColorIsCurrentColor ? StyleColor::currentColor() : StyleColor(m_visitedLinkTextFillColor); }
|
| - StyleColor visitedLinkTextEmphasisColor() const { return m_visitedLinkTextEmphasisColorIsCurrentColor ? StyleColor::currentColor() : StyleColor(m_visitedLinkTextEmphasisColor); }
|
| + RGBA32 rgb() const { return m_color; } // Preserve the alpha.
|
|
|
| - void setTextStrokeColor(const StyleColor& color) { m_textStrokeColor = color.resolve(Color()); m_textStrokeColorIsCurrentColor = color.isCurrentColor(); }
|
| - void setTextFillColor(const StyleColor& color) { m_textFillColor = color.resolve(Color()); m_textFillColorIsCurrentColor = color.isCurrentColor(); }
|
| - void setTextEmphasisColor(const StyleColor& color) { m_textEmphasisColor = color.resolve(Color()); m_textEmphasisColorIsCurrentColor = color.isCurrentColor(); }
|
| - void setVisitedLinkTextStrokeColor(const StyleColor& color) { m_visitedLinkTextStrokeColor = color.resolve(Color()); m_visitedLinkTextStrokeColorIsCurrentColor = color.isCurrentColor(); }
|
| - void setVisitedLinkTextFillColor(const StyleColor& color) { m_visitedLinkTextFillColor = color.resolve(Color()); m_visitedLinkTextFillColorIsCurrentColor = color.isCurrentColor(); }
|
| - void setVisitedLinkTextEmphasisColor(const StyleColor& color) { m_visitedLinkTextEmphasisColor = color.resolve(Color()); m_visitedLinkTextEmphasisColorIsCurrentColor = color.isCurrentColor(); }
|
| + static const RGBA32 black = 0xFF000000;
|
| + static const RGBA32 transparent = 0x00000000;
|
|
|
| - Color m_textStrokeColor;
|
| - float textStrokeWidth;
|
| - Color m_textFillColor;
|
| - Color m_textEmphasisColor;
|
| +private:
|
| + RGBA32 m_color;
|
| +};
|
|
|
| - Color m_visitedLinkTextStrokeColor;
|
| - Color m_visitedLinkTextFillColor;
|
| - Color m_visitedLinkTextEmphasisColor;
|
| +inline bool operator==(const Color& a, const Color& b)
|
| +{
|
| + return a.rgb() == b.rgb();
|
| +}
|
|
|
| - RefPtr<ShadowList> textShadow; // Our text shadow information for shadowed text drawing.
|
| - AtomicString highlight; // Apple-specific extension for custom highlight rendering.
|
| +inline bool operator!=(const Color& a, const Color& b)
|
| +{
|
| + return !(a == b);
|
| +}
|
|
|
| - Persistent<CursorList> cursorData;
|
|
|
| - Length indent;
|
| - float m_effectiveZoom;
|
| +class StyleColor {
|
| +public:
|
| + StyleColor() : m_currentColor(true) { }
|
| + StyleColor(Color color) : m_color(color), m_currentColor(false) { }
|
| + static StyleColor currentColor() { return StyleColor(); }
|
| +
|
| + bool isCurrentColor() const { return m_currentColor; }
|
| + Color getColor() const { /*ASSERT(!isCurrentColor());*/ return m_color; }
|
| +
|
| + Color resolve(Color currentColor) const { return m_currentColor ? currentColor : m_color; }
|
| +
|
| +private:
|
| + Color m_color;
|
| + bool m_currentColor;
|
| +};
|
|
|
| - // Paged media properties.
|
| - short widows;
|
| - short orphans;
|
| +inline bool operator==(const StyleColor& a, const StyleColor& b)
|
| +{
|
| + if (a.isCurrentColor() || b.isCurrentColor())
|
| + return a.isCurrentColor() && b.isCurrentColor();
|
| + return a.getColor() == b.getColor();
|
| +}
|
| +
|
| +inline bool operator!=(const StyleColor& a, const StyleColor& b)
|
| +{
|
| + return !(a == b);
|
| +}
|
| +
|
| +class StyleRareInheritedData {
|
| +public:
|
| + ~StyleRareInheritedData();
|
| +
|
| + StyleColor textStrokeColor() const
|
| + {
|
| + return m_textStrokeColorIsCurrentColor ? StyleColor::currentColor() : StyleColor(m_textStrokeColor);
|
| + }
|
| + StyleColor visitedLinkTextFillColor() const
|
| + {
|
| + return m_visitedLinkTextFillColorIsCurrentColor ? StyleColor::currentColor() : StyleColor(m_visitedLinkTextFillColor);
|
| + }
|
| +
|
| + void setVisitedLinkTextFillColor(const StyleColor& color)
|
| + {
|
| + m_visitedLinkTextFillColor = color.resolve(Color());
|
| + m_visitedLinkTextFillColorIsCurrentColor = color.isCurrentColor();
|
| + }
|
| +
|
| + Color m_textStrokeColor;
|
| + Color m_visitedLinkTextFillColor;
|
|
|
| unsigned m_textStrokeColorIsCurrentColor : 1;
|
| - unsigned m_textFillColorIsCurrentColor : 1;
|
| - unsigned m_textEmphasisColorIsCurrentColor : 1;
|
| - unsigned m_visitedLinkTextStrokeColorIsCurrentColor : 1;
|
| unsigned m_visitedLinkTextFillColorIsCurrentColor : 1;
|
| - unsigned m_visitedLinkTextEmphasisColorIsCurrentColor : 1;
|
| -
|
| - unsigned textSecurity : 2; // ETextSecurity
|
| - unsigned userModify : 2; // EUserModify (editing)
|
| - unsigned wordBreak : 2; // EWordBreak
|
| - unsigned overflowWrap : 1; // EOverflowWrap
|
| - unsigned lineBreak : 3; // LineBreak
|
| - unsigned userSelect : 2; // EUserSelect
|
| - unsigned speak : 3; // ESpeak
|
| - unsigned hyphens : 2; // Hyphens
|
| - unsigned textEmphasisFill : 1; // TextEmphasisFill
|
| - unsigned textEmphasisMark : 3; // TextEmphasisMark
|
| - unsigned textEmphasisPosition : 1; // TextEmphasisPosition
|
| - unsigned m_textAlignLast : 3; // TextAlignLast
|
| - unsigned m_textJustify : 2; // TextJustify
|
| - unsigned m_textOrientation : 2; // TextOrientation
|
| - unsigned m_textCombine : 1; // CSS3 text-combine-upright properties
|
| - unsigned m_textIndentLine : 1; // TextIndentEachLine
|
| - unsigned m_textIndentType : 1; // TextIndentHanging
|
| - // CSS Image Values Level 3
|
| - unsigned m_imageRendering : 3; // EImageRendering
|
| - unsigned m_textUnderlinePosition : 1; // TextUnderlinePosition
|
| - unsigned m_rubyPosition : 1; // RubyPosition
|
| -
|
| - // Though will-change is not itself an inherited property, the intent
|
| - // expressed by 'will-change: contents' includes descendants.
|
| - unsigned m_subtreeWillChangeContents : 1;
|
| -
|
| - unsigned m_selfOrAncestorHasDirAutoAttribute : 1;
|
| -
|
| - unsigned m_respectImageOrientation : 1;
|
| -
|
| - unsigned m_snapHeightPosition : 7;
|
| -
|
| - AtomicString hyphenationString;
|
| - short hyphenationLimitBefore;
|
| - short hyphenationLimitAfter;
|
| - short hyphenationLimitLines;
|
| -
|
| - uint8_t m_snapHeightUnit;
|
| -
|
| - AtomicString textEmphasisCustomMark;
|
| - RefPtr<QuotesData> quotes;
|
| -
|
| - Color tapHighlightColor;
|
| -
|
| - RefPtr<AppliedTextDecorationList> appliedTextDecorations;
|
| - TabSize m_tabSize;
|
| -
|
| - RefPtr<StyleVariableData> variables;
|
| - TextSizeAdjust m_textSizeAdjust;
|
|
|
| -private:
|
| + StyleColor m_textDecorationColor;
|
| + StyleColor m_visitedLinkTextDecorationColor;
|
| +
|
| StyleRareInheritedData();
|
| - StyleRareInheritedData(const StyleRareInheritedData&);
|
| };
|
|
|
| +
|
| } // namespace blink
|
|
|
| #endif // StyleRareInheritedData_h
|
|
|