From 1a7c927f6fb8fc4f6f2277a8442ce4b37f1ffccf Mon Sep 17 00:00:00 2001 From: Xisco Fauli Date: Thu, 13 Jun 2024 12:09:19 +0200 Subject: [PATCH] tdf#161213: fill can use context-stroke and vice versa Change-Id: Id127bd4943ff1b67915d1de3ba4fcf93dab21423 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/168774 Tested-by: Jenkins Reviewed-by: Xisco Fauli --- svgio/qa/cppunit/SvgImportTest.cxx | 8 ++++++++ svgio/qa/cppunit/data/fillContextStroke.svg | 8 ++++++++ svgio/source/svgreader/svgstyleattributes.cxx | 16 ++++++++++++++++ 3 files changed, 32 insertions(+) create mode 100644 svgio/qa/cppunit/data/fillContextStroke.svg diff --git a/svgio/qa/cppunit/SvgImportTest.cxx b/svgio/qa/cppunit/SvgImportTest.cxx index 9dc25ac2fb03..280cffc5c8a5 100644 --- a/svgio/qa/cppunit/SvgImportTest.cxx +++ b/svgio/qa/cppunit/SvgImportTest.cxx @@ -654,6 +654,14 @@ CPPUNIT_TEST_FIXTURE(Test, testContextFill) assertXPath(pDocument, "/primitive2D/transform/transform/polypolygoncolor"_ostr, "color"_ostr, u"#ff0000"_ustr); } +CPPUNIT_TEST_FIXTURE(Test, testFillContextStroke) +{ + xmlDocUniquePtr pDocument = dumpAndParseSvg(u"/svgio/qa/cppunit/data/fillContextStroke.svg"); + + assertXPath(pDocument, "/primitive2D/transform/polypolygonstroke/line"_ostr, "color"_ostr, u"#ff0000"_ustr); + assertXPath(pDocument, "/primitive2D/transform/transform/polypolygoncolor"_ostr, "color"_ostr, u"#ff0000"_ustr); +} + CPPUNIT_TEST_FIXTURE(Test, testContextStroke) { xmlDocUniquePtr pDocument = dumpAndParseSvg(u"/svgio/qa/cppunit/data/contextStroke.svg"); diff --git a/svgio/qa/cppunit/data/fillContextStroke.svg b/svgio/qa/cppunit/data/fillContextStroke.svg new file mode 100644 index 000000000000..a5288889c63e --- /dev/null +++ b/svgio/qa/cppunit/data/fillContextStroke.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/svgio/source/svgreader/svgstyleattributes.cxx b/svgio/source/svgreader/svgstyleattributes.cxx index 7e099534e464..485142240871 100644 --- a/svgio/source/svgreader/svgstyleattributes.cxx +++ b/svgio/source/svgreader/svgstyleattributes.cxx @@ -1332,6 +1332,10 @@ namespace svgio::svgreader { mbContextFill = true; } + else if(o3tl::equalsIgnoreAsciiCase(o3tl::trim(aContent), u"context-stroke")) + { + mbContextStroke = true; + } else if(readSvgPaint(aContent, aSvgPaint, aURL, aOpacity)) { setFill(aSvgPaint); @@ -1381,6 +1385,10 @@ namespace svgio::svgreader { mbContextStroke = true; } + else if(o3tl::equalsIgnoreAsciiCase(o3tl::trim(aContent), u"context-fill")) + { + mbContextFill = true; + } else if(readSvgPaint(aContent, aSvgPaint, aURL, aOpacity)) { maStroke = aSvgPaint; @@ -2130,6 +2138,10 @@ namespace svgio::svgreader { return getContextFill(); } + else if (mbContextStroke) + { + return getContextStroke(); + } else if (maNodeFillURL.isEmpty()) { const SvgStyleAttributes* pSvgStyleAttributes = getParentStyle(); @@ -2175,6 +2187,10 @@ namespace svgio::svgreader return &maStroke.getBColor(); } } + else if (mbContextFill) + { + return getContextFill(); + } else if (mbContextStroke) { return getContextStroke();