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

📄 qtexthtmlparser_p.h

📁 qt-x11-opensource-src-4.1.4.tar.gz源码
💻 H
字号:
/******************************************************************************** Copyright (C) 1992-2006 Trolltech ASA. All rights reserved.**** This file is part of the QtGui module of the Qt Toolkit.**** This file may be used under the terms of the GNU General Public** License version 2.0 as published by the Free Software Foundation** and appearing in the file LICENSE.GPL included in the packaging of** this file.  Please review the following information to ensure GNU** General Public Licensing requirements will be met:** http://www.trolltech.com/products/qt/opensource.html**** If you are unsure which license is appropriate for your use, please** review the following information:** http://www.trolltech.com/products/qt/licensing.html or contact the** sales department at sales@trolltech.com.**** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.******************************************************************************/#ifndef QTEXTHTMLPARSER_P_H#define QTEXTHTMLPARSER_P_H////  W A R N I N G//  -------------//// This file is not part of the Qt API.  It exists purely as an// implementation detail.  This header file may change from version to// version without notice, or even be removed.//// We mean it.//#include "QtCore/qvector.h"#include "QtGui/qcolor.h"#include "QtGui/qfont.h"#include "QtGui/qtextdocument.h"#include "QtGui/qtextcursor.h"#include "private/qtextformat_p.h"#include "private/qtextdocument_p.h"enum QTextHTMLElements {    Html_qt,    Html_body,    Html_a,    Html_em,    Html_i,    Html_big,    Html_small,    Html_strong,    Html_b,    Html_cite,    Html_address,    Html_var,    Html_dfn,    Html_h1,    Html_h2,    Html_h3,    Html_h4,    Html_h5,    Html_h6,    Html_p,    Html_center,    Html_font,    Html_ul,    Html_ol,    Html_li,    Html_code,    Html_tt,    Html_kbd,    Html_samp,    Html_img,    Html_br,    Html_hr,    Html_sub,    Html_sup,    Html_pre,    Html_blockquote,    Html_head,    Html_div,    Html_span,    Html_dl,    Html_dt,    Html_dd,    Html_u,    Html_s,    Html_nobr,    // tables    Html_table,    Html_tr,    Html_td,    Html_th,    Html_thead,    Html_tbody,    Html_tfoot,    Html_html,    // misc...    Html_style,    Html_title,    Html_meta,    Html_NumElements};struct QTextHtmlElement{    const char *name;    int id;    enum DisplayMode { DisplayBlock, DisplayInline, DisplayTable, DisplayNone } displayMode;};class QTextHtmlParser;struct QTextHtmlParserAttribute {    enum {        Add,        Attributes,        And,        Styles,        Here,        That,        The,        Parser,        Does,        Not,        Resolve,        Eg,        Tables    } id;    QString value;};Q_DECLARE_TYPEINFO(QTextHtmlParserAttribute, Q_MOVABLE_TYPE);enum QTriState { Off = 0, On = 1, Unspecified = 2 };struct QTextHtmlParserNode {    enum WhiteSpaceMode {        WhiteSpaceNormal,        WhiteSpacePre,        WhiteSpaceNoWrap,        WhiteSpacePreWrap,        WhiteSpaceModeUndefined = -1    };    QTextHtmlParserNode();    QString tag;    QString text;    QVector<QTextHtmlParserAttribute> attributes;    int parent;    QVector<int> children;    int id;    uint isBlock : 1;    uint isListItem : 1;    uint isListStart : 1;    uint isTableCell : 1;    uint isAnchor : 1;    uint fontItalic : 2; // Tristate    uint fontUnderline : 2; // Tristate    uint fontOverline : 2; // Tristate    uint fontStrikeOut : 2; // Tristate    uint fontFixedPitch : 2; // Tristate    uint cssFloat : 2;    uint hasOwnListStyle : 1;    uint hasFontPointSize : 1;    uint hasFontPixelSize : 1;    uint hasFontSizeAdjustment : 1;    uint hasCssBlockIndent : 1;    uint hasCssListIndent : 1;    uint isEmptyParagraph : 1;    uint isTextFrame : 1;    uint direction : 2; // 3 means unset    uint displayMode : 3; // QTextHtmlElement::DisplayMode    QString fontFamily;    int fontPointSize;    int fontPixelSize;    int fontSizeAdjustment;    int fontWeight;    QColor color;    QColor bgColor;    Qt::Alignment alignment;    QTextCharFormat::VerticalAlignment verticalAlignment;    QTextListFormat::Style listStyle;    QString anchorHref;    QString anchorName;    QString imageName;    qreal imageWidth;    qreal imageHeight;    QTextLength width;    QTextLength height;    qreal tableBorder;    int tableCellRowSpan;    int tableCellColSpan;    qreal tableCellSpacing;    qreal tableCellPadding;    int cssBlockIndent;    int cssListIndent;    qreal text_indent;    QTextCharFormat charFormat() const;    QTextBlockFormat blockFormat() const;    WhiteSpaceMode wsm;    inline bool isNotSelfNesting() const    { return id == Html_p || id == Html_li; }    inline bool allowedInContext(int parentId) const    {        switch (id) {            case Html_dd: return (parentId == Html_dt || parentId == Html_dl);            case Html_dt: return (parentId == Html_dl);            case Html_tr: return (parentId == Html_table                                  || parentId == Html_thead                                  || parentId == Html_tbody                                  || parentId == Html_tfoot                                 );            case Html_th:            case Html_td: return (parentId == Html_tr);            case Html_thead:            case Html_tbody:            case Html_tfoot: return (parentId == Html_table);            default: break;        }        return true;    }    inline bool mayNotHaveChildren() const    { return id == Html_img || id == Html_hr || id == Html_br; }    void initializeProperties(const QTextHtmlParserNode *parent, const QTextHtmlParser *parser);    inline int uncollapsedMargin(int mar) const { return margin[mar]; }    bool isNestedList(const QTextHtmlParser *parser) const;    int margin[4];    friend class QTextHtmlParser;};Q_DECLARE_TYPEINFO(QTextHtmlParserNode, Q_MOVABLE_TYPE);class QTextHtmlParser{public:    enum Margin {        MarginLeft,        MarginRight,        MarginTop,        MarginBottom    };    inline const QTextHtmlParserNode &at(int i) const { return nodes.at(i); }    inline QTextHtmlParserNode &operator[](int i) { return nodes[i]; }    inline int count() const { return nodes.count(); }    inline int last() const { return nodes.count()-1; }    int depth(int i) const;    int topMargin(int i) const;    int bottomMargin(int i) const;    inline int leftMargin(int i) const { return margin(i, MarginLeft); }    inline int rightMargin(int i) const { return margin(i, MarginRight); }    void dumpHtml();    void parse(const QString &text);    static int lookupElement(const QString &element);protected:    QTextHtmlParserNode *newNode(int parent);    QVector<QTextHtmlParserNode> nodes;    QString txt;    int pos, len;    bool textEditMode;    void parse();    void parseTag();    void parseCloseTag();    void parseExclamationTag();    QString parseEntity();    QString parseWord();    void resolveParent();    void resolveNode();    void parseAttributes();    void eatSpace();    inline bool hasPrefix(QChar c, int lookahead = 0) const        {return pos + lookahead < len && txt.at(pos) == c; }    int margin(int i, int mar) const;};#endif // QTEXTHTMLPARSER_P_H

⌨️ 快捷键说明

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