You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
497 lines
14 KiB
497 lines
14 KiB
/*
|
|
* 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 tqcontains 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 tqcontains 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
|