diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2018-01-25 11:13:19 +0100 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2018-05-23 09:52:30 +0000 |
commit | bd74b624d53ce076a8b6a90a66da0a19da1ec17c (patch) | |
tree | 9d30483db419ec5a54e61c133db3ac5808b56a3d /tests/auto/gui/text/qstatictext/tst_qstatictext.cpp | |
parent | dfa434a9799618eba48a84cbad279262679aa108 (diff) |
Improve bounding rect of QStaticText with Qt::PlainText
The bounding rect was not including positive leading of the last line. This
patch solves it by changing using QTextLine's setLeadingIncluded, and adds
handling of negative leading to keep rendering unchanged in that case.
Change-Id: I4d18b81892184bb85cd7949a5dc3fb9cfa270a26
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
Diffstat (limited to 'tests/auto/gui/text/qstatictext/tst_qstatictext.cpp')
-rw-r--r-- | tests/auto/gui/text/qstatictext/tst_qstatictext.cpp | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/tests/auto/gui/text/qstatictext/tst_qstatictext.cpp b/tests/auto/gui/text/qstatictext/tst_qstatictext.cpp index 45cc94afad..83e9390d25 100644 --- a/tests/auto/gui/text/qstatictext/tst_qstatictext.cpp +++ b/tests/auto/gui/text/qstatictext/tst_qstatictext.cpp @@ -61,6 +61,8 @@ private slots: void drawToPoint(); void drawToRect_data(); void drawToRect(); + void compareToDrawText_data(); + void compareToDrawText(); void setFont(); void setTextWidth(); void prepareToCorrectData(); @@ -212,6 +214,71 @@ void tst_QStaticText::drawToRect() QCOMPARE(imageDrawStaticText, imageDrawText); } +void tst_QStaticText::compareToDrawText_data() +{ + QTest::addColumn<QFont>("font"); + + QTest::newRow("default") << QFont(); + QFont sansserif; sansserif.setStyleHint(QFont::SansSerif); + QFont serif; serif.setStyleHint(QFont::Serif); + QFont monospace; monospace.setStyleHint(QFont::Monospace); + QTest::newRow("sans-serif") << QFont(sansserif.defaultFamily()); + QTest::newRow("serif") << QFont(serif.defaultFamily()); + QTest::newRow("monospace") << QFont(monospace.defaultFamily()); +} + +void tst_QStaticText::compareToDrawText() +{ + QFETCH(QFont, font); + + QPixmap imageDrawText(1000, 1000); + imageDrawText.fill(Qt::white); + { + QPainter p(&imageDrawText); + p.setFont(font); + p.drawText(QRectF(11, 12, 30, 500), "Lorem ipsum dolor sit amet, consectetur adipiscing elit."); + } + + QPixmap imageDrawStaticPlainText(1000, 1000); + imageDrawStaticPlainText.fill(Qt::white); + { + QPainter p(&imageDrawStaticPlainText); + p.setFont(font); + QStaticText text("Lorem ipsum dolor sit amet, consectetur adipiscing elit."); + text.setTextWidth(30), + p.setClipRect(QRectF(11, 12, 30, 500)); + text.setTextFormat(Qt::PlainText); + p.drawStaticText(QPointF(11, 12), text); + } + +#if defined(DEBUG_SAVE_IMAGE) + imageDrawText.save("compareToDrawText_imageDrawText.png"); + imageDrawStaticPlainText.save("compareToDrawText_imageDrawStaticPlainText.png"); +#endif + + QVERIFY(imageDrawText.toImage() != m_whiteSquare); + QCOMPARE(imageDrawStaticPlainText, imageDrawText); + + // Rich text rendering does not take negative leading into account. +#if 0 + QPixmap imageDrawStaticRichText(1000, 1000); + imageDrawStaticRichText.fill(Qt::white); + { + QPainter p(&imageDrawStaticRichText); + p.setFont(font); + QStaticText text("Lorem ipsum dolor sit amet, consectetur adipiscing elit."); + text.setTextWidth(30), + p.setClipRect(QRectF(11, 12, 30, 500)); + text.setTextFormat(Qt::RichText); + p.drawStaticText(QPointF(11, 12), text); + } +#if defined(DEBUG_SAVE_IMAGE) + imageDrawStaticRichText.save("compareToDrawText_imageDrawStaticRichText.png"); +#endif + QCOMPARE(imageDrawStaticRichText, imageDrawText); +#endif +} + void tst_QStaticText::prepareToCorrectData() { QTransform transform; |