Ignore:
Timestamp:
Feb 11, 2010, 11:19:06 PM (15 years ago)
Author:
Dmitry A. Kuminov
Message:

trunk: Merged in qt 4.6.1 sources.

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk

  • trunk/src/svg/qsvggraphics_p.h

    r2 r561  
    22**
    33** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
    4 ** Contact: Qt Software Information (qt-info@nokia.com)
     4** All rights reserved.
     5** Contact: Nokia Corporation (qt-info@nokia.com)
    56**
    67** This file is part of the QtSvg module of the Qt Toolkit.
     
    2122** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
    2223**
    23 ** In addition, as a special exception, Nokia gives you certain
    24 ** additional rights. These rights are described in the Nokia Qt LGPL
    25 ** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
    26 ** package.
     24** In addition, as a special exception, Nokia gives you certain additional
     25** rights.  These rights are described in the Nokia Qt LGPL Exception
     26** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
    2727**
    2828** GNU General Public License Usage
     
    3434** met: http://www.gnu.org/copyleft/gpl.html.
    3535**
    36 ** If you are unsure which license is appropriate for your use, please
    37 ** contact the sales department at qt-sales@nokia.com.
     36** If you have questions regarding the use of this file, please contact
     37** Nokia at qt-info@nokia.com.
    3838** $QT_END_LICENSE$
    3939**
     
    146146private:
    147147    QPainterPath m_path;
    148     QRectF m_cachedBounds;
     148    mutable QRectF m_cachedBounds;
    149149};
    150150
     
    182182    int m_rx, m_ry;
    183183};
     184
     185class  QSvgTspan;
    184186
    185187class  QSvgText : public QSvgNode
     
    198200    virtual void draw(QPainter *p, QSvgExtraStates &states);
    199201    virtual Type type() const;
    200     void insertText(const QString &text, WhitespaceMode mode);
    201     void insertFormat(const QTextCharFormat &format);
    202     void insertLineBreak();
    203     void popFormat();
    204     void setTextAlignment(const Qt::Alignment &alignment);
    205     const QTextCharFormat &topFormat() const;
    206     qreal scale() const;
    207     void setScale(qreal scale);
     202
     203    void addTspan(QSvgTspan *tspan) {m_tspans.append(tspan);}
     204    void addText(const QString &text);
     205    void addLineBreak() {m_tspans.append(LINEBREAK);}
     206    void setWhitespaceMode(WhitespaceMode mode) {m_mode = mode;}
     207
    208208    //virtual QRectF bounds() const;
    209209private:
     210    static QSvgTspan * const LINEBREAK;
     211
    210212    QPointF m_coord;
    211213
    212     QVector<QString> m_paragraphs;
    213     QStack<QTextCharFormat> m_formats;
    214     Qt::Alignment           m_textAlignment;
    215     QVector<QList<QTextLayout::FormatRange> > m_formatRanges;
    216     qreal m_scale;
    217     bool m_appendSpace;
     214    // 'm_tspans' is also used to store characters outside tspans and line breaks.
     215    // If a 'm_tspan' item is null, it indicates a line break.
     216    QVector<QSvgTspan *> m_tspans;
     217
    218218    Type m_type;
    219219    QSizeF m_size;
     220    WhitespaceMode m_mode;
     221};
     222
     223class  QSvgTspan : public QSvgNode
     224{
     225public:
     226    // tspans are also used to store normal text, so the 'isProperTspan' is used to separate text from tspan.
     227    QSvgTspan(QSvgNode *parent, bool isProperTspan = true)
     228        : QSvgNode(parent), m_mode(QSvgText::Default), m_isTspan(isProperTspan)
     229    {
     230    }
     231    ~QSvgTspan() { };
     232    virtual Type type() const {return TSPAN;}
     233    virtual void draw(QPainter *, QSvgExtraStates &) {Q_ASSERT(!"Tspans should be drawn through QSvgText::draw().");}
     234    void addText(const QString &text) {m_text += text;}
     235    const QString &text() const {return m_text;}
     236    bool isTspan() const {return m_isTspan;}
     237    void setWhitespaceMode(QSvgText::WhitespaceMode mode) {m_mode = mode;}
     238    QSvgText::WhitespaceMode whitespaceMode() const {return m_mode;}
     239private:
     240    QString m_text;
     241    QSvgText::WhitespaceMode m_mode;
     242    bool m_isTspan;
    220243};
    221244
Note: See TracChangeset for help on using the changeset viewer.