⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 css_base.h

📁 khtml在gtk上的移植版本
💻 H
字号:
/* * This file is part of the CSS implementation for KDE. * * Copyright (C) 1999-2003 Lars Knoll (knoll@kde.org) *               1999 Waldo Bastian (bastian@kde.org) * Copyright (C) 2002 Apple Computer, Inc. * * 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., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. * * $Id: css_base.h,v 1.1.1.1 2004/09/23 08:27:53 kimkinnu Exp $ */#ifndef _CSS_BASE_H#define _CSS_BASE_H#include "dom/dom_string.h"#include "dom/dom_misc.h"#include "xml/dom_nodeimpl.h"#include "misc/shared.h"#include <qdatetime.h>#include <qptrlist.h>namespace DOM {    class StyleSheetImpl;    class MediaList;    class CSSSelector;    class CSSProperty;    class CSSValueImpl;    class CSSPrimitiveValueImpl;    class CSSStyleDeclarationImpl;    class CSSRuleImpl;    class CSSStyleRuleImpl;    class DocumentImpl;    struct CSSNamespace {        DOMString m_prefix;        DOMString m_uri;        CSSNamespace* m_parent;        CSSNamespace(const DOMString& p, const DOMString& u, CSSNamespace* parent)             :m_prefix(p), m_uri(u), m_parent(parent) {}        ~CSSNamespace() { delete m_parent; }                const DOMString& uri() { return m_uri; }        const DOMString& prefix() { return m_prefix; }                CSSNamespace* namespaceForPrefix(const DOMString& prefix) {            if (prefix == m_prefix)                return this;            if (m_parent)                return m_parent->namespaceForPrefix(prefix);            return 0;        }    };    // this class represents a selector for a StyleRule    class CSSSelector    {    public:	CSSSelector()	    : tagHistory(0), simpleSelector(0), nextSelector(0), attr(0), tag(anyQName),              relation( Descendant ), match( None ),              pseudoId( 0 ), _pseudoType(PseudoNotParsed)        {}	~CSSSelector() {	    delete tagHistory;            delete simpleSelector;            delete nextSelector;	}        void append(CSSSelector* n) {            if (!nextSelector) nextSelector = n; else nextSelector->append(n);        }        CSSSelector* next() { return nextSelector; }	/**	 * Print debug output for this selector	 */	void print();	/**	 * Re-create selector text from selector's data	 */	DOMString selectorText() const;	// checks if the 2 selectors (including sub selectors) agree.	bool operator == ( const CSSSelector &other );	// tag == -1 means apply to all elements (Selector = *)	unsigned int specificity();	/* how the attribute value has to match.... Default is Exact */	enum Match	{	    None = 0,	    Id,            Class,	    Exact,	    Set,	    List,	    Hyphen,	    Pseudo,	    Contain,   // css3: E[foo*="bar"]	    Begin,     // css3: E[foo^="bar"]	    End        // css3: E[foo$="bar"]	};	enum Relation	{	    Descendant = 0,	    Child,	    Sibling,	    SubSelector	};	enum PseudoType	{	    PseudoNotParsed = 0,	    PseudoOther,	    PseudoEmpty,	    PseudoFirstChild,            PseudoLastChild,            PseudoOnlyChild,	    PseudoFirstLine,	    PseudoFirstLetter,	    PseudoLink,	    PseudoVisited,            PseudoAnyLink,	    PseudoHover,	    PseudoDrag,	    PseudoFocus,	    PseudoActive,            PseudoTarget,	    PseudoBefore,	    PseudoAfter,            PseudoLang,            PseudoNot,            PseudoRoot,            PseudoSelection	};	inline PseudoType pseudoType() const	    {		if (_pseudoType == PseudoNotParsed)		    extractPseudoType();		return _pseudoType;	    }	mutable DOM::AtomicString value;	CSSSelector* tagHistory;        CSSSelector* simpleSelector; // Used for :not.        CSSSelector* nextSelector; // used for ,-chained selectors	Q_UINT32     attr;	Q_UINT32     tag;        Relation relation     : 2;	Match 	 match         : 4;	unsigned int pseudoId : 3;	mutable PseudoType _pseudoType : 5;    private:	void extractPseudoType() const;    };    // a style class which has a parent (almost all have)    class StyleBaseImpl : public khtml::TreeShared<StyleBaseImpl>    {    public:	StyleBaseImpl()  { m_parent = 0; strictParsing = true; multiLength = false; }	StyleBaseImpl(StyleBaseImpl *p) {	    m_parent = p;	    strictParsing = (m_parent ? m_parent->useStrictParsing() : true);	    multiLength = false;	}	virtual ~StyleBaseImpl() {}	// returns the url of the style sheet this object belongs to	DOMString baseURL();	virtual bool isStyleSheet() const { return false; }	virtual bool isCSSStyleSheet() const { return false; }	virtual bool isStyleSheetList() const { return false; }	virtual bool isMediaList() { return false; }	virtual bool isRuleList() { return false; }	virtual bool isRule() { return false; }	virtual bool isStyleRule() { return false; }	virtual bool isCharetRule() { return false; }	virtual bool isImportRule() { return false; }	virtual bool isMediaRule() { return false; }	virtual bool isFontFaceRule() { return false; }	virtual bool isPageRule() { return false; }	virtual bool isUnknownRule() { return false; }	virtual bool isStyleDeclaration() { return false; }	virtual bool isValue() { return false; }	virtual bool isPrimitiveValue() const { return false; }	virtual bool isValueList() { return false; }	virtual bool isValueCustom() { return false; }	void setParent(StyleBaseImpl *parent) { m_parent = parent; }	static void setParsedValue(int propId, const CSSValueImpl *parsedValue,				   bool important, QPtrList<CSSProperty> *propList);	virtual bool parseString(const DOMString &/*cssString*/, bool = false) { return false; }	virtual void checkLoaded();	void setStrictParsing( bool b ) { strictParsing = b; }	bool useStrictParsing() const { return strictParsing; }	StyleSheetImpl* stylesheet();    protected:	bool strictParsing : 1;	bool multiLength : 1;    };    // a style class which has a list of children (StyleSheets for example)    class StyleListImpl : public StyleBaseImpl    {    public:	StyleListImpl() : StyleBaseImpl() { m_lstChildren = 0; }	StyleListImpl(StyleBaseImpl *parent) : StyleBaseImpl(parent) { m_lstChildren = 0; }	virtual ~StyleListImpl();	unsigned long length() { return m_lstChildren->count(); }	StyleBaseImpl *item(unsigned long num) { return m_lstChildren->at(num); }	void append(StyleBaseImpl *item) { m_lstChildren->append(item); }    protected:	QPtrList<StyleBaseImpl> *m_lstChildren;    };    int getPropertyID(const char *tagStr, int len);}#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -