From 506886f388dfc11f56bfd6aedd8a17e6cc033f5b Mon Sep 17 00:00:00 2001 From: wandererfan Date: Mon, 22 Jul 2019 11:50:19 -0400 Subject: [PATCH] [TD]Fix Svg Export Scaling issue - change target rectangle for render to match source - add param for endcap style (.../General/EdgeEndCap) --- src/Mod/TechDraw/Gui/QGIPrimPath.cpp | 22 ++++++++++++++++++++-- src/Mod/TechDraw/Gui/QGIPrimPath.h | 3 +++ src/Mod/TechDraw/Gui/QGVPage.cpp | 2 +- 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/src/Mod/TechDraw/Gui/QGIPrimPath.cpp b/src/Mod/TechDraw/Gui/QGIPrimPath.cpp index e7e71b1f16..dc01533e0c 100644 --- a/src/Mod/TechDraw/Gui/QGIPrimPath.cpp +++ b/src/Mod/TechDraw/Gui/QGIPrimPath.cpp @@ -41,7 +41,8 @@ using namespace TechDrawGui; QGIPrimPath::QGIPrimPath(): - m_width(0) + m_width(0), + m_capStyle(Qt::RoundCap) { setCacheMode(QGraphicsItem::NoCache); setFlag(QGraphicsItem::ItemIsSelectable, true); @@ -57,7 +58,9 @@ QGIPrimPath::QGIPrimPath(): m_colCurrent = getNormalColor(); m_styleCurrent = Qt::SolidLine; m_pen.setStyle(m_styleCurrent); - m_pen.setCapStyle(Qt::RoundCap); + m_capStyle = prefCapStyle(); + m_pen.setCapStyle(m_capStyle); +// m_pen.setCapStyle(Qt::FlatCap); m_pen.setWidthF(m_width); setPrettyNormal(); @@ -228,6 +231,11 @@ void QGIPrimPath::setNormalColor(QColor c) m_colOverride = true; } +void QGIPrimPath::setCapStyle(Qt::PenCapStyle c) +{ + m_capStyle = c; + m_pen.setCapStyle(c); +} Base::Reference QGIPrimPath::getParmGroup() { @@ -236,6 +244,16 @@ Base::Reference QGIPrimPath::getParmGroup() return hGrp; } +Qt::PenCapStyle QGIPrimPath::prefCapStyle() +{ + Base::Reference hGrp = App::GetApplication().GetUserParameter() + .GetGroup("BaseApp")->GetGroup("Preferences")->GetGroup("Mod/TechDraw/General"); + Qt::PenCapStyle result; + unsigned int cap = hGrp->GetUnsigned("EdgeCapStyle", 0x20); //0x00 FlatCap, 0x10 SquareCap, 0x20 RoundCap + result = (Qt::PenCapStyle) cap; + return result; +} + void QGIPrimPath::mousePressEvent(QGraphicsSceneMouseEvent * event) { QGIView *parent; diff --git a/src/Mod/TechDraw/Gui/QGIPrimPath.h b/src/Mod/TechDraw/Gui/QGIPrimPath.h index 43c7654d4f..25babf8075 100644 --- a/src/Mod/TechDraw/Gui/QGIPrimPath.h +++ b/src/Mod/TechDraw/Gui/QGIPrimPath.h @@ -57,6 +57,7 @@ public: void setStyle(Qt::PenStyle s); void setStyle(int s); virtual void setNormalColor(QColor c); + virtual void setCapStyle(Qt::PenCapStyle c); protected: virtual void hoverEnterEvent(QGraphicsSceneHoverEvent *event) override; @@ -68,6 +69,7 @@ protected: virtual QColor getPreColor(void); virtual QColor getSelectColor(void); Base::Reference getParmGroup(void); + virtual Qt::PenCapStyle prefCapStyle(void); bool isHighlighted; QPen m_pen; @@ -76,6 +78,7 @@ protected: bool m_colOverride; Qt::PenStyle m_styleCurrent; double m_width; + Qt::PenCapStyle m_capStyle; private: diff --git a/src/Mod/TechDraw/Gui/QGVPage.cpp b/src/Mod/TechDraw/Gui/QGVPage.cpp index b7cbd82c95..30775824f5 100644 --- a/src/Mod/TechDraw/Gui/QGVPage.cpp +++ b/src/Mod/TechDraw/Gui/QGVPage.cpp @@ -785,7 +785,7 @@ void QGVPage::saveSvg(QString filename) double width = Rez::guiX(page->getPageWidth()); double height = Rez::guiX(page->getPageHeight()); QRectF sourceRect(0.0,-height,width,height); - QRectF targetRect; + QRectF targetRect(0.0,0.0,width,height); Gui::Selection().clearSelection(); QPainter p;