summaryrefslogtreecommitdiffstats
path: root/tests/auto/qstatictext/tst_qstatictext.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/qstatictext/tst_qstatictext.cpp')
-rw-r--r--tests/auto/qstatictext/tst_qstatictext.cpp869
1 files changed, 0 insertions, 869 deletions
diff --git a/tests/auto/qstatictext/tst_qstatictext.cpp b/tests/auto/qstatictext/tst_qstatictext.cpp
deleted file mode 100644
index 5d5ed3c737..0000000000
--- a/tests/auto/qstatictext/tst_qstatictext.cpp
+++ /dev/null
@@ -1,869 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** 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.1, 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.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <QtTest/QtTest>
-#include <QtGui/QApplication>
-#include <QtGui/QPainter>
-#include <QtGui/QImage>
-
-#include <qstatictext.h>
-#include <qpaintengine.h>
-
-#include <private/qstatictext_p.h>
-#include <private/qapplication_p.h>
-
-// #define DEBUG_SAVE_IMAGE
-
-class tst_QStaticText: public QObject
-{
- Q_OBJECT
-
-private:
- bool supportsTransformations() const;
-
-private slots:
- void initTestCase();
-
- void init();
- void cleanup();
-
- void constructionAndDestruction();
- void drawToPoint_data();
- void drawToPoint();
- void drawToRect_data();
- void drawToRect();
- void setFont();
- void setTextWidth();
- void prepareToCorrectData();
- void prepareToWrongData();
-
- void copyConstructor();
-
- void translatedPainter();
- void rotatedPainter();
- void scaledPainter();
- void projectedPainter();
-#if 0
- void rotatedScaledAndTranslatedPainter_data();
- void rotatedScaledAndTranslatedPainter();
-#endif
- void transformationChanged();
-
- void plainTextVsRichText();
-
- void setPenPlainText();
- void setPenRichText();
- void richTextOverridesPen();
-
- void drawStruckOutText();
- void drawOverlinedText();
- void drawUnderlinedText();
-
- void unprintableCharacter_qtbug12614();
-
- void underlinedColor_qtbug20159();
- void textDocumentColor();
-
-private:
- QImage const m_whiteSquare;
-};
-
-void tst_QStaticText::initTestCase()
-{
- // a "blank" square; we compare against in our testfunctions to verify
- // that we have actually painted something
- QPixmap pm(1000, 1000);
- pm.fill(Qt::white);
- const_cast<QImage&>(m_whiteSquare) = pm.toImage();
-}
-
-void tst_QStaticText::init()
-{
-}
-
-void tst_QStaticText::cleanup()
-{
-}
-
-void tst_QStaticText::constructionAndDestruction()
-{
- QStaticText text("My text");
-}
-
-void tst_QStaticText::copyConstructor()
-{
- QStaticText text(QLatin1String("My text"));
-
- QTextOption textOption(Qt::AlignRight);
- text.setTextOption(textOption);
-
- text.setPerformanceHint(QStaticText::AggressiveCaching);
- text.setTextWidth(123.456);
- text.setTextFormat(Qt::PlainText);
-
- QStaticText copiedText(text);
- copiedText.setText(QLatin1String("Other text"));
-
- QCOMPARE(copiedText.textOption().alignment(), Qt::AlignRight);
- QCOMPARE(copiedText.performanceHint(), QStaticText::AggressiveCaching);
- QCOMPARE(copiedText.textWidth(), 123.456);
- QCOMPARE(copiedText.textFormat(), Qt::PlainText);
-
- QStaticText otherCopiedText(copiedText);
- otherCopiedText.setTextWidth(789);
-
- QCOMPARE(otherCopiedText.text(), QString::fromLatin1("Other text"));
-}
-
-Q_DECLARE_METATYPE(QStaticText::PerformanceHint)
-void tst_QStaticText::drawToPoint_data()
-{
- QTest::addColumn<QStaticText::PerformanceHint>("performanceHint");
-
- QTest::newRow("Moderate caching") << QStaticText::ModerateCaching;
- QTest::newRow("Aggressive caching") << QStaticText::AggressiveCaching;
-}
-
-void tst_QStaticText::drawToPoint()
-{
- QFETCH(QStaticText::PerformanceHint, performanceHint);
-
- QPixmap imageDrawText(1000, 1000);
- imageDrawText.fill(Qt::white);
- {
- QPainter p(&imageDrawText);
- p.drawText(11, 12, "Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
- }
-
- QPixmap imageDrawStaticText(1000, 1000);
- imageDrawStaticText.fill(Qt::white);
- {
- QPainter p(&imageDrawStaticText);
- QStaticText text("Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
- text.setTextFormat(Qt::PlainText);
- text.setPerformanceHint(performanceHint);
- p.drawStaticText(QPointF(11, 12 - QFontMetricsF(p.font()).ascent()), text);
- }
-
- QVERIFY(imageDrawText.toImage() != m_whiteSquare);
- QCOMPARE(imageDrawStaticText, imageDrawText);
-}
-
-void tst_QStaticText::drawToRect_data()
-{
- QTest::addColumn<QStaticText::PerformanceHint>("performanceHint");
-
- QTest::newRow("Moderate caching") << QStaticText::ModerateCaching;
- QTest::newRow("Aggressive caching") << QStaticText::AggressiveCaching;
-}
-
-void tst_QStaticText::drawToRect()
-{
- QFETCH(QStaticText::PerformanceHint, performanceHint);
-
- QPixmap imageDrawText(1000, 1000);
- imageDrawText.fill(Qt::white);
- {
- QPainter p(&imageDrawText);
- p.drawText(QRectF(11, 12, 10, 500), "Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
- }
-
- QPixmap imageDrawStaticText(1000, 1000);
- imageDrawStaticText.fill(Qt::white);
- {
- QPainter p(&imageDrawStaticText);
- QStaticText text("Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
- text.setTextWidth(10),
- p.setClipRect(QRectF(11, 12, 10, 500));
- text.setPerformanceHint(performanceHint);
- text.setTextFormat(Qt::PlainText);
- p.drawStaticText(QPointF(11, 12), text);
- }
-
-#if defined(DEBUG_SAVE_IMAGE)
- imageDrawText.save("drawToRect_imageDrawText.png");
- imageDrawStaticText.save("drawToRect_imageDrawStaticText.png");
-#endif
-
- QVERIFY(imageDrawText.toImage() != m_whiteSquare);
- QCOMPARE(imageDrawStaticText, imageDrawText);
-}
-
-void tst_QStaticText::prepareToCorrectData()
-{
- QTransform transform;
- transform.scale(2.0, 2.0);
- transform.rotate(90, Qt::ZAxis);
-
- QPixmap imageDrawText(1000, 1000);
- imageDrawText.fill(Qt::white);
- {
- QPainter p(&imageDrawText);
- p.setTransform(transform);
- p.drawText(11, 12, "Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
- }
-
- QPixmap imageDrawStaticText(1000, 1000);
- imageDrawStaticText.fill(Qt::white);
- {
- QPainter p(&imageDrawStaticText);
- p.setTransform(transform);
- QStaticText text("Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
- text.prepare(transform, p.font());
- text.setTextFormat(Qt::PlainText);
- p.drawStaticText(QPointF(11, 12 - QFontMetricsF(p.font()).ascent()), text);
- }
-
-#if defined(DEBUG_SAVE_IMAGE)
- imageDrawText.save("prepareToCorrectData_imageDrawText.png");
- imageDrawStaticText.save("prepareToCorrectData_imageDrawStaticText.png");
-#endif
-
-#ifdef Q_WS_QPA
- QEXPECT_FAIL("", "QTBUG-20977 fails on qpa", Abort);
-#endif
-
- QVERIFY(imageDrawText.toImage() != m_whiteSquare);
-
- if (!supportsTransformations())
- QEXPECT_FAIL("", "Graphics system does not support transformed text on this platform", Abort);
- QCOMPARE(imageDrawStaticText, imageDrawText);
-}
-
-void tst_QStaticText::prepareToWrongData()
-{
- QTransform transform;
- transform.scale(2.0, 2.0);
- transform.rotate(90, Qt::ZAxis);
-
- QPixmap imageDrawText(1000, 1000);
- imageDrawText.fill(Qt::white);
- {
- QPainter p(&imageDrawText);
- p.drawText(11, 12, "Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
- }
-
- QPixmap imageDrawStaticText(1000, 1000);
- imageDrawStaticText.fill(Qt::white);
- {
- QPainter p(&imageDrawStaticText);
- QStaticText text("Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
- text.prepare(transform, p.font());
- text.setTextFormat(Qt::PlainText);
- p.drawStaticText(QPointF(11, 12 - QFontMetricsF(p.font()).ascent()), text);
- }
-
- QVERIFY(imageDrawText.toImage() != m_whiteSquare);
- QCOMPARE(imageDrawStaticText, imageDrawText);
-}
-
-
-void tst_QStaticText::setFont()
-{
- QFont font = QApplication::font();
- font.setBold(true);
- font.setPointSize(28);
-
- QPixmap imageDrawText(1000, 1000);
- imageDrawText.fill(Qt::white);
- {
- QPainter p(&imageDrawText);
- p.drawText(QRectF(0, 0, 1000, 1000), 0, "Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
-
- p.setFont(font);
- p.drawText(QRectF(11, 120, 1000, 1000), 0, "Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
- }
-
- QPixmap imageDrawStaticText(1000, 1000);
- imageDrawStaticText.fill(Qt::white);
- {
- QPainter p(&imageDrawStaticText);
-
- QStaticText text;
- text.setText("Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
- text.setTextFormat(Qt::PlainText);
-
- p.drawStaticText(0, 0, text);
-
- p.setFont(font);
- p.drawStaticText(11, 120, text);
- }
-
-#if defined(DEBUG_SAVE_IMAGE)
- imageDrawText.save("setFont_imageDrawText.png");
- imageDrawStaticText.save("setFont_imageDrawStaticText.png");
-#endif
-
- QVERIFY(imageDrawText.toImage() != m_whiteSquare);
- QCOMPARE(imageDrawStaticText, imageDrawText);
-}
-
-void tst_QStaticText::setTextWidth()
-{
- QPixmap imageDrawText(1000, 1000);
- imageDrawText.fill(Qt::white);
- {
- QPainter p(&imageDrawText);
- p.drawText(QRectF(11, 12, 10, 500), "Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
- }
-
- QPixmap imageDrawStaticText(1000, 1000);
- imageDrawStaticText.fill(Qt::white);
- {
- QPainter p(&imageDrawStaticText);
- QStaticText text("Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
- text.setTextWidth(10);
- p.setClipRect(QRectF(11, 12, 10, 500));
- p.drawStaticText(QPointF(11, 12), text);
- }
-
- QVERIFY(imageDrawText.toImage() != m_whiteSquare);
- QCOMPARE(imageDrawStaticText, imageDrawText);
-}
-
-void tst_QStaticText::translatedPainter()
-{
- QPixmap imageDrawText(1000, 1000);
- imageDrawText.fill(Qt::white);
- {
- QPainter p(&imageDrawText);
- p.translate(100, 200);
-
- p.drawText(11, 12, "Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
- }
-
- QPixmap imageDrawStaticText(1000, 1000);
- imageDrawStaticText.fill(Qt::white);
- {
- QPainter p(&imageDrawStaticText);
- p.translate(100, 200);
-
- QStaticText text("Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
- text.setTextFormat(Qt::PlainText);
-
- p.drawStaticText(QPointF(11, 12 - QFontMetricsF(p.font()).ascent()), text);
- }
-
- QVERIFY(imageDrawText.toImage() != m_whiteSquare);
- QCOMPARE(imageDrawStaticText, imageDrawText);
-}
-
-bool tst_QStaticText::supportsTransformations() const
-{
- QPixmap pm(10, 10);
- QPainter p(&pm);
- QPaintEngine *engine = p.paintEngine();
-
- QPaintEngine::Type type = engine->type();
-
- if (type == QPaintEngine::OpenGL
-#if !defined(Q_WS_WIN) && !defined(Q_WS_X11) && !defined(Q_WS_MAC)
- || type == QPaintEngine::Raster
-#endif
- )
- return false;
-
- return true;
-}
-
-void tst_QStaticText::rotatedPainter()
-{
- QPixmap imageDrawText(1000, 1000);
- imageDrawText.fill(Qt::white);
- {
- QPainter p(&imageDrawText);
- p.rotate(30.0);
- p.drawText(QRectF(0, 0, 1000, 100), 0, "Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
- }
-
- QPixmap imageDrawStaticText(1000, 1000);
- imageDrawStaticText.fill(Qt::white);
- {
- QStaticText text("Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
- text.setTextFormat(Qt::PlainText);
-
- QPainter p(&imageDrawStaticText);
- p.rotate(30.0);
- p.drawStaticText(QPoint(0, 0), text);
- }
-
-#if defined(DEBUG_SAVE_IMAGE)
- imageDrawText.save("rotatedPainter_imageDrawText.png");
- imageDrawStaticText.save("rotatedPainter_imageDrawStaticText.png");
-#endif
-
- QVERIFY(imageDrawText.toImage() != m_whiteSquare);
-
- if (!supportsTransformations())
- QEXPECT_FAIL("", "Graphics system does not support transformed text on this platform", Abort);
- QCOMPARE(imageDrawStaticText, imageDrawText);
-}
-
-void tst_QStaticText::scaledPainter()
-{
- QPixmap imageDrawText(1000, 1000);
- imageDrawText.fill(Qt::white);
- {
- QPainter p(&imageDrawText);
- p.scale(2.0, 0.2);
-
- p.drawText(11, 12, "Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
- }
-
- QPixmap imageDrawStaticText(1000, 1000);
- imageDrawStaticText.fill(Qt::white);
- {
- QPainter p(&imageDrawStaticText);
- p.scale(2.0, 0.2);
-
- QStaticText text("Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
- text.setTextFormat(Qt::PlainText);
-
- p.drawStaticText(QPointF(11, 12 - QFontMetricsF(p.font()).ascent()), text);
- }
-
- QVERIFY(imageDrawText.toImage() != m_whiteSquare);
-
- if (!supportsTransformations())
- QEXPECT_FAIL("", "Graphics system does not support transformed text on this platform", Abort);
- QCOMPARE(imageDrawStaticText, imageDrawText);
-}
-
-void tst_QStaticText::projectedPainter()
-{
- QTransform transform;
- transform.rotate(90, Qt::XAxis);
-
- QPixmap imageDrawText(1000, 1000);
- imageDrawText.fill(Qt::white);
- {
- QPainter p(&imageDrawText);
- p.setTransform(transform);
-
- p.drawText(11, 12, "Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
- }
-
- QPixmap imageDrawStaticText(1000, 1000);
- imageDrawStaticText.fill(Qt::white);
- {
- QPainter p(&imageDrawStaticText);
- p.setTransform(transform);
-
- QStaticText text("Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
- text.setTextFormat(Qt::PlainText);
-
- p.drawStaticText(QPointF(11, 12 - QFontMetricsF(p.font()).ascent()), text);
- }
-
- QCOMPARE(imageDrawStaticText, imageDrawText);
-}
-
-#if 0
-void tst_QStaticText::rotatedScaledAndTranslatedPainter_data()
-{
- QTest::addColumn<qreal>("offset");
-
- for (int i=0; i<100; ++i) {
- qreal offset = 300 + i / 100.;
- QTest::newRow(QByteArray::number(offset).constData()) << offset;
- }
-}
-
-void tst_QStaticText::rotatedScaledAndTranslatedPainter()
-{
- QFETCH(qreal, offset);
-
- QPixmap imageDrawText(1000, 1000);
- imageDrawText.fill(Qt::white);
- {
- QPainter p(&imageDrawText);
- p.translate(offset, 0);
- p.rotate(45.0);
- p.scale(2.0, 2.0);
- p.translate(100, 200);
-
- p.drawText(11, 12, "Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
- }
-
- QPixmap imageDrawStaticText(1000, 1000);
- imageDrawStaticText.fill(Qt::white);
- {
- QPainter p(&imageDrawStaticText);
- p.translate(offset, 0);
- p.rotate(45.0);
- p.scale(2.0, 2.0);
- p.translate(100, 200);
-
- QStaticText text("Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
- text.setTextFormat(Qt::PlainText);
-
- p.drawStaticText(QPointF(11, 12 - QFontMetricsF(p.font()).ascent()), text);
- }
-
-#if defined(DEBUG_SAVE_IMAGE)
- imageDrawText.save("rotatedScaledAndPainter_imageDrawText.png");
- imageDrawStaticText.save("rotatedScaledAndPainter_imageDrawStaticText.png");
-#endif
-
- QVERIFY(imageDrawText.toImage() != m_whiteSquare);
-
- if (!supportsTransformations())
- QEXPECT_FAIL("", "Graphics system does not support transformed text on this platform", Abort);
- QCOMPARE(imageDrawStaticText, imageDrawText);
-}
-#endif
-
-void tst_QStaticText::transformationChanged()
-{
- QPixmap imageDrawText(1000, 1000);
- imageDrawText.fill(Qt::white);
- {
- QPainter p(&imageDrawText);
- p.rotate(33.0);
- p.scale(0.5, 0.7);
-
- p.drawText(QRectF(0, 0, 1000, 1000), 0, "Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
-
- p.scale(2.0, 2.5);
- p.drawText(QRectF(0, 0, 1000, 1000), 0, "Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
- }
-
- QPixmap imageDrawStaticText(1000, 1000);
- imageDrawStaticText.fill(Qt::white);
- {
- QPainter p(&imageDrawStaticText);
- p.rotate(33.0);
- p.scale(0.5, 0.7);
-
- QStaticText text("Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
- text.setTextFormat(Qt::PlainText);
-
- p.drawStaticText(QPointF(0, 0), text);
-
- p.scale(2.0, 2.5);
- p.drawStaticText(QPointF(0, 0), text);
- }
-
-#if defined(DEBUG_SAVE_IMAGE)
- imageDrawText.save("transformationChanged_imageDrawText.png");
- imageDrawStaticText.save("transformationChanged_imageDrawStaticText.png");
-#endif
-
- QVERIFY(imageDrawText.toImage() != m_whiteSquare);
-
- if (!supportsTransformations())
- QEXPECT_FAIL("", "Graphics system does not support transformed text on this platform", Abort);
- QCOMPARE(imageDrawStaticText, imageDrawText);
-}
-
-void tst_QStaticText::plainTextVsRichText()
-{
- QPixmap imagePlainText(1000, 1000);
- imagePlainText.fill(Qt::white);
- {
- QPainter p(&imagePlainText);
-
- QStaticText staticText;
- staticText.setText("FOObar");
- staticText.setTextFormat(Qt::PlainText);
-
- p.drawStaticText(10, 10, staticText);
- }
-
- QPixmap imageRichText(1000, 1000);
- imageRichText.fill(Qt::white);
- {
- QPainter p(&imageRichText);
-
- QStaticText staticText;
- staticText.setText("<html><body>FOObar</body></html>");
- staticText.setTextFormat(Qt::RichText);
-
- p.drawStaticText(10, 10, staticText);
- }
-
-#if defined(DEBUG_SAVE_IMAGE)
- imagePlainText.save("plainTextVsRichText_imagePlainText.png");
- imageRichText.save("plainTextVsRichText_imageRichText.png");
-#endif
-
- QVERIFY(imagePlainText.toImage() != m_whiteSquare);
- QCOMPARE(imagePlainText, imageRichText);
-}
-
-void tst_QStaticText::setPenPlainText()
-{
- QFont font = QApplication::font();
- font.setStyleStrategy(QFont::NoAntialias);
-
- QFontMetricsF fm(font);
- QPixmap image(qCeil(fm.width("XXXXX")), qCeil(fm.height()));
- image.fill(Qt::white);
- {
- QPainter p(&image);
- p.setFont(font);
- p.setPen(Qt::green);
-
- QStaticText staticText("XXXXX");
- staticText.setTextFormat(Qt::PlainText);
- p.drawStaticText(0, 0, staticText);
- }
-
- QImage img = image.toImage();
- for (int x=0; x<img.width(); ++x) {
- for (int y=0; y<img.height(); ++y) {
- QRgb pixel = img.pixel(x, y);
- QVERIFY(pixel == QColor(Qt::white).rgba()
- || pixel == QColor(Qt::green).rgba());
- }
- }
-}
-
-void tst_QStaticText::setPenRichText()
-{
- QFont font = QApplication::font();
- font.setStyleStrategy(QFont::NoAntialias);
-
- QFontMetricsF fm(font);
- QPixmap image(qCeil(fm.width("XXXXX")), qCeil(fm.height()));
- image.fill(Qt::white);
- {
- QPainter p(&image);
- p.setFont(font);
- p.setPen(Qt::green);
-
- QStaticText staticText;
- staticText.setText("<html><body>XXXXX</body></html>");
- staticText.setTextFormat(Qt::RichText);
- p.drawStaticText(0, 0, staticText);
- }
-
- QImage img = image.toImage();
- for (int x=0; x<img.width(); ++x) {
- for (int y=0; y<img.height(); ++y) {
- QRgb pixel = img.pixel(x, y);
- QVERIFY(pixel == QColor(Qt::white).rgba()
- || pixel == QColor(Qt::green).rgba());
- }
- }
-}
-
-void tst_QStaticText::richTextOverridesPen()
-{
- QFont font = QApplication::font();
- font.setStyleStrategy(QFont::NoAntialias);
-
- QFontMetricsF fm(font);
- QPixmap image(qCeil(fm.width("XXXXX")), qCeil(fm.height()));
- image.fill(Qt::white);
- {
- QPainter p(&image);
- p.setFont(font);
- p.setPen(Qt::green);
-
- QStaticText staticText;
- staticText.setText("<html><body><font color=\"#ff0000\">XXXXX</font></body></html>");
- staticText.setTextFormat(Qt::RichText);
- p.drawStaticText(0, 0, staticText);
- }
-
- QImage img = image.toImage();
- for (int x=0; x<img.width(); ++x) {
- for (int y=0; y<img.height(); ++y) {
- QRgb pixel = img.pixel(x, y);
- QVERIFY(pixel == QColor(Qt::white).rgba()
- || pixel == QColor(Qt::red).rgba());
- }
- }
-}
-
-void tst_QStaticText::drawStruckOutText()
-{
- QPixmap imageDrawText(1000, 1000);
- QPixmap imageDrawStaticText(1000, 1000);
-
- imageDrawText.fill(Qt::white);
- imageDrawStaticText.fill(Qt::white);
-
- QString s = QString::fromLatin1("Foobar");
-
- QFont font;
- font.setStrikeOut(true);
-
- {
- QPainter p(&imageDrawText);
- p.setFont(font);
- p.drawText(QPointF(50, 50), s);
- }
-
- {
- QPainter p(&imageDrawStaticText);
- QStaticText text = QStaticText(s);
- p.setFont(font);
- p.drawStaticText(QPointF(50, 50 - QFontMetricsF(p.font()).ascent()), text);
- }
-
-#if defined(DEBUG_SAVE_IMAGE)
- imageDrawText.save("drawStruckOutText_imageDrawText.png");
- imageDrawStaticText.save("drawStruckOutText_imageDrawStaticText.png");
-#endif
-
- QVERIFY(imageDrawText.toImage() != m_whiteSquare);
- QCOMPARE(imageDrawText, imageDrawStaticText);
-}
-
-void tst_QStaticText::drawOverlinedText()
-{
- QPixmap imageDrawText(1000, 1000);
- QPixmap imageDrawStaticText(1000, 1000);
-
- imageDrawText.fill(Qt::white);
- imageDrawStaticText.fill(Qt::white);
-
- QString s = QString::fromLatin1("Foobar");
-
- QFont font;
- font.setOverline(true);
-
- {
- QPainter p(&imageDrawText);
- p.setFont(font);
- p.drawText(QPointF(50, 50), s);
- }
-
- {
- QPainter p(&imageDrawStaticText);
- QStaticText text = QStaticText(s);
- p.setFont(font);
- p.drawStaticText(QPointF(50, 50 - QFontMetricsF(p.font()).ascent()), text);
- }
-
-#if defined(DEBUG_SAVE_IMAGE)
- imageDrawText.save("drawOverlinedText_imageDrawText.png");
- imageDrawStaticText.save("drawOverlinedText_imageDrawStaticText.png");
-#endif
-
- QVERIFY(imageDrawText.toImage() != m_whiteSquare);
- QCOMPARE(imageDrawText, imageDrawStaticText);
-}
-
-void tst_QStaticText::drawUnderlinedText()
-{
- QPixmap imageDrawText(1000, 1000);
- QPixmap imageDrawStaticText(1000, 1000);
-
- imageDrawText.fill(Qt::white);
- imageDrawStaticText.fill(Qt::white);
-
- QString s = QString::fromLatin1("Foobar");
-
- QFont font;
- font.setUnderline(true);
-
- {
- QPainter p(&imageDrawText);
- p.setFont(font);
- p.drawText(QPointF(50, 50), s);
- }
-
- {
- QPainter p(&imageDrawStaticText);
- QStaticText text = QStaticText(s);
- p.setFont(font);
- p.drawStaticText(QPointF(50, 50 - QFontMetricsF(p.font()).ascent()), text);
- }
-
-#if defined(DEBUG_SAVE_IMAGE)
- imageDrawText.save("drawUnderlinedText_imageDrawText.png");
- imageDrawStaticText.save("drawUnderlinedText_imageDrawStaticText.png");
-#endif
-
- QCOMPARE(imageDrawText, imageDrawStaticText);
-}
-
-void tst_QStaticText::unprintableCharacter_qtbug12614()
-{
- QString s(QChar(0x200B)); // U+200B, ZERO WIDTH SPACE
-
- QStaticText staticText(s);
-
- QVERIFY(staticText.size().isValid()); // Force layout. Should not crash.
-}
-
-void tst_QStaticText::underlinedColor_qtbug20159()
-{
- QString multiScriptText;
- multiScriptText += QChar(0x0410); // Cyrillic 'A'
- multiScriptText += QLatin1Char('A');
-
- QStaticText staticText(multiScriptText);
-
- QFont font;
- font.setUnderline(true);
-
- staticText.prepare(QTransform(), font);
-
- QStaticTextPrivate *d = QStaticTextPrivate::get(&staticText);
- QCOMPARE(d->itemCount, 2);
-
- // The pen should not be marked as dirty when drawing the underline
- QVERIFY(!d->items[0].color.isValid());
- QVERIFY(!d->items[1].color.isValid());
-}
-
-void tst_QStaticText::textDocumentColor()
-{
- QStaticText staticText("A<font color=\"red\">B</font>");
- staticText.setTextFormat(Qt::RichText);
- staticText.prepare();
-
- QStaticTextPrivate *d = QStaticTextPrivate::get(&staticText);
- QCOMPARE(d->itemCount, 2);
-
- // The pen should not be marked as dirty when drawing the underline
- QVERIFY(!d->items[0].color.isValid());
- QVERIFY(d->items[1].color.isValid());
-
- QCOMPARE(d->items[1].color, QColor(Qt::red));
-}
-
-QTEST_MAIN(tst_QStaticText)
-#include "tst_qstatictext.moc"