From b3ec719c30cc7edae1980edad1c19bc2698aa703 Mon Sep 17 00:00:00 2001 From: wandererfan Date: Mon, 24 Jul 2023 08:29:37 -0400 Subject: [PATCH] [TD]use shared renderer for svg tiles --- src/Mod/TechDraw/Gui/QGIFace.cpp | 15 ++++++++++----- src/Mod/TechDraw/Gui/QGIFace.h | 3 +++ 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/Mod/TechDraw/Gui/QGIFace.cpp b/src/Mod/TechDraw/Gui/QGIFace.cpp index 42c9ba47b9..bc04f0a38c 100644 --- a/src/Mod/TechDraw/Gui/QGIFace.cpp +++ b/src/Mod/TechDraw/Gui/QGIFace.cpp @@ -96,6 +96,8 @@ QGIFace::QGIFace(int index) : setFillMode(PlainFill); setFill(m_colDefFill, m_styleDef); } + + m_sharedRender = new QSvgRenderer(); } QGIFace::~QGIFace() @@ -540,16 +542,19 @@ void QGIFace::buildSvgHatch() before = QString::fromStdString(SVGCOLPREFIX + SVGCOLDEFAULT).toUtf8(); after = QString::fromStdString(SVGCOLPREFIX + m_svgCol).toUtf8(); QByteArray colorXML = m_svgXML.replace(before, after); + if (!m_sharedRender->load(colorXML)) { + Base::Console().Message("QGIF::buildSvgHatch - failed to load svg string\n"); + return; + } long int tileCount = 0; for (int iw = 0; iw < int(nw); iw++) { for (int ih = 0; ih < int(nh); ih++) { QGCustomSvg* tile = new QGCustomSvg(); tile->setScale(m_fillScale); - if (tile->load(&colorXML)) { - tile->setParentItem(m_svgHatchArea); - tile->setPos(iw*wTile + getHatchOffset().x, - -h + ih*hTile + getHatchOffset().y); - } + tile->setSharedRenderer(m_sharedRender); + tile->setParentItem(m_svgHatchArea); + tile->setPos(iw*wTile + getHatchOffset().x, + -h + ih*hTile + getHatchOffset().y); tileCount++; if (tileCount > m_maxTile) { Base::Console().Warning("SVG tile count exceeded: %ld\n", tileCount); diff --git a/src/Mod/TechDraw/Gui/QGIFace.h b/src/Mod/TechDraw/Gui/QGIFace.h index 2497cbc136..e3d3834af2 100644 --- a/src/Mod/TechDraw/Gui/QGIFace.h +++ b/src/Mod/TechDraw/Gui/QGIFace.h @@ -27,6 +27,7 @@ #include #include +#include #include @@ -168,6 +169,8 @@ private: double m_hatchRotation; Base::Vector3d m_hatchOffset; + QSvgRenderer *m_sharedRender; + }; }