diff options
Diffstat (limited to 'WebCore/dom/StyledElement.h')
| -rw-r--r-- | WebCore/dom/StyledElement.h | 57 |
1 files changed, 34 insertions, 23 deletions
diff --git a/WebCore/dom/StyledElement.h b/WebCore/dom/StyledElement.h index 158992e..52bffd3 100644 --- a/WebCore/dom/StyledElement.h +++ b/WebCore/dom/StyledElement.h @@ -3,7 +3,7 @@ * (C) 1999 Antti Koivisto (koivisto@kde.org) * (C) 2001 Peter Kelly (pmk@post.com) * (C) 2001 Dirk Mueller (mueller@kde.org) - * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved. + * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public @@ -38,54 +38,49 @@ class MappedAttribute; class StyledElement : public Element { public: - StyledElement(const QualifiedName&, Document*); virtual ~StyledElement(); - virtual bool isStyledElement() const { return true; } - NamedMappedAttrMap* mappedAttributes() { return static_cast<NamedMappedAttrMap*>(namedAttrMap.get()); } const NamedMappedAttrMap* mappedAttributes() const { return static_cast<NamedMappedAttrMap*>(namedAttrMap.get()); } + bool hasMappedAttributes() const { return namedAttrMap && mappedAttributes()->hasMappedAttributes(); } bool isMappedAttribute(const QualifiedName& name) const { MappedAttributeEntry res = eNone; mapToEntry(name, res); return res != eNone; } - void addCSSLength(MappedAttribute* attr, int id, const String &value); - void addCSSProperty(MappedAttribute* attr, int id, const String &value); - void addCSSProperty(MappedAttribute* attr, int id, int value); - void addCSSStringProperty(MappedAttribute* attr, int id, const String &value, CSSPrimitiveValue::UnitTypes = CSSPrimitiveValue::CSS_STRING); + void addCSSLength(MappedAttribute*, int id, const String& value); + void addCSSProperty(MappedAttribute*, int id, const String& value); + void addCSSProperty(MappedAttribute*, int id, int value); void addCSSImageProperty(MappedAttribute*, int propertyID, const String& url); - void addCSSColor(MappedAttribute* attr, int id, const String &c); - void createMappedDecl(MappedAttribute* attr); - - static CSSMappedAttributeDeclaration* getMappedAttributeDecl(MappedAttributeEntry type, const QualifiedName& name, const AtomicString& value); + void addCSSColor(MappedAttribute*, int id, const String& color); + + static CSSMappedAttributeDeclaration* getMappedAttributeDecl(MappedAttributeEntry, const QualifiedName& name, const AtomicString& value); static void setMappedAttributeDecl(MappedAttributeEntry, const QualifiedName& name, const AtomicString& value, CSSMappedAttributeDeclaration*); - static void removeMappedAttributeDecl(MappedAttributeEntry type, const QualifiedName& name, const AtomicString& value); + static void removeMappedAttributeDecl(MappedAttributeEntry, const QualifiedName& name, const AtomicString& value); static CSSMappedAttributeDeclaration* getMappedAttributeDecl(MappedAttributeEntry, Attribute*); static void setMappedAttributeDecl(MappedAttributeEntry, Attribute*, CSSMappedAttributeDeclaration*); - + CSSMutableStyleDeclaration* inlineStyleDecl() const { return m_inlineStyleDecl.get(); } virtual bool canHaveAdditionalAttributeStyleDecls() const { return false; } virtual void additionalAttributeStyleDecls(Vector<CSSMutableStyleDeclaration*>&) {}; CSSMutableStyleDeclaration* getInlineStyleDecl(); CSSStyleDeclaration* style(); - void createInlineStyleDecl(); - void destroyInlineStyleDecl(); void invalidateStyleAttribute(); - virtual void updateStyleAttribute() const; - - const ClassNames& classNames() const { ASSERT(hasClass()); ASSERT(mappedAttributes()); return mappedAttributes()->classNames(); } - virtual void attributeChanged(Attribute*, bool preserveDecls = false); - virtual void parseMappedAttribute(MappedAttribute*); + const SpaceSplitString& classNames() const { ASSERT(hasClass()); ASSERT(mappedAttributes()); return mappedAttributes()->classNames(); } + virtual bool mapToEntry(const QualifiedName& attrName, MappedAttributeEntry& result) const; - virtual void createAttributeMap() const; + virtual PassRefPtr<Attribute> createAttribute(const QualifiedName&, const AtomicString& value); +protected: + StyledElement(const QualifiedName&, Document*, ConstructionType); + + virtual void attributeChanged(Attribute*, bool preserveDecls = false); + virtual void parseMappedAttribute(MappedAttribute*); virtual void copyNonAttributeProperties(const Element*); virtual void addSubresourceAttributeURLs(ListHashSet<KURL>&) const; -protected: // classAttributeChanged() exists to share code between // parseMappedAttribute (called via setAttribute()) and // svgAttributeChanged (called when element.className.baseValue is set) @@ -93,9 +88,25 @@ protected: virtual void didMoveToNewOwnerDocument(); +private: + virtual bool isStyledElement() const { return true; } + + void createMappedDecl(MappedAttribute*); + + void createInlineStyleDecl(); + void destroyInlineStyleDecl(); + virtual void updateStyleAttribute() const; + + virtual void createAttributeMap() const; + RefPtr<CSSMutableStyleDeclaration> m_inlineStyleDecl; }; +inline void StyledElement::invalidateStyleAttribute() +{ + m_isStyleAttributeValid = false; +} + } //namespace #endif |
