diff options
-rw-r--r-- | src/gui/painting/qpaintbuffer.cpp | 1 | ||||
-rw-r--r-- | src/gui/painting/qpaintengine_raster.cpp | 2 | ||||
-rw-r--r-- | src/gui/painting/qpaintengineex.cpp | 2 | ||||
-rw-r--r-- | src/gui/painting/qpainter.cpp | 7 | ||||
-rw-r--r-- | src/gui/painting/qpainter.h | 2 | ||||
-rw-r--r-- | src/gui/text/qstatictext.cpp | 3 | ||||
-rw-r--r-- | src/gui/text/qstatictext.h | 98 | ||||
-rw-r--r-- | src/gui/text/qstatictext_p.h | 122 | ||||
-rw-r--r-- | src/gui/text/qstatictext_p_p.h | 140 | ||||
-rw-r--r-- | src/gui/text/text.pri | 2 | ||||
-rw-r--r-- | src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp | 2 | ||||
-rw-r--r-- | src/opengl/qpaintengine_opengl.cpp | 2 | ||||
-rw-r--r-- | src/openvg/qpaintengine_vg.cpp | 2 | ||||
-rw-r--r-- | tests/auto/qstatictext/tst_qstatictext.cpp | 2 |
14 files changed, 198 insertions, 189 deletions
diff --git a/src/gui/painting/qpaintbuffer.cpp b/src/gui/painting/qpaintbuffer.cpp index e41ad57..b0a3d7a 100644 --- a/src/gui/painting/qpaintbuffer.cpp +++ b/src/gui/painting/qpaintbuffer.cpp @@ -46,6 +46,7 @@ #include <private/qemulationpaintengine_p.h> #include <private/qimage_p.h> #include <private/qstatictext_p.h> +#include <private/qstatictext_p_p.h> #include <QDebug> diff --git a/src/gui/painting/qpaintengine_raster.cpp b/src/gui/painting/qpaintengine_raster.cpp index 1fbfbb4..29694d1 100644 --- a/src/gui/painting/qpaintengine_raster.cpp +++ b/src/gui/painting/qpaintengine_raster.cpp @@ -67,7 +67,7 @@ // #include <private/qpolygonclipper_p.h> // #include <private/qrasterizer_p.h> #include <private/qimage_p.h> -#include <private/qstatictext_p.h> +#include <private/qstatictext_p_p.h> #include "qpaintengine_raster_p.h" // #include "qbezier_p.h" diff --git a/src/gui/painting/qpaintengineex.cpp b/src/gui/painting/qpaintengineex.cpp index 1bbdafa..b61821d 100644 --- a/src/gui/painting/qpaintengineex.cpp +++ b/src/gui/painting/qpaintengineex.cpp @@ -44,7 +44,7 @@ #include "qstroker_p.h" #include "qbezier_p.h" #include <private/qpainterpath_p.h> -#include <private/qstatictext_p.h> +#include <private/qstatictext_p_p.h> #include <qvarlengtharray.h> #include <qdebug.h> diff --git a/src/gui/painting/qpainter.cpp b/src/gui/painting/qpainter.cpp index 521072f..c29cf5d 100644 --- a/src/gui/painting/qpainter.cpp +++ b/src/gui/painting/qpainter.cpp @@ -70,6 +70,7 @@ #include <private/qpaintengine_raster_p.h> #include <private/qmath_p.h> #include <private/qstatictext_p.h> +#include <private/qstatictext_p_p.h> QT_BEGIN_NAMESPACE @@ -5707,18 +5708,24 @@ void QPainter::drawText(const QPointF &p, const QString &str) /*! \fn void QPainter::drawStaticText(const QPoint &position, const QStaticText &staticText) + \internal + \overload */ /*! \fn void QPainter::drawStaticText(int x, int y, const QStaticText &staticText) + \internal + \overload */ /*! Draws the given \a staticText beginning at the given \a position. + \internal + This function can be used to optimize drawing text if the text and its layout is updated seldomly. diff --git a/src/gui/painting/qpainter.h b/src/gui/painting/qpainter.h index 1ae7c08..181eba7 100644 --- a/src/gui/painting/qpainter.h +++ b/src/gui/painting/qpainter.h @@ -50,7 +50,6 @@ #include <QtGui/qimage.h> #include <QtGui/qtextoption.h> #include <QtGui/qdrawutil.h> -#include <QtGui/qstatictext.h> #ifndef QT_INCLUDE_COMPAT #include <QtGui/qpolygon.h> @@ -79,6 +78,7 @@ class QPolygon; class QTextItem; class QMatrix; class QTransform; +class QStaticText; class QPainterPrivateDeleter; diff --git a/src/gui/text/qstatictext.cpp b/src/gui/text/qstatictext.cpp index 4daa40d..922920e 100644 --- a/src/gui/text/qstatictext.cpp +++ b/src/gui/text/qstatictext.cpp @@ -39,8 +39,8 @@ ** ****************************************************************************/ -#include "qstatictext.h" #include "qstatictext_p.h" +#include "qstatictext_p_p.h" #include <private/qtextengine_p.h> #include <private/qfontengine_p.h> @@ -50,6 +50,7 @@ QT_BEGIN_NAMESPACE /*! \class QStaticText + \internal \brief The QStaticText class enables optimized drawing of text when the text and its layout is updated rarely. \since 4.7 diff --git a/src/gui/text/qstatictext.h b/src/gui/text/qstatictext.h deleted file mode 100644 index d79d887..0000000 --- a/src/gui/text/qstatictext.h +++ /dev/null @@ -1,98 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). -** Contact: Qt Software Information (qt-info@nokia.com) -** -** This file is part of the QtGui module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** No Commercial Usage -** This file contains pre-release code and may not be distributed. -** You may use this file in accordance with the terms and conditions -** contained in the either Technology Preview License Agreement or the -** Beta Release License Agreement. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain -** additional rights. These rights are described in the Nokia Qt LGPL -** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this -** package. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3.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 the GNU General Public License version 3.0 requirements will be -** met: http://www.gnu.org/copyleft/gpl.html. -** -** If you are unsure which license is appropriate for your use, please -** contact the sales department at qt-sales@nokia.com. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QSTATICTEXT_H -#define QSTATICTEXT_H - -#include <QtCore/qsize.h> -#include <QtCore/qstring.h> -#include <QtCore/qmetatype.h> - -#include <QtGui/qtransform.h> -#include <QtGui/qfont.h> - - -QT_BEGIN_HEADER - -QT_BEGIN_NAMESPACE - -QT_MODULE(Gui) - -class QStaticTextPrivate; -class Q_GUI_EXPORT QStaticText -{ -public: - QStaticText(); - QStaticText(const QString &text, const QSizeF &maximumSize = QSizeF()); - QStaticText(const QStaticText &other); - ~QStaticText(); - - void setText(const QString &text); - QString text() const; - - void setMaximumSize(const QSizeF &maximumSize); - QSizeF maximumSize() const; - - void prepare(const QTransform &matrix, const QFont &font); - - void setUseBackendOptimizations(bool on); - bool useBackendOptimizations() const; - - QStaticText &operator=(const QStaticText &); - bool operator==(const QStaticText &) const; - bool operator!=(const QStaticText &) const; - - bool isEmpty() const; - -private: - void detach(); - - QStaticTextPrivate *d_ptr; - friend class QStaticTextPrivate; -}; - -Q_DECLARE_METATYPE(QStaticText) - -QT_END_NAMESPACE - -QT_END_HEADER - -#endif // QSTATICTEXT_H diff --git a/src/gui/text/qstatictext_p.h b/src/gui/text/qstatictext_p.h index bca59e0..d79d887 100644 --- a/src/gui/text/qstatictext_p.h +++ b/src/gui/text/qstatictext_p.h @@ -39,102 +39,60 @@ ** ****************************************************************************/ -#ifndef QSTATICTEXT_P_H -#define QSTATICTEXT_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists for the convenience -// of internal files. This header file may change from version to version -// without notice, or even be removed. -// -// We mean it. -// - -#include <private/qtextureglyphcache_p.h> +#ifndef QSTATICTEXT_H +#define QSTATICTEXT_H -QT_BEGIN_NAMESPACE +#include <QtCore/qsize.h> +#include <QtCore/qstring.h> +#include <QtCore/qmetatype.h> -class QStaticTextUserData -{ -public: - enum Type { - NoUserData, - OpenGLUserData - }; +#include <QtGui/qtransform.h> +#include <QtGui/qfont.h> - QStaticTextUserData(Type t) : type(t) {} - virtual ~QStaticTextUserData() {} - Type type; -}; +QT_BEGIN_HEADER -class Q_GUI_EXPORT QStaticTextItem -{ -public: - QStaticTextItem() : chars(0), numChars(0), fontEngine(0), userData(0), - useBackendOptimizations(false), userDataNeedsUpdate(0) {} - ~QStaticTextItem() { delete userData; } - - void setUserData(QStaticTextUserData *newUserData) - { - if (userData == newUserData) - return; - - delete userData; - userData = newUserData; - } - - QFixedPoint *glyphPositions; // 8 bytes per glyph - glyph_t *glyphs; // 4 bytes per glyph - const QChar *chars; // 2 bytes per glyph - // ================= - // 14 bytes per glyph - - // 12 bytes for pointers - int numGlyphs; // 4 bytes per item - int numChars; // 4 bytes per item - QFontEngine *fontEngine; // 4 bytes per item - QFont font; // 8 bytes per item - QStaticTextUserData *userData; // 8 bytes per item - char useBackendOptimizations : 1; // 1 byte per item - char userDataNeedsUpdate : 1; // - // ================ - // 41 bytes per item -}; +QT_BEGIN_NAMESPACE -class QStaticText; -class Q_AUTOTEST_EXPORT QStaticTextPrivate -{ +QT_MODULE(Gui) + +class QStaticTextPrivate; +class Q_GUI_EXPORT QStaticText +{ public: - QStaticTextPrivate(); - ~QStaticTextPrivate(); + QStaticText(); + QStaticText(const QString &text, const QSizeF &maximumSize = QSizeF()); + QStaticText(const QStaticText &other); + ~QStaticText(); + + void setText(const QString &text); + QString text() const; + + void setMaximumSize(const QSizeF &maximumSize); + QSizeF maximumSize() const; - void init(); + void prepare(const QTransform &matrix, const QFont &font); - QAtomicInt ref; // 4 bytes per text + void setUseBackendOptimizations(bool on); + bool useBackendOptimizations() const; - QString text; // 4 bytes per text - QFont font; // 8 bytes per text - QSizeF size; // 16 bytes per text - QPointF position; // 16 bytes per text + QStaticText &operator=(const QStaticText &); + bool operator==(const QStaticText &) const; + bool operator!=(const QStaticText &) const; - QTransform matrix; // 80 bytes per text - QStaticTextItem *items; // 4 bytes per text - int itemCount; // 4 bytes per text - glyph_t *glyphPool; // 4 bytes per text - QFixedPoint *positionPool; // 4 bytes per text + bool isEmpty() const; - char needsClipRect : 1; // 1 byte per text - char useBackendOptimizations : 1; - // ================ - // 145 bytes per text +private: + void detach(); - static QStaticTextPrivate *get(const QStaticText *q); + QStaticTextPrivate *d_ptr; + friend class QStaticTextPrivate; }; +Q_DECLARE_METATYPE(QStaticText) + QT_END_NAMESPACE -#endif // QSTATICTEXT_P_H +QT_END_HEADER + +#endif // QSTATICTEXT_H diff --git a/src/gui/text/qstatictext_p_p.h b/src/gui/text/qstatictext_p_p.h new file mode 100644 index 0000000..bca59e0 --- /dev/null +++ b/src/gui/text/qstatictext_p_p.h @@ -0,0 +1,140 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Qt Software Information (qt-info@nokia.com) +** +** This file is part of the QtGui module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the either Technology Preview License Agreement or the +** Beta Release License Agreement. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain +** additional rights. These rights are described in the Nokia Qt LGPL +** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +** package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.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 the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at qt-sales@nokia.com. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSTATICTEXT_P_H +#define QSTATICTEXT_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of internal files. This header file may change from version to version +// without notice, or even be removed. +// +// We mean it. +// + +#include <private/qtextureglyphcache_p.h> + +QT_BEGIN_NAMESPACE + +class QStaticTextUserData +{ +public: + enum Type { + NoUserData, + OpenGLUserData + }; + + QStaticTextUserData(Type t) : type(t) {} + virtual ~QStaticTextUserData() {} + + Type type; +}; + +class Q_GUI_EXPORT QStaticTextItem +{ +public: + QStaticTextItem() : chars(0), numChars(0), fontEngine(0), userData(0), + useBackendOptimizations(false), userDataNeedsUpdate(0) {} + ~QStaticTextItem() { delete userData; } + + void setUserData(QStaticTextUserData *newUserData) + { + if (userData == newUserData) + return; + + delete userData; + userData = newUserData; + } + + QFixedPoint *glyphPositions; // 8 bytes per glyph + glyph_t *glyphs; // 4 bytes per glyph + const QChar *chars; // 2 bytes per glyph + // ================= + // 14 bytes per glyph + + // 12 bytes for pointers + int numGlyphs; // 4 bytes per item + int numChars; // 4 bytes per item + QFontEngine *fontEngine; // 4 bytes per item + QFont font; // 8 bytes per item + QStaticTextUserData *userData; // 8 bytes per item + char useBackendOptimizations : 1; // 1 byte per item + char userDataNeedsUpdate : 1; // + // ================ + // 41 bytes per item +}; + +class QStaticText; +class Q_AUTOTEST_EXPORT QStaticTextPrivate +{ +public: + QStaticTextPrivate(); + ~QStaticTextPrivate(); + + void init(); + + QAtomicInt ref; // 4 bytes per text + + QString text; // 4 bytes per text + QFont font; // 8 bytes per text + QSizeF size; // 16 bytes per text + QPointF position; // 16 bytes per text + + QTransform matrix; // 80 bytes per text + QStaticTextItem *items; // 4 bytes per text + int itemCount; // 4 bytes per text + glyph_t *glyphPool; // 4 bytes per text + QFixedPoint *positionPool; // 4 bytes per text + + char needsClipRect : 1; // 1 byte per text + char useBackendOptimizations : 1; + // ================ + // 145 bytes per text + + static QStaticTextPrivate *get(const QStaticText *q); +}; + +QT_END_NAMESPACE + +#endif // QSTATICTEXT_P_H diff --git a/src/gui/text/text.pri b/src/gui/text/text.pri index 026e6c6..2eaa418 100644 --- a/src/gui/text/text.pri +++ b/src/gui/text/text.pri @@ -38,7 +38,7 @@ HEADERS += \ text/qzipreader_p.h \ text/qzipwriter_p.h \ text/qtextodfwriter_p.h \ - text/qstatictext.h \ + text/qstatictext_p_p.h \ text/qstatictext_p.h SOURCES += \ diff --git a/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp b/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp index 2636761..17b3317 100644 --- a/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp +++ b/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp @@ -77,7 +77,7 @@ #include <private/qfontengine_p.h> #include <private/qpixmapdata_gl_p.h> #include <private/qdatabuffer_p.h> -#include <private/qstatictext_p.h> +#include <private/qstatictext_p_p.h> #include "qglgradientcache_p.h" #include "qglengineshadermanager_p.h" diff --git a/src/opengl/qpaintengine_opengl.cpp b/src/opengl/qpaintengine_opengl.cpp index a2f085c..e7a1b7e 100644 --- a/src/opengl/qpaintengine_opengl.cpp +++ b/src/opengl/qpaintengine_opengl.cpp @@ -60,7 +60,7 @@ #include <private/qglpixelbuffer_p.h> #include <private/qbezier_p.h> #include <qglframebufferobject.h> -#include <private/qstatictext_p.h> +#include <private/qstatictext_p_p.h> #include "private/qtessellator_p.h" diff --git a/src/openvg/qpaintengine_vg.cpp b/src/openvg/qpaintengine_vg.cpp index 0ef93b3..9bb513d 100644 --- a/src/openvg/qpaintengine_vg.cpp +++ b/src/openvg/qpaintengine_vg.cpp @@ -53,7 +53,7 @@ #include <QtGui/private/qtextengine_p.h> #include <QtGui/private/qfontengine_p.h> #include <QtGui/private/qpainterpath_p.h> -#include <QtGui/private/qstatictext_p.h> +#include <QtGui/private/qstatictext_p_p.h> #include <QDebug> #include <QSet> diff --git a/tests/auto/qstatictext/tst_qstatictext.cpp b/tests/auto/qstatictext/tst_qstatictext.cpp index ca83f2f..9ad389d 100644 --- a/tests/auto/qstatictext/tst_qstatictext.cpp +++ b/tests/auto/qstatictext/tst_qstatictext.cpp @@ -42,10 +42,10 @@ #include <QtTest/QtTest> #include <QtGui/QApplication> #include <QtGui/QPainter> -#include <QtGui/QStaticText> #include <QtGui/QImage> #include <private/qstatictext_p.h> +#include <private/qstatictext_p_p.h> // #define DEBUG_SAVE_IMAGE |