diff options
author | David Boddie <dboddie@trolltech.com> | 2009-05-19 14:45:28 (GMT) |
---|---|---|
committer | David Boddie <dboddie@trolltech.com> | 2009-05-19 14:45:28 (GMT) |
commit | 8821284ac4e55caf5fe712fca002e79220e9cf7e (patch) | |
tree | b1d82e77ee04ee50b24298ae58f46c0980ec0e5d /src/gui/painting/qemulationpaintengine.cpp | |
parent | 2c5b7fe040575aa2ee560117c1c3455724c2f9ae (diff) | |
parent | 13f703741dee67adc7d92e4bcf525431334c9a60 (diff) | |
download | Qt-8821284ac4e55caf5fe712fca002e79220e9cf7e.zip Qt-8821284ac4e55caf5fe712fca002e79220e9cf7e.tar.gz Qt-8821284ac4e55caf5fe712fca002e79220e9cf7e.tar.bz2 |
Merge branch '4.5' of git@scm.dev.nokia.troll.no:qt/qt into 4.5
Diffstat (limited to 'src/gui/painting/qemulationpaintengine.cpp')
-rw-r--r-- | src/gui/painting/qemulationpaintengine.cpp | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/src/gui/painting/qemulationpaintengine.cpp b/src/gui/painting/qemulationpaintengine.cpp index 3397c45..175f1ab 100644 --- a/src/gui/painting/qemulationpaintengine.cpp +++ b/src/gui/painting/qemulationpaintengine.cpp @@ -123,14 +123,30 @@ void QEmulationPaintEngine::stroke(const QVectorPath &path, const QPen &pen) real_engine->stroke(path, bgPen); } - QBrush brush = pen.brush(); + QPen copy = pen; Qt::BrushStyle style = qbrush_style(brush); if (style >= Qt::LinearGradientPattern && style <= Qt::ConicalGradientPattern) { const QGradient *g = brush.gradient(); + if (g->coordinateMode() > QGradient::LogicalMode) { - QPaintEngineEx::stroke(path, pen); - return; + if (g->coordinateMode() == QGradient::StretchToDeviceMode) { + QTransform mat = brush.transform(); + mat.scale(real_engine->painter()->device()->width(), real_engine->painter()->device()->height()); + brush.setTransform(mat); + copy.setBrush(brush); + real_engine->stroke(path, copy); + return; + } else if (g->coordinateMode() == QGradient::ObjectBoundingMode) { + QTransform mat = brush.transform(); + QRealRect r = path.controlPointRect(); + mat.translate(r.x1, r.y1); + mat.scale(r.x2 - r.x1, r.y2 - r.y1); + brush.setTransform(mat); + copy.setBrush(brush); + real_engine->stroke(path, copy); + return; + } } } |