15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/*
25c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright (C) 2000 Lars Knoll (knoll@kde.org)
35c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *           (C) 2000 Antti Koivisto (koivisto@kde.org)
45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *           (C) 2000 Dirk Mueller (mueller@kde.org)
55c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright (C) 2003, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved.
65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright (C) 2006 Graham Dennis (graham.dennis@gmail.com)
75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *
85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * This library is free software; you can redistribute it and/or
95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * modify it under the terms of the GNU Library General Public
105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * License as published by the Free Software Foundation; either
115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * version 2 of the License, or (at your option) any later version.
125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *
135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * This library is distributed in the hope that it will be useful,
145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * but WITHOUT ANY WARRANTY; without even the implied warranty of
155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Library General Public License for more details.
175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *
185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * You should have received a copy of the GNU Library General Public License
195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * along with this library; see the file COPYING.LIB.  If not, write to
205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Boston, MA 02110-1301, USA.
225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *
235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */
245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#ifndef StyleRareInheritedData_h
265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define StyleRareInheritedData_h
275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
28bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles)#include "core/rendering/style/DataRef.h"
29bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles)#include "core/rendering/style/StyleVariableData.h"
30bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles)#include "platform/Length.h"
31f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles)#include "platform/graphics/Color.h"
3202772c6a72f1ee0b226341a4f4439970c29fc861Ben Murdoch#include "wtf/PassRefPtr.h"
3302772c6a72f1ee0b226341a4f4439970c29fc861Ben Murdoch#include "wtf/RefCounted.h"
3402772c6a72f1ee0b226341a4f4439970c29fc861Ben Murdoch#include "wtf/text/AtomicString.h"
355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)namespace WebCore {
375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class CursorList;
395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class QuotesData;
40f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles)class ShadowList;
41926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)class StyleImage;
425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// This struct is for rarely used inherited CSS3, CSS2, and WebKit-specific properties.
445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// By grouping them together, we save space, and only allocate this object when someone
455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// actually uses one of these properties.
465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class StyleRareInheritedData : public RefCounted<StyleRareInheritedData> {
475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)public:
485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    static PassRefPtr<StyleRareInheritedData> create() { return adoptRef(new StyleRareInheritedData); }
495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    PassRefPtr<StyleRareInheritedData> copy() const { return adoptRef(new StyleRareInheritedData(*this)); }
505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    ~StyleRareInheritedData();
515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool operator==(const StyleRareInheritedData& o) const;
535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool operator!=(const StyleRareInheritedData& o) const
545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    {
555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        return !(*this == o);
565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    }
575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool shadowDataEquivalent(const StyleRareInheritedData&) const;
585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
59926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    RefPtr<StyleImage> listStyleImage;
60926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
618abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles)    Color textStrokeColor;
625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    float textStrokeWidth;
638abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles)    Color textFillColor;
648abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles)    Color textEmphasisColor;
655267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)
668abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles)    Color visitedLinkTextStrokeColor;
678abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles)    Color visitedLinkTextFillColor;
688abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles)    Color visitedLinkTextEmphasisColor;
695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
70f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles)    RefPtr<ShadowList> textShadow; // Our text shadow information for shadowed text drawing.
715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    AtomicString highlight; // Apple-specific extension for custom highlight rendering.
725267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)
735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    RefPtr<CursorList> cursorData;
745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    Length indent;
755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    float m_effectiveZoom;
765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    // Paged media properties.
785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    short widows;
795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    short orphans;
80926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    unsigned m_hasAutoWidows : 1;
81926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    unsigned m_hasAutoOrphans : 1;
825267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)
835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    unsigned textSecurity : 2; // ETextSecurity
845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    unsigned userModify : 2; // EUserModify (editing)
855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    unsigned wordBreak : 2; // EWordBreak
865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    unsigned overflowWrap : 1; // EOverflowWrap
875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    unsigned lineBreak : 3; // LineBreak
885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    unsigned resize : 2; // EResize
895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    unsigned userSelect : 2; // EUserSelect
905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    unsigned speak : 3; // ESpeak
915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    unsigned hyphens : 2; // Hyphens
925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    unsigned textEmphasisFill : 1; // TextEmphasisFill
935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    unsigned textEmphasisMark : 3; // TextEmphasisMark
945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    unsigned textEmphasisPosition : 1; // TextEmphasisPosition
95e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch    unsigned m_textAlignLast : 3; // TextAlignLast
961e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles)    unsigned m_textJustify : 2; // TextJustify
97926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    unsigned m_textOrientation : 2; // TextOrientation
98926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    unsigned m_textIndentLine : 1; // TextIndentEachLine
995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    unsigned m_lineBoxContain: 7; // LineBoxContain
1005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    // CSS Image Values Level 3
1015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    unsigned m_imageRendering : 2; // EImageRendering
1025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    unsigned m_lineSnap : 2; // LineSnap
1035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    unsigned m_lineAlign : 1; // LineAlign
10451b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)    unsigned m_textUnderlinePosition : 2; // TextUnderlinePosition
105926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    unsigned m_rubyPosition : 1; // RubyPosition
106bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles)    unsigned m_touchActionDelay : 1; // TouchActionDelay
1075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    AtomicString hyphenationString;
1095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    short hyphenationLimitBefore;
1105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    short hyphenationLimitAfter;
1115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    short hyphenationLimitLines;
1125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    AtomicString locale;
1145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    AtomicString textEmphasisCustomMark;
1165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    RefPtr<QuotesData> quotes;
1175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    AtomicString m_lineGrid;
1195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    unsigned m_tabSize;
1205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1218abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles)    Color tapHighlightColor;
1225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    DataRef<StyleVariableData> m_variables;
1245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)private:
1265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    StyleRareInheritedData();
1275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    StyleRareInheritedData(const StyleRareInheritedData&);
1285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)};
1295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} // namespace WebCore
1315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#endif // StyleRareInheritedData_h
133