From 4b01aa0eb6e4f13b5b3a822a9e60f88a61b4d591 Mon Sep 17 00:00:00 2001 From: Eskil Abrahamsen Blomfeldt Date: Fri, 15 Jan 2010 14:18:43 +0100 Subject: Use fallback when drawing projected text Projected text always has to go via paths, so we use the fall back for this. --- src/gui/painting/qpainter.cpp | 2 +- tests/auto/qstatictext/tst_qstatictext.cpp | 29 +++++++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/src/gui/painting/qpainter.cpp b/src/gui/painting/qpainter.cpp index 114492d..54eed03 100644 --- a/src/gui/painting/qpainter.cpp +++ b/src/gui/painting/qpainter.cpp @@ -5735,7 +5735,7 @@ void QPainter::drawStaticText(const QPointF &position, const QStaticText &static // If we don't have an extended paint engine, or if the painter is transformed, // we go through standard code path - if (d->extended == 0) { + if (d->extended == 0 || !d->state->matrix.isAffine()) { if (staticText_d->size.isValid()) drawText(QRectF(position, staticText_d->size), staticText_d->text); else diff --git a/tests/auto/qstatictext/tst_qstatictext.cpp b/tests/auto/qstatictext/tst_qstatictext.cpp index adc9593..ca83f2f 100644 --- a/tests/auto/qstatictext/tst_qstatictext.cpp +++ b/tests/auto/qstatictext/tst_qstatictext.cpp @@ -67,6 +67,7 @@ private slots: void translatedPainter(); void rotatedPainter(); void scaledPainter(); + void projectedPainter(); void rotatedScaledAndTranslatedPainter(); void transformationChanged(); }; @@ -306,6 +307,34 @@ void tst_QStaticText::scaledPainter() 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."); + p.drawStaticText(11, 12, text); + } + + QCOMPARE(imageDrawStaticText, imageDrawText); + +} + void tst_QStaticText::rotatedScaledAndTranslatedPainter() { QPixmap imageDrawText(1000, 1000); -- cgit v0.12