summaryrefslogtreecommitdiffstats
path: root/src/gui/painting/qemulationpaintengine.cpp
diff options
context:
space:
mode:
authorDavid Boddie <dboddie@trolltech.com>2009-05-19 14:45:28 (GMT)
committerDavid Boddie <dboddie@trolltech.com>2009-05-19 14:45:28 (GMT)
commit8821284ac4e55caf5fe712fca002e79220e9cf7e (patch)
treeb1d82e77ee04ee50b24298ae58f46c0980ec0e5d /src/gui/painting/qemulationpaintengine.cpp
parent2c5b7fe040575aa2ee560117c1c3455724c2f9ae (diff)
parent13f703741dee67adc7d92e4bcf525431334c9a60 (diff)
downloadQt-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.cpp22
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;
+ }
}
}