18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*
28e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright (C) 2004 Zack Rusin <zack@kde.org>
38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright (C) 2004, 2005, 2006, 2008 Apple Inc. All rights reserved.
48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This library is free software; you can redistribute it and/or
68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modify it under the terms of the GNU Lesser General Public
78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * License as published by the Free Software Foundation; either
88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * version 2 of the License, or (at your option) any later version.
98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This library is distributed in the hope that it will be useful,
118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * but WITHOUT ANY WARRANTY; without even the implied warranty of
128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Lesser General Public License for more details.
148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * You should have received a copy of the GNU Lesser General Public
168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * License along with this library; if not, write to the Free Software
178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 02110-1301  USA
198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef CSSComputedStyleDeclaration_h
228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define CSSComputedStyleDeclaration_h
238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "CSSStyleDeclaration.h"
2554cdeeebc7adcbcd900e8b6a141a8cae27d9a631Steve Block#include "PlatformString.h"
26dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#include "RenderStyleConstants.h"
27e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke#include <wtf/RefPtr.h>
288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace WebCore {
308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
31e78cbe89e6f337f2f1fe40315be88f742b547151Steve Blockclass Color;
328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass CSSMutableStyleDeclaration;
33e78cbe89e6f337f2f1fe40315be88f742b547151Steve Blockclass CSSPrimitiveValue;
34e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarkeclass Node;
35e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarkeclass RenderStyle;
36cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Blockclass ShadowData;
378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectenum EUpdateLayout { DoNotUpdateLayout = false, UpdateLayout = true };
398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass CSSComputedStyleDeclaration : public CSSStyleDeclaration {
418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectpublic:
42dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    friend PassRefPtr<CSSComputedStyleDeclaration> computedStyle(PassRefPtr<Node>, bool allowVisitedStyle, const String& pseudoElementName);
438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual ~CSSComputedStyleDeclaration();
448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual String cssText() const;
468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
4721939df44de1705786c545cd1bf519d47250322dBen Murdoch    virtual unsigned virtualLength() const;
488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual String item(unsigned index) const;
498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual PassRefPtr<CSSValue> getPropertyCSSValue(int propertyID) const;
518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual String getPropertyValue(int propertyID) const;
528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual bool getPropertyPriority(int propertyID) const;
53635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    virtual int getPropertyShorthand(int /*propertyID*/) const { return -1; }
54635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    virtual bool isPropertyImplicit(int /*propertyID*/) const { return false; }
558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual PassRefPtr<CSSMutableStyleDeclaration> copy() const;
578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual PassRefPtr<CSSMutableStyleDeclaration> makeMutable();
588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    PassRefPtr<CSSValue> getPropertyCSSValue(int propertyID, EUpdateLayout) const;
605f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian    PassRefPtr<CSSValue> getFontSizeCSSValuePreferringKeyword() const;
615abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick    bool useFixedFontDefaultSize() const;
628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if ENABLE(SVG)
638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    PassRefPtr<CSSValue> getSVGPropertyCSSValue(int propertyID, EUpdateLayout) const;
648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif
658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochprotected:
670bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    virtual bool cssPropertyMatches(const CSSProperty*) const;
688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectprivate:
70dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    CSSComputedStyleDeclaration(PassRefPtr<Node>, bool allowVisitedStyle, const String&);
718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual void setCssText(const String&, ExceptionCode&);
738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual String removeProperty(int propertyID, ExceptionCode&);
758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual void setProperty(int propertyId, const String& value, bool important, ExceptionCode&);
768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
7768513a70bcd92384395513322f1b801e7bf9c729Steve Block    PassRefPtr<CSSValue> valueForShadow(const ShadowData*, int, RenderStyle*) const;
78e78cbe89e6f337f2f1fe40315be88f742b547151Steve Block    PassRefPtr<CSSPrimitiveValue> currentColorOrValidColor(RenderStyle*, const Color&) const;
7954cdeeebc7adcbcd900e8b6a141a8cae27d9a631Steve Block
808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    RefPtr<Node> m_node;
81dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    PseudoId m_pseudoElementSpecifier;
82dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    bool m_allowVisitedStyle;
838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project};
848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
85dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blockinline PassRefPtr<CSSComputedStyleDeclaration> computedStyle(PassRefPtr<Node> node,  bool allowVisitedStyle = false, const String& pseudoElementName = String())
868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
87dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    return adoptRef(new CSSComputedStyleDeclaration(node, allowVisitedStyle, pseudoElementName));
888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} // namespace WebCore
918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif // CSSComputedStyleDeclaration_h
93