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

📄 dom_docimpl.h

📁 khtml在gtk上的移植版本
💻 H
📖 第 1 页 / 共 2 页
字号:
/* * This file is part of the DOM implementation for KDE. * * Copyright (C) 1999 Lars Knoll (knoll@kde.org) *           (C) 1999 Antti Koivisto (koivisto@kde.org) *           (C) 2001 Dirk Mueller (mueller@kde.org) * Copyright (C) 2003 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. * */#ifndef _DOM_DocumentImpl_h_#define _DOM_DocumentImpl_h_#include "xml/dom_elementimpl.h"#include "xml/dom2_traversalimpl.h"#include "misc/shared.h"#include <qstringlist.h>#include <qptrlist.h>#include <qobject.h>#include <qdict.h>#include <qmap.h>#include <qdatetime.h>#include <kurl.h>#if APPLE_CHANGES#include "KWQSignal.h"#include "decoder.h"#endif#include "htmlediting.h"class QPaintDevice;class QPaintDeviceMetrics;class KHTMLView;class KHTMLPart;class RenderArena;#if APPLE_CHANGESclass KWQAccObjectCache;#endif// This amount of time must have elapsed before we will even consider scheduling a layout without a delay.const int cLayoutScheduleThreshold = 250;// This is the amount of time we will delay doing a layout whenever we are either still parsing, or // when the minimum amount of time according to the |cLayoutScheduleThreshold| has not yet elapsed.const int cLayoutTimerDelay = 1000;namespace khtml {    class CSSStyleSelector;    class DocLoader;    class EditCommand;    class RenderImage;    class Tokenizer;    class XMLHandler;}#ifndef KHTML_NO_XBLnamespace XBL {    class XBLBindingManager;}#endifnamespace DOM {    class AbstractViewImpl;    class AttrImpl;    class CDATASectionImpl;    class CSSStyleSheetImpl;    class CSSMappedAttributeDeclarationImpl;    class CommentImpl;    class DocumentFragmentImpl;    class DocumentImpl;    class DocumentType;    class DocumentTypeImpl;#if APPLE_CHANGES    class DOMImplementation;#endif    class EditingTextImpl;    class ElementImpl;    class EntityReferenceImpl;    class EventImpl;    class EventListener;    class GenericRONamedNodeMapImpl;    class HTMLDocumentImpl;    class HTMLElementImpl;    class HTMLImageLoader;    class HTMLMapElementImpl;    class JSEditor;    class NodeFilter;    class NodeFilterImpl;    class NodeIteratorImpl;    class NodeListImpl;    class ProcessingInstructionImpl;    class RangeImpl;    class RegisteredEventListener;    class Selection;    class StyleSheetImpl;    class StyleSheetListImpl;    class TextImpl;    class TreeWalkerImpl;class DOMImplementationImpl : public khtml::Shared<DOMImplementationImpl>{public:    DOMImplementationImpl();    ~DOMImplementationImpl();    // DOM methods & attributes for DOMImplementation    bool hasFeature ( const DOMString &feature, const DOMString &version );    DocumentTypeImpl *createDocumentType( const DOMString &qualifiedName, const DOMString &publicId,                                          const DOMString &systemId, int &exceptioncode );    DocumentImpl *createDocument( const DOMString &namespaceURI, const DOMString &qualifiedName,                                  const DocumentType &doctype, int &exceptioncode );    DOMImplementationImpl* getInterface(const DOMString& feature) const;    // From the DOMImplementationCSS interface    CSSStyleSheetImpl *createCSSStyleSheet(DOMStringImpl *title, DOMStringImpl *media, int &exceptioncode);    // From the HTMLDOMImplementation interface    HTMLDocumentImpl* createHTMLDocument( const DOMString& title);    // Other methods (not part of DOM)    DocumentImpl *createDocument( KHTMLView *v = 0 );    HTMLDocumentImpl *createHTMLDocument( KHTMLView *v = 0 );    // Returns the static instance of this class - only one instance of this class should    // ever be present, and is used as a factory method for creating DocumentImpl objects    static DOMImplementationImpl *instance();#if APPLE_CHANGES    static DOMImplementation createInstance (DOMImplementationImpl *impl);#endifprotected:    static DOMImplementationImpl *m_instance;};/** * @internal */class DocumentImpl : public QObject, public NodeBaseImpl{    Q_OBJECTpublic:    DocumentImpl(DOMImplementationImpl *_implementation, KHTMLView *v);    ~DocumentImpl();    // DOM methods & attributes for Document    DocumentTypeImpl *doctype() const;    DOMImplementationImpl *implementation() const;    virtual ElementImpl *documentElement() const;    virtual ElementImpl *createElement ( const DOMString &tagName, int &exceptioncode );    DocumentFragmentImpl *createDocumentFragment ();    TextImpl *createTextNode ( const DOMString &data );    CommentImpl *createComment ( const DOMString &data );    CDATASectionImpl *createCDATASection ( const DOMString &data );    ProcessingInstructionImpl *createProcessingInstruction ( const DOMString &target, const DOMString &data );    Attr createAttribute(NodeImpl::Id id);    EntityReferenceImpl *createEntityReference ( const DOMString &name );    NodeImpl *importNode( NodeImpl *importedNode, bool deep, int &exceptioncode );    virtual ElementImpl *createElementNS ( const DOMString &_namespaceURI, const DOMString &_qualifiedName, int &exceptioncode );    ElementImpl *getElementById ( const DOMString &elementId ) const;    // Actually part of HTMLDocument, but used for giving XML documents a window title as well    DOMString title() const { return m_title; }    void setTitle(DOMString _title);    // DOM methods overridden from  parent classes    virtual DOMString nodeName() const;    virtual unsigned short nodeType() const;    // Other methods (not part of DOM)    virtual bool isDocumentNode() const { return true; }    virtual bool isHTMLDocument() const { return false; }    virtual ElementImpl *createHTMLElement ( const DOMString &tagName, int &exceptioncode );    khtml::CSSStyleSelector *styleSelector() { return m_styleSelector; }    ElementImpl *DocumentImpl::getElementByAccessKey( const DOMString &key );        /**     * Updates the pending sheet count and then calls updateStyleSelector.     */    void stylesheetLoaded();    /**     * This method returns true if all top-level stylesheets have loaded (including     * any @imports that they may be loading).     */    bool haveStylesheetsLoaded() { return m_pendingStylesheets <= 0 || m_ignorePendingStylesheets; }    /**     * Increments the number of pending sheets.  The <link> elements     * invoke this to add themselves to the loading list.     */    void addPendingSheet() { m_pendingStylesheets++; }    /**     * Called when one or more stylesheets in the document may have been added, removed or changed.     *     * Creates a new style selector and assign it to this document. This is done by iterating through all nodes in     * document (or those before <BODY> in a HTML document), searching for stylesheets. Stylesheets can be contained in     * <LINK>, <STYLE> or <BODY> elements, as well as processing instructions (XML documents only). A list is     * constructed from these which is used to create the a new style selector which collates all of the stylesheets     * found and is used to calculate the derived styles for all rendering objects.     */    void updateStyleSelector();    void recalcStyleSelector();    bool usesDescendantRules() { return m_usesDescendantRules; }    void setUsesDescendantRules(bool b) { m_usesDescendantRules = b; }    bool usesSiblingRules() { return m_usesSiblingRules; }    void setUsesSiblingRules(bool b) { m_usesSiblingRules = b; }\    QString nextState();    // Query all registered elements for their state    QStringList docState();    void registerMaintainsState(NodeImpl* e) { m_maintainsState.append(e); }    void deregisterMaintainsState(NodeImpl* e) { m_maintainsState.removeRef(e); }    // Set the state the document should restore to    void setRestoreState( const QStringList &s) { m_state = s; }    QStringList &restoreState( ) { return m_state; }    KHTMLView *view() const { return m_view; }    KHTMLPart *part() const;    RangeImpl *createRange();    NodeIteratorImpl *createNodeIterator(NodeImpl *root, unsigned long whatToShow,        NodeFilterImpl *filter, bool expandEntityReferences, int &exceptioncode);    TreeWalkerImpl *createTreeWalker(NodeImpl *root, unsigned long whatToShow,         NodeFilterImpl *filter, bool expandEntityReferences, int &exceptioncode);    // Special support for editing    CSSStyleDeclarationImpl *createCSSStyleDeclaration();    EditingTextImpl *createEditingTextNode(const DOMString &text);    virtual void recalcStyle( StyleChange = NoChange );    static QPtrList<DocumentImpl> * changedDocuments;    virtual void updateRendering();    void updateLayout();    static void updateDocumentsRendering();    khtml::DocLoader *docLoader() { return m_docLoader; }    virtual void attach();    virtual void detach();    RenderArena* renderArena() { return m_renderArena; }#if APPLE_CHANGES    KWQAccObjectCache* getExistingAccObjectCache() { return m_accCache; }    KWQAccObjectCache* getOrCreateAccObjectCache();#endif        // to get visually ordered hebrew and arabic pages right    void setVisuallyOrdered();    void updateSelection();        void open();    void close();    void closeInternal ( bool checkTokenizer );    void write ( const DOMString &text );    void write ( const QString &text );    void writeln ( const DOMString &text );    void finishParsing (  );    void clear();    QString URL() const { return m_url; }    void setURL(QString url) { m_url = url; }    QString baseURL() const { return m_baseURL.isEmpty() ? m_url : m_baseURL; }    void setBaseURL(const QString& baseURL) { m_baseURL = baseURL; }    QString baseTarget() const { return m_baseTarget; }    void setBaseTarget(const QString& baseTarget) { m_baseTarget = baseTarget; }#if APPLE_CHANGES    QString completeURL(const QString &);#else    QString completeURL(const QString& url) { return KURL(baseURL(),url).url(); };#endif    // from cachedObjectClient    virtual void setStyleSheet(const DOM::DOMString &url, const DOM::DOMString &sheetStr);    void setUserStyleSheet(const QString& sheet);    QString userStyleSheet() const { return m_usersheet; }    void setPrintStyleSheet(const QString& sheet) { m_printSheet = sheet; }    QString printStyleSheet() const { return m_printSheet; }    CSSStyleSheetImpl* elementSheet();    virtual khtml::Tokenizer *createTokenizer();    khtml::Tokenizer *tokenizer() { return m_tokenizer; }    virtual khtml::XMLHandler* createTokenHandler();        QPaintDeviceMetrics *paintDeviceMetrics() { return m_paintDeviceMetrics; }    QPaintDevice *paintDevice() const { return m_paintDevice; }    void setPaintDevice( QPaintDevice *dev );    enum HTMLMode {        Html3,        Html4,        XHtml    };    enum ParseMode {        Compat,        AlmostStrict,        Strict    };        virtual void determineParseMode( const QString &str );    void setParseMode( ParseMode m ) { pMode = m; }    ParseMode parseMode() const { return pMode; }    bool inCompatMode() { return pMode == Compat; }    bool inAlmostStrictMode() { return pMode == AlmostStrict; }    bool inStrictMode() { return pMode == Strict; }        void setHTMLMode( HTMLMode m ) { hMode = m; }    HTMLMode htmlMode() const { return hMode; }    void setParsing(bool b);    bool parsing() const { return m_bParsing; }    bool allDataReceived() const { return m_bAllDataReceived; }    int minimumLayoutDelay();    bool shouldScheduleLayout();    int elapsedTime();        void setTextColor( QColor color ) { m_textColor = color; }    QColor textColor() const { return m_textColor; }    const QColor& linkColor() const { return m_linkColor; }    const QColor& visitedLinkColor() const { return m_visitedLinkColor; }    const QColor& activeLinkColor() const { return m_activeLinkColor; }    void setLinkColor(const QColor& c) { m_linkColor = c; }    void setVisitedLinkColor(const QColor& c) { m_visitedLinkColor = c; }    void setActiveLinkColor(const QColor& c) { m_activeLinkColor = c; }    void resetLinkColor();    void resetVisitedLinkColor();    void resetActiveLinkColor();        // internal    NodeImpl *findElement( Id id );    bool prepareMouseEvent( bool readonly, int x, int y, MouseEvent *ev );    virtual bool childAllowed( NodeImpl *newChild );    virtual bool childTypeAllowed( unsigned short nodeType );    virtual NodeImpl *cloneNode ( bool deep );

⌨️ 快捷键说明

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