diff --git a/src/Mod/TechDraw/Gui/QGCustomSvg.cpp b/src/Mod/TechDraw/Gui/QGCustomSvg.cpp index b6a105e33f..bb9e299f80 100644 --- a/src/Mod/TechDraw/Gui/QGCustomSvg.cpp +++ b/src/Mod/TechDraw/Gui/QGCustomSvg.cpp @@ -72,15 +72,6 @@ bool QGCustomSvg::load(QByteArray *svgBytes) return(success); } -QRectF QGCustomSvg::boundingRect() const -{ - QRectF box = m_svgRender->viewBoxF(); - double w = box.width(); - double h = box.height(); - QRectF newRect(0,0,w,h); - return newRect; -} - void QGCustomSvg::paint ( QPainter * painter, const QStyleOptionGraphicsItem * option, QWidget * widget) { QStyleOptionGraphicsItem myOption(*option); myOption.state &= ~QStyle::State_Selected; diff --git a/src/Mod/TechDraw/Gui/QGCustomSvg.h b/src/Mod/TechDraw/Gui/QGCustomSvg.h index 4d445759be..9cdeeecee3 100644 --- a/src/Mod/TechDraw/Gui/QGCustomSvg.h +++ b/src/Mod/TechDraw/Gui/QGCustomSvg.h @@ -52,7 +52,6 @@ public: virtual void centerAt(QPointF centerPos); virtual void centerAt(double cX, double cY); virtual bool load(QByteArray *svgString); - virtual QRectF boundingRect(void) const override; protected: QSvgRenderer *m_svgRender; diff --git a/src/Mod/TechDraw/Gui/QGIViewSymbol.cpp b/src/Mod/TechDraw/Gui/QGIViewSymbol.cpp index 48123e23f8..45b89139c9 100644 --- a/src/Mod/TechDraw/Gui/QGIViewSymbol.cpp +++ b/src/Mod/TechDraw/Gui/QGIViewSymbol.cpp @@ -42,6 +42,8 @@ #include #include +#include +#include #include "QGCustomSvg.h" #include "QGDisplayArea.h" @@ -123,11 +125,18 @@ void QGIViewSymbol::drawSvg() return; } -//note: svg's are overscaled by (72 pixels(pts actually) /in)*(1 in/25.4 mm) = 2.834645669 (could be 96/25.4(CSS)? 110/25.4?) -//due to 1 sceneUnit (1mm) = 1 pixel for some QtSvg functions - double rezfactor = Rez::getRezFactor(); - double scaling = viewSymbol->getScale() * rezfactor; + double scaling = viewSymbol->getScale(); + double pxMm = 3.78; //96px/25.4mm ( CSS/SVG defined value of 96 pixels per inch) +// double pxMm = 3.54; //90px/25.4mm ( inkscape value version <= 0.91) + //some software uses different px/in, so symbol will need Scale adjusted. + //Arch/Draft views are in px and need to be scaled @ rezfactor px/mm to ensure proper representation + if (viewSymbol->isDerivedFrom(TechDraw::DrawViewArch::getClassTypeId()) || + viewSymbol->isDerivedFrom(TechDraw::DrawViewDraft::getClassTypeId()) ) { + scaling = scaling * rezfactor; + } else { + scaling = scaling * rezfactor / pxMm; + } m_svgItem->setScale(scaling); QByteArray qba(viewSymbol->Symbol.getValue(),strlen(viewSymbol->Symbol.getValue()));