diff options
author | Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@nokia.com> | 2010-02-15 14:15:56 (GMT) |
---|---|---|
committer | Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@nokia.com> | 2010-02-15 14:15:56 (GMT) |
commit | 925c41f2a1c38d958de3844785bcc8c83ff74004 (patch) | |
tree | 259c58feef38e07c1261d2a38ec4a3916d6f3f83 /src/gui/painting/qemulationpaintengine.cpp | |
parent | 3a205ce73d4f87ad499b09cc7a7eb43c61c26cf9 (diff) | |
parent | 8197e5fae939c264220666162fe9ecb624e47bef (diff) | |
download | Qt-925c41f2a1c38d958de3844785bcc8c83ff74004.zip Qt-925c41f2a1c38d958de3844785bcc8c83ff74004.tar.gz Qt-925c41f2a1c38d958de3844785bcc8c83ff74004.tar.bz2 |
Merge branch 'qstatictext-4.7' of git@scm.dev.nokia.troll.no:qt/qt-graphics-team into qstatictext-4.7
Diffstat (limited to 'src/gui/painting/qemulationpaintengine.cpp')
-rw-r--r-- | src/gui/painting/qemulationpaintengine.cpp | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/src/gui/painting/qemulationpaintengine.cpp b/src/gui/painting/qemulationpaintengine.cpp index 4067b97..0510b10 100644 --- a/src/gui/painting/qemulationpaintengine.cpp +++ b/src/gui/painting/qemulationpaintengine.cpp @@ -172,6 +172,36 @@ void QEmulationPaintEngine::drawTextItem(const QPointF &p, const QTextItem &text QRectF rect(p.x(), p.y() - ti.ascent.toReal(), ti.width.toReal(), (ti.ascent + ti.descent + 1).toReal()); fillBGRect(rect); } + + QPainterState *s = state(); + Qt::BrushStyle style = qbrush_style(s->pen.brush()); + if (style >= Qt::LinearGradientPattern && style <= Qt::ConicalGradientPattern) + { + QPen savedPen = s->pen; + QGradient g = *s->pen.brush().gradient(); + + if (g.coordinateMode() > QGradient::LogicalMode) { + QTransform mat = s->pen.brush().transform(); + if (g.coordinateMode() == QGradient::StretchToDeviceMode) { + mat.scale(real_engine->painter()->device()->width(), real_engine->painter()->device()->height()); + } else if (g.coordinateMode() == QGradient::ObjectBoundingMode) { + const QTextItemInt &ti = static_cast<const QTextItemInt &>(textItem); + QRectF r(p.x(), p.y() - ti.ascent.toReal(), ti.width.toReal(), (ti.ascent + ti.descent + 1).toReal()); + mat.translate(r.x(), r.y()); + mat.scale(r.width(), r.height()); + } + g.setCoordinateMode(QGradient::LogicalMode); + QBrush brush(g); + brush.setTransform(mat); + s->pen.setBrush(brush); + penChanged(); + real_engine->drawTextItem(p, textItem); + s->pen = savedPen; + penChanged(); + return; + } + } + real_engine->drawTextItem(p, textItem); } |