From 14fa3c45fcc71f1b5b7c84ae23a1f7a5d2f22e9e Mon Sep 17 00:00:00 2001 From: Lars Knoll Date: Mon, 20 Oct 2014 15:45:45 +0200 Subject: Don't stroke a path if it's not specified in the SVG The code in the svg renderer is using a QPen with it's brush set to Qt::NoBrush as a hack to indicate that we don't have a stroke to paint, but to nevertheless use QPen to keep track of state. So when rendering, we have to check for the pen having no brush and in that case not draw anything. Task-number: QTBUG-36767 Change-Id: Ib622c7d0108e7360437f57853f11c65190c16773 Reviewed-by: Laszlo Agocs --- src/svg/qsvggraphics.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/svg/qsvggraphics.cpp b/src/svg/qsvggraphics.cpp index 05ce744..712d770 100644 --- a/src/svg/qsvggraphics.cpp +++ b/src/svg/qsvggraphics.cpp @@ -54,7 +54,7 @@ QT_BEGIN_NAMESPACE p->setOpacity(oldOpacity * states.fillOpacity); \ command; \ p->setPen(oldPen); \ - if (oldPen.widthF() != 0) { \ + if (oldPen != Qt::NoPen && oldPen.brush() != Qt::NoBrush && oldPen.widthF() != 0) { \ p->setOpacity(oldOpacity * states.strokeOpacity); \ p->setBrush(Qt::NoBrush); \ command; \ -- cgit v1.2.1 From aaa06d6c82e02961f92690b10c84a0030dc0ebb7 Mon Sep 17 00:00:00 2001 From: Lars Knoll Date: Mon, 20 Oct 2014 15:48:39 +0200 Subject: Correctly handle Miter joins in all cases SVG uses SvgMiterJoin, not the Qt definition of miter joins at all times. Change-Id: I85b8e13609fa37384f09457f724a42d720769028 Reviewed-by: Laszlo Agocs --- src/svg/qsvggenerator.cpp | 5 +---- src/svg/qsvgnode.cpp | 2 +- src/svg/qsvgtinydocument.cpp | 4 ++-- 3 files changed, 4 insertions(+), 7 deletions(-) diff --git a/src/svg/qsvggenerator.cpp b/src/svg/qsvggenerator.cpp index 6a12043..5d58fa3 100644 --- a/src/svg/qsvggenerator.cpp +++ b/src/svg/qsvggenerator.cpp @@ -390,6 +390,7 @@ public: qWarning("Unhandled cap style"); } switch (spen.joinStyle()) { + case Qt::SvgMiterJoin: case Qt::MiterJoin: stream() << "stroke-linejoin=\"miter\" " "stroke-miterlimit=\""<setPen(pen); p->setBrush(Qt::black); @@ -273,7 +273,7 @@ void QSvgTinyDocument::draw(QPainter *p, const QString &id, QTransform originalTransform = p->worldTransform(); //XXX set default style on the painter - QPen pen(Qt::NoBrush, 1, Qt::SolidLine, Qt::FlatCap, Qt::MiterJoin); + QPen pen(Qt::NoBrush, 1, Qt::SolidLine, Qt::FlatCap, Qt::SvgMiterJoin); pen.setMiterLimit(4); p->setPen(pen); p->setBrush(Qt::black); -- cgit v1.2.1