summaryrefslogtreecommitdiffstats
path: root/khtml/dom/css_stylesheet.h
diff options
context:
space:
mode:
Diffstat (limited to 'khtml/dom/css_stylesheet.h')
-rw-r--r--khtml/dom/css_stylesheet.h496
1 files changed, 496 insertions, 0 deletions
diff --git a/khtml/dom/css_stylesheet.h b/khtml/dom/css_stylesheet.h
new file mode 100644
index 000000000..33b380ef9
--- /dev/null
+++ b/khtml/dom/css_stylesheet.h
@@ -0,0 +1,496 @@
+/*
+ * This file is part of the DOM implementation for KDE.
+ *
+ * (C) 1999 Lars Knoll (knoll@kde.org)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * This file includes excerpts from the Document Object Model (DOM)
+ * Level 2 Specification (Candidate Recommendation)
+ * http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510/
+ * Copyright © 2000 W3C® (MIT, INRIA, Keio), All Rights Reserved.
+ *
+ */
+#ifndef _CSS_css_stylesheet_h_
+#define _CSS_css_stylesheet_h_
+
+#include <dom/dom_string.h>
+#include <dom/dom_node.h>
+#include <dom/dom_misc.h>
+
+#include <kdelibs_export.h>
+
+namespace DOM {
+
+class StyleSheetImpl;
+class MediaList;
+class NodeImpl;
+class DocumentImpl;
+
+/**
+ * The \c StyleSheet interface is the abstract base
+ * interface for any type of style sheet. It represents a single style
+ * sheet associated with a structured document. In HTML, the
+ * StyleSheet interface represents either an external style sheet,
+ * included via the HTML <a
+ * href="http://www.w3.org/TR/REC-html40/struct/links.html#h-12.3">
+ * LINK </a> element, or an inline <a
+ * href="http://www.w3.org/TR/REC-html40/present/styles.html#h-14.2.3">
+ * STYLE </a> element. In XML, this interface represents an external
+ * style sheet, included via a <a
+ * href="http://www.w3.org/TR/xml-stylesheet"> style sheet processing
+ * instruction </a> .
+ *
+ */
+class KHTML_EXPORT StyleSheet
+{
+public:
+ StyleSheet();
+ StyleSheet(const StyleSheet &other);
+ StyleSheet(StyleSheetImpl *impl);
+public:
+
+ StyleSheet & operator = (const StyleSheet &other);
+
+ ~StyleSheet();
+
+ /**
+ * This specifies the style sheet language for this style sheet.
+ * The style sheet language is specified as a content type (e.g.
+ * "text/css"). The content type is often specified in the
+ * \c ownerNode . A list of registered content types can be
+ * found at <a
+ * href="ftp://ftp.isi.edu/in-notes/iana/assignments/media-types/">
+ * ftp://ftp.isi.edu/in-notes/iana/assignments/media-types/ </a> .
+ * Also see the <a
+ * href="http://www.w3.org/TR/REC-html40/struct/links.html#adef-type-A">
+ * type attribute definition </a> for the \c LINK
+ * element in HTML 4.0, and the type pseudo-attribute for the XML
+ * <a href="http://www.w3.org/TR/xml-stylesheet"> style sheet
+ * processing instruction </a> .
+ *
+ */
+ DOM::DOMString type() const;
+
+ /**
+ * \c false if the style sheet is applied to the
+ * document. \c true if it is not. Modifying this
+ * attribute may cause a reresolution of style for the document.
+ *
+ */
+ bool disabled() const;
+
+ /**
+ * see disabled
+ */
+ void setDisabled( bool );
+
+ /**
+ * The node that associates this style sheet with the document.
+ * For HTML, this may be the corresponding \c LINK or
+ * \c STYLE element. For XML, it may be the linking
+ * processing instruction. For style sheets that are included by
+ * other style sheets, this attribute has a value of null.
+ *
+ */
+ DOM::Node ownerNode() const;
+
+ /**
+ * For style sheet languages that support the concept of style
+ * sheet inclusion, this attribute represents the including style
+ * sheet, if one exists. If the style sheet is a top-level style
+ * sheet, or the style sheet language does not support inclusion,
+ * the value of the attribute is null.
+ *
+ */
+ StyleSheet parentStyleSheet() const;
+
+ /**
+ * If the style sheet is a linked style sheet, the value of its
+ * attribute is its location. For inline style sheets, the value
+ * of this attribute is null. See the <a
+ * href="http://www.w3.org/TR/REC-html40/struct/links.html#adef-href">
+ * href attribute definition </a> for the \c LINK
+ * element in HTML 4.0, and the href pseudo-attribute for the XML
+ * <a href="http://www.w3.org/TR/xml-stylesheet"> style sheet
+ * processing instruction </a> .
+ *
+ */
+ DOM::DOMString href() const;
+
+ /**
+ * The advisory title. The title is often specified in the
+ * \c ownerNode . See the <a
+ * href="http://www.w3.org/TR/REC-html40/struct/global.html#adef-title">
+ * title attribute definition </a> for the \c LINK
+ * element in HTML 4.0, and the title pseudo-attribute for the XML
+ * <a href="http://www.w3.org/TR/xml-stylesheet"> style sheet
+ * processing instruction </a> .
+ *
+ */
+ DOM::DOMString title() const;
+
+ /**
+ * The intended destination media for style information. The media
+ * is often specified in the \c ownerNode . See the <a
+ * href="http://www.w3.org/TR/REC-html40/present/styles.html#adef-media">
+ * media attribute definition </a> for the \c LINK
+ * element in HTML 4.0, and the media pseudo-attribute for the XML
+ * <a href="http://www.w3.org/TR/WD-xml-stylesheet"> style sheet
+ * processing instruction </a> .
+ *
+ */
+ MediaList media() const;
+
+ /**
+ * @internal
+ */
+ bool isCSSStyleSheet() const;
+ StyleSheetImpl *handle() const { return impl; }
+ bool isNull() const { return !impl; }
+protected:
+ StyleSheetImpl *impl;
+};
+
+
+/**
+ * This exception is raised when a specific CSS operation is impossible
+ * to perform.
+ */
+class KHTML_EXPORT CSSException
+{
+public:
+ CSSException(unsigned short _code) { code = _code; }
+ CSSException(const CSSException &other) { code = other.code; }
+
+ CSSException & operator = (const CSSException &other)
+ { code = other.code; return *this; }
+
+ virtual ~CSSException() {}
+ /**
+ * An integer indicating the type of error generated.
+ *
+ */
+ unsigned short code;
+
+ enum ExceptionCode
+ {
+ SYNTAX_ERR = 0,
+ INVALID_MODIFICATION_ERR = 1,
+ _EXCEPTION_OFFSET = 1000
+ };
+};
+
+class CSSStyleSheetImpl;
+class CSSRule;
+class CSSRuleList;
+
+/**
+ * The \c CSSStyleSheet interface is a concrete interface
+ * used to represent a CSS style sheet i.e. a style sheet whose
+ * content type is "text/css".
+ *
+ */
+class KHTML_EXPORT CSSStyleSheet : public StyleSheet
+{
+public:
+ CSSStyleSheet();
+ CSSStyleSheet(const CSSStyleSheet &other);
+ CSSStyleSheet(const StyleSheet &other);
+ CSSStyleSheet(CSSStyleSheetImpl *impl);
+public:
+
+ CSSStyleSheet & operator = (const CSSStyleSheet &other);
+ CSSStyleSheet & operator = (const StyleSheet &other);
+
+ ~CSSStyleSheet();
+
+ /**
+ * If this style sheet comes from an \c \@import rule,
+ * the \c ownerRule attribute will contain the
+ * \c CSSImportRule . In that case, the \c ownerNode
+ * attribute in the \c StyleSheet interface
+ * will be \c null . If the style sheet comes from an
+ * element or a processing instruction, the \c ownerRule
+ * attribute will be \c null and the
+ * \c ownerNode attribute will contain the \c Node .
+ *
+ */
+ CSSRule ownerRule() const;
+
+ /**
+ * The list of all CSS rules contained within the style sheet.
+ * This includes both <a
+ * href="http://www.w3.org/TR/REC-CSS2/syndata.html#q8"> rule sets
+ * </a> and <a
+ * href="http://www.w3.org/TR/REC-CSS2/syndata.html#at-rules">
+ * at-rules </a> .
+ *
+ */
+ CSSRuleList cssRules() const;
+
+ /**
+ * Used to insert a new rule into the style sheet. The new rule
+ * now becomes part of the cascade.
+ *
+ * @param rule The parsable text representing the rule. For rule
+ * sets this contains both the selector and the style declaration.
+ * For at-rules, this specifies both the at-identifier and the
+ * rule content.
+ *
+ * @param index The index within the style sheet's rule list of
+ * the rule before which to insert the specified rule. If the
+ * specified index is equal to the length of the style sheet's
+ * rule collection, the rule will be added to the end of the style
+ * sheet.
+ *
+ * @return The index within the style sheet's rule collection of
+ * the newly inserted rule.
+ *
+ * @exception DOMException
+ * HIERARCHY_REQUEST_ERR: Raised if the rule cannot be inserted at
+ * the specified index e.g. if an \c \@import rule is
+ * inserted after a standard rule set or other at-rule.
+ *
+ * INDEX_SIZE_ERR: Raised if the specified index is not a valid
+ * insertion point.
+ *
+ * NO_MODIFICATION_ALLOWED_ERR: Raised if this style sheet is
+ * readonly.
+ *
+ * @exception CSSException
+ * SYNTAX_ERR: Raised if the specified rule has a syntax error
+ * and is unparsable.
+ *
+ */
+ unsigned long insertRule ( const DOM::DOMString &rule, unsigned long index );
+
+ /**
+ * Used to delete a rule from the style sheet.
+ *
+ * @param index The index within the style sheet's rule list of
+ * the rule to remove.
+ *
+ * @return
+ *
+ * @exception DOMException
+ * INDEX_SIZE_ERR: Raised if the specified index does not
+ * correspond to a rule in the style sheet's rule list.
+ *
+ * NO_MODIFICATION_ALLOWED_ERR: Raised if this style sheet is
+ * readonly.
+ *
+ */
+ void deleteRule ( unsigned long index );
+};
+
+
+class StyleSheetListImpl;
+class StyleSheet;
+
+/**
+ * The \c StyleSheetList interface provides the
+ * abstraction of an ordered collection of style sheets.
+ *
+ */
+class KHTML_EXPORT StyleSheetList
+{
+public:
+ StyleSheetList();
+ StyleSheetList(const StyleSheetList &other);
+ StyleSheetList(StyleSheetListImpl *impl);
+public:
+
+ StyleSheetList & operator = (const StyleSheetList &other);
+
+ ~StyleSheetList();
+
+ /**
+ * The number of \c StyleSheet in the list. The range
+ * of valid child stylesheet indices is \c 0 to
+ * \c length-1 inclusive.
+ *
+ */
+ unsigned long length() const;
+
+ /**
+ * Used to retrieve a style sheet by ordinal index.
+ *
+ * @param index Index into the collection
+ *
+ * @return The style sheet at the \c index position in
+ * the \c StyleSheetList , or \c null if
+ * that is not a valid index.
+ *
+ */
+ StyleSheet item ( unsigned long index );
+
+ /**
+ * @internal
+ */
+ StyleSheetListImpl *handle() const;
+ bool isNull() const;
+
+protected:
+ StyleSheetListImpl *impl;
+};
+
+
+class MediaListImpl;
+class CSSRule;
+class CSSStyleSheet;
+
+/**
+ * The \c MediaList interface provides the abstraction of
+ * an ordered collection of media, without defining or constraining
+ * how this collection is implemented. All media are lowercase
+ * strings.
+ *
+ */
+class KHTML_EXPORT MediaList
+{
+public:
+ MediaList();
+ MediaList(const MediaList &other);
+ MediaList(MediaListImpl *impl);
+public:
+
+ MediaList & operator = (const MediaList &other);
+
+ ~MediaList();
+
+ /**
+ * The parsable textual representation of the media list. This is a
+ * comma-separated list of media.
+ *
+ * @exception DOMException
+ * SYNTAX_ERR: Raised if the specified string value has a syntax error and
+ * is unparsable.
+ *
+ * NO_MODIFICATION_ALLOWED_ERR: Raised if this media list is readonly.
+ */
+ DOM::DOMString mediaText() const;
+
+ /**
+ * see mediaText
+ */
+ void setMediaText(const DOM::DOMString &value);
+
+ /**
+ * The number of media in the list. The range of valid media is 0 to length-1 inclusive.
+ */
+ unsigned long length() const;
+
+
+ /**
+ * Returns the indexth in the list. If index is greater than or equal to
+ * the number of media in the list, this returns null.
+ *
+ * @param index Index into the collection.
+ *
+ * @return The medium at the indexth position in the MediaList, or null if
+ * that is not a valid index.
+ */
+ DOM::DOMString item(unsigned long index) const;
+
+ /**
+ * Deletes the medium indicated by oldMedium from the list.
+ *
+ * @param oldMedium The medium to delete in the media list.
+ *
+ * @exception DOMException
+ * NO_MODIFICATION_ALLOWED_ERR: Raised if this list is readonly.
+ *
+ * NOT_FOUND_ERR: Raised if oldMedium is not in the list.
+ */
+ void deleteMedium(const DOM::DOMString &oldMedium);
+
+ /**
+ * Adds the medium newMedium to the end of the list. If the newMedium is
+ * already used, it is first removed.
+ *
+ * @param newMedium The new medium to add.
+ *
+ * @exception DOMException
+ * INVALID_CHARACTER_ERR: If the medium contains characters that are
+ * invalid in the underlying style language.
+ *
+ * NO_MODIFICATION_ALLOWED_ERR: Raised if this list is readonly.
+ */
+ void appendMedium(const DOM::DOMString &newMedium);
+
+ /**
+ * @internal
+ */
+ MediaListImpl *handle() const;
+ bool isNull() const;
+
+protected:
+ MediaListImpl *impl;
+};
+
+class LinkStyleImpl;
+
+class KHTML_EXPORT LinkStyle
+{
+public:
+ LinkStyle();
+ LinkStyle(const LinkStyle &other);
+
+ LinkStyle & operator = (const LinkStyle &other);
+ LinkStyle & operator = (const Node &other);
+
+ ~LinkStyle();
+
+ StyleSheet sheet();
+
+ bool isNull() const;
+
+protected:
+ DOM::NodeImpl *node;
+ LinkStyleImpl *impl;
+};
+
+class DocumentStyleImpl;
+
+class KHTML_EXPORT DocumentStyle
+{
+public:
+ DocumentStyle();
+ DocumentStyle(const DocumentStyle &other);
+
+ DocumentStyle & operator = (const DocumentStyle &other);
+ DocumentStyle & operator = (const Document &other);
+
+ ~DocumentStyle();
+
+ // KDE 4:: make const
+ StyleSheetList styleSheets();
+
+ DOMString preferredStylesheetSet() const;
+ DOMString selectedStylesheetSet() const;
+ void setSelectedStylesheetSet( const DOMString& aString );
+
+ bool isNull() const { return !impl; }
+
+protected:
+ DOM::DocumentImpl *doc;
+ DocumentStyleImpl *impl;
+};
+
+} // namespace
+
+#endif