diff options
author | Kim Motoyoshi Kalland <kim.kalland@nokia.com> | 2010-03-10 11:51:46 (GMT) |
---|---|---|
committer | Kim Motoyoshi Kalland <kim.kalland@nokia.com> | 2010-03-10 14:38:17 (GMT) |
commit | ee6c26115959f46621f5a45f3fbe4a49989fd095 (patch) | |
tree | 2c3d5e112de7cb2c76690ec399088e120d23782f /src/opengl/gl2paintengineex/qtriangulatingstroker.cpp | |
parent | 477a3f2720710130dad88a1e8391f7eaf24ffb38 (diff) | |
download | Qt-ee6c26115959f46621f5a45f3fbe4a49989fd095.zip Qt-ee6c26115959f46621f5a45f3fbe4a49989fd095.tar.gz Qt-ee6c26115959f46621f5a45f3fbe4a49989fd095.tar.bz2 |
Added clipping to the dashed stroke processor in the GL2 engine.
Without clipping, the stroker could consume a huge amount of
memory when scaling up cosmetic, dashed strokes. I also made
QDashStroker clip more aggressively.
Task-number: QTBUG-7832
Reviewed-by: Samuel
Diffstat (limited to 'src/opengl/gl2paintengineex/qtriangulatingstroker.cpp')
-rw-r--r-- | src/opengl/gl2paintengineex/qtriangulatingstroker.cpp | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/opengl/gl2paintengineex/qtriangulatingstroker.cpp b/src/opengl/gl2paintengineex/qtriangulatingstroker.cpp index 5229d3f..d952988 100644 --- a/src/opengl/gl2paintengineex/qtriangulatingstroker.cpp +++ b/src/opengl/gl2paintengineex/qtriangulatingstroker.cpp @@ -73,7 +73,7 @@ void QTriangulatingStroker::endCapOrJoinClosed(const qreal *start, const qreal * } -void QTriangulatingStroker::process(const QVectorPath &path, const QPen &pen) +void QTriangulatingStroker::process(const QVectorPath &path, const QPen &pen, const QRectF &) { const qreal *pts = path.points(); const QPainterPath::ElementType *types = path.elements(); @@ -480,7 +480,7 @@ QDashedStrokeProcessor::QDashedStrokeProcessor() m_dash_stroker.setCubicToHook(qdashprocessor_cubicTo); } -void QDashedStrokeProcessor::process(const QVectorPath &path, const QPen &pen) +void QDashedStrokeProcessor::process(const QVectorPath &path, const QPen &pen, const QRectF &clip) { const qreal *pts = path.points(); @@ -497,6 +497,7 @@ void QDashedStrokeProcessor::process(const QVectorPath &path, const QPen &pen) m_dash_stroker.setDashPattern(pen.dashPattern()); m_dash_stroker.setStrokeWidth(pen.isCosmetic() ? width * m_inv_scale : width); m_dash_stroker.setMiterLimit(pen.miterLimit()); + m_dash_stroker.setClipRect(clip); qreal curvyness = sqrt(width) * m_inv_scale / 8; if (count < 2) |