svgio/qa/cppunit/SvgImportTest.cxx | 21 ++++++++++++++++++--- svgio/qa/cppunit/data/tdf159594.svg | 7 +++++++ svgio/source/svgreader/svgsymbolnode.cxx | 8 +++----- 3 files changed, 28 insertions(+), 8 deletions(-)
New commits: commit 71deb4bcc4e54b807c3a885652bebd8ee3f73cc0 Author: Xisco Fauli <xiscofa...@libreoffice.org> AuthorDate: Tue Feb 6 12:50:59 2024 +0100 Commit: Xisco Fauli <xiscofa...@libreoffice.org> CommitDate: Thu Feb 8 22:32:24 2024 +0100 tdf#159601, tdf#159594: reuse target for symbols' children Regression from e7186b49a9a0b24ddc3b1c5384b5d9facb03518c "tdf#158445: support viewBox in symbol elements" Change-Id: Ie2198c47149def17fa3cb612046b61bf32e873bf Reviewed-on: https://gerrit.libreoffice.org/c/core/+/163046 Tested-by: Jenkins Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org> (cherry picked from commit 8b7dbf40a06bc900562887889c17606ae5ef0587) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/163015 Tested-by: Xisco Fauli <xiscofa...@libreoffice.org> diff --git a/svgio/qa/cppunit/SvgImportTest.cxx b/svgio/qa/cppunit/SvgImportTest.cxx index 9324ad1b1849..0ba32d8cb9f3 100644 --- a/svgio/qa/cppunit/SvgImportTest.cxx +++ b/svgio/qa/cppunit/SvgImportTest.cxx @@ -1605,9 +1605,24 @@ CPPUNIT_TEST_FIXTURE(Test, testTdf158445) CPPUNIT_ASSERT (pDocument); - assertXPath(pDocument, "/primitive2D/transform/transform/transform/transform/polypolygoncolor"_ostr, "color"_ostr, "#000000"); - assertXPath(pDocument, "/primitive2D/transform/transform/transform/transform/polypolygoncolor/polypolygon"_ostr, "height"_ostr, "8.052"); - assertXPath(pDocument, "/primitive2D/transform/transform/transform/transform/polypolygoncolor/polypolygon"_ostr, "width"_ostr, "5.328"); + assertXPath(pDocument, "/primitive2D/transform/mask/transform/transform/transform/polypolygoncolor"_ostr, "color"_ostr, "#000000"); + assertXPath(pDocument, "/primitive2D/transform/mask/transform/transform/transform/polypolygoncolor/polypolygon"_ostr, "height"_ostr, "8.052"); + assertXPath(pDocument, "/primitive2D/transform/mask/transform/transform/transform/polypolygoncolor/polypolygon"_ostr, "width"_ostr, "5.328"); +} + +CPPUNIT_TEST_FIXTURE(Test, testTdf159594) +{ + Primitive2DSequence aSequence = parseSvg(u"/svgio/qa/cppunit/data/tdf159594.svg"); + CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(aSequence.getLength())); + + drawinglayer::Primitive2dXmlDump dumper; + xmlDocUniquePtr pDocument = dumper.dumpAndParse(Primitive2DContainer(aSequence)); + + CPPUNIT_ASSERT (pDocument); + + assertXPath(pDocument, "/primitive2D/transform/transform/polypolygoncolor"_ostr, "color"_ostr, "#000000"); + assertXPath(pDocument, "/primitive2D/transform/transform/polypolygoncolor/polypolygon"_ostr, "height"_ostr, "11.671875"); + assertXPath(pDocument, "/primitive2D/transform/transform/polypolygoncolor/polypolygon"_ostr, "width"_ostr, "7.5"); } CPPUNIT_TEST_FIXTURE(Test, testTdf97663) diff --git a/svgio/qa/cppunit/data/tdf159594.svg b/svgio/qa/cppunit/data/tdf159594.svg new file mode 100644 index 000000000000..c2b470ec0fdc --- /dev/null +++ b/svgio/qa/cppunit/data/tdf159594.svg @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 100 100" version="1.1"> +<symbol overflow="visible" id="glyph"> +<path style="stroke:none;" d="M 1.3125 -11.671875 L 8.8125 -11.671875 L 8.8125 -11 L 4.578125 0 L 2.9375 0 L 6.921875 -10.34375 L 1.3125 -10.34375 Z M 1.3125 -11.671875 "/> +</symbol> +<use xlink:href="#glyph" x="40" y="30"/> +</svg> diff --git a/svgio/source/svgreader/svgsymbolnode.cxx b/svgio/source/svgreader/svgsymbolnode.cxx index f86dd27bb3a0..2f226b841e82 100644 --- a/svgio/source/svgreader/svgsymbolnode.cxx +++ b/svgio/source/svgreader/svgsymbolnode.cxx @@ -126,12 +126,10 @@ namespace svgio::svgreader void SvgSymbolNode::decomposeSvgNode(drawinglayer::primitive2d::Primitive2DContainer& rTarget, bool bReferenced) const { - drawinglayer::primitive2d::Primitive2DContainer aNewTarget; - // decompose children - SvgNode::decomposeSvgNode(aNewTarget, bReferenced); + SvgNode::decomposeSvgNode(rTarget, bReferenced); - if(aNewTarget.empty()) + if (rTarget.empty()) return; if(getViewBox()) @@ -157,7 +155,7 @@ namespace svgio::svgreader const drawinglayer::primitive2d::Primitive2DReference xRef( new drawinglayer::primitive2d::TransformPrimitive2D( aEmbeddingTransform, - std::move(aNewTarget))); + drawinglayer::primitive2d::Primitive2DContainer(rTarget))); rTarget.push_back(xRef); }