#include <QTextLayout>
#include <QFontMetrics>
#include <QDebug>
-#include <QStaticText>
class Benchmark
{
PainterQPointMode,
LayoutMode,
DocumentMode,
- PixmapMode,
- StaticTextMode,
- StaticTextWithMaximumSizeMode
+ PixmapMode
};
DrawText(const QString &text, Mode mode)
}
virtual void begin(QPainter *p, int iterations) {
- m_staticTexts.clear();
m_pixmaps.clear();
m_currentPixmap = 0;
QRect m_bounds = QRect(0,0,p->device()->width(), p->device()->height());
m_layout.endLayout();
m_layout.setCacheEnabled(true);
m_size = m_layout.boundingRect().toRect().size();
- break; }
-
- case StaticTextWithMaximumSizeMode: {
- QStaticText staticText;
- m_size = (p->boundingRect(m_bounds, 0, m_text)).size();
- staticText.setTextWidth(m_size.width() + 10);
- staticText.setText(m_text);
- staticText.prepare(p->transform(), p->font());
- m_staticTexts.append(staticText);
- break;
- }
- case StaticTextMode: {
- QStaticText staticText;
- staticText.setText(m_text);
- staticText.prepare(p->transform(), p->font());
- m_staticTexts.append(staticText);
-
- QFontMetrics fm(p->font());
- m_size = QSize(fm.width(m_text, m_text.length()), fm.height());
-
break;
}
case LayoutMode:
m_layout.draw(p, rect.topLeft());
break;
- case StaticTextWithMaximumSizeMode:
- case StaticTextMode:
- p->drawStaticText(rect.topLeft(), m_staticTexts.at(0));
- break;
}
}
case LayoutMode: type = QLatin1String("layout.draw()"); break;
case DocumentMode: type = QLatin1String("doc.drawContents()"); break;
case PixmapMode: type = QLatin1String("pixmap cached text"); break;
- case StaticTextMode: type = QLatin1String("drawStaticText()"); break;
- case StaticTextWithMaximumSizeMode: type = QLatin1String("drawStaticText() w/ maxsize"); break;
}
return QString::fromLatin1("%3, len=%1, lines=%2")
QList<QPixmap> m_pixmaps;
int m_currentPixmap;
-
- QList<QStaticText> m_staticTexts;
};