summaryrefslogtreecommitdiffstats
path: root/tests/benchmarks/gui/text/qtext
diff options
context:
space:
mode:
authorMichael Brasser <michael.brasser@nokia.com>2010-07-01 00:59:42 (GMT)
committerMichael Brasser <michael.brasser@nokia.com>2010-07-01 01:00:31 (GMT)
commitb2aedd1d57a5a681b1185bf8908683ff563de4d6 (patch)
tree47a5cab03a270297f61dfefa52861fc97064b8c4 /tests/benchmarks/gui/text/qtext
parent7448194cd56939dba4caca4e6ab1120f42d9e47e (diff)
downloadQt-b2aedd1d57a5a681b1185bf8908683ff563de4d6.zip
Qt-b2aedd1d57a5a681b1185bf8908683ff563de4d6.tar.gz
Qt-b2aedd1d57a5a681b1185bf8908683ff563de4d6.tar.bz2
Add additional text layout benchmarks.
Diffstat (limited to 'tests/benchmarks/gui/text/qtext')
-rw-r--r--tests/benchmarks/gui/text/qtext/main.cpp58
1 files changed, 51 insertions, 7 deletions
diff --git a/tests/benchmarks/gui/text/qtext/main.cpp b/tests/benchmarks/gui/text/qtext/main.cpp
index d4f3165..eaa23e9 100644
--- a/tests/benchmarks/gui/text/qtext/main.cpp
+++ b/tests/benchmarks/gui/text/qtext/main.cpp
@@ -82,6 +82,10 @@ private slots:
void constructControl();
void constructDocument();
+ void newLineReplacement();
+ void formatManipulation();
+
+ void layout_data();
void layout();
void paintLayoutToPixmap();
void paintLayoutToPixmap_painterFill();
@@ -95,7 +99,7 @@ private slots:
void paintControlToPixmap_painterFill();
private:
- QSize setupTextLayout(QTextLayout *layout);
+ QSize setupTextLayout(QTextLayout *layout, bool wrap = true, int wrapWidth = 100);
QString m_lorem;
QString m_shortLorem;
@@ -227,10 +231,8 @@ void tst_QText::odfWriting_images()
delete doc;
}
-QSize tst_QText::setupTextLayout(QTextLayout *layout)
+QSize tst_QText::setupTextLayout(QTextLayout *layout, bool wrap, int wrapWidth)
{
- bool wrap = true;
- int wrapWidth = 300;
layout->setCacheEnabled(true);
int height = 0;
@@ -242,7 +244,6 @@ QSize tst_QText::setupTextLayout(QTextLayout *layout)
lineWidth = wrapWidth;
layout->beginLayout();
-
while (1) {
QTextLine line = layout->createLine();
if (!line.isValid())
@@ -284,17 +285,60 @@ void tst_QText::constructDocument()
}
}
+//this step is needed before giving the string to a QTextLayout
+void tst_QText::newLineReplacement()
+{
+ QString text = QString::fromLatin1("H\ne\nl\nl\no\n\nW\no\nr\nl\nd");
+
+ QBENCHMARK {
+ QString tmp = text;
+ tmp.replace(QLatin1Char('\n'), QChar::LineSeparator);
+ }
+}
+
+void tst_QText::formatManipulation()
+{
+ QFont font;
+
+ QBENCHMARK {
+ QTextCharFormat format;
+ format.setFont(font);
+ }
+}
+
+void tst_QText::layout_data()
+{
+ QTest::addColumn<bool>("wrap");
+ QTest::newRow("wrap") << true;
+ QTest::newRow("nowrap") << false;
+}
+
void tst_QText::layout()
{
+ QFETCH(bool,wrap);
QTextLayout layout(m_shortLorem);
- setupTextLayout(&layout);
+ setupTextLayout(&layout, wrap);
QBENCHMARK {
QTextLayout layout(m_shortLorem);
- setupTextLayout(&layout);
+ setupTextLayout(&layout, wrap);
}
}
+//### requires tst_QText to be a friend of QTextLayout
+/*void tst_QText::stackTextLayout()
+{
+ QStackTextEngine engine(m_shortLorem, qApp->font());
+ QTextLayout layout(&engine);
+ setupTextLayout(&layout);
+
+ QBENCHMARK {
+ QStackTextEngine engine(m_shortLorem, qApp->font());
+ QTextLayout layout(&engine);
+ setupTextLayout(&layout);
+ }
+}*/
+
void tst_QText::paintLayoutToPixmap()
{
QTextLayout layout(m_shortLorem);