summaryrefslogtreecommitdiff
path: root/svgio
diff options
context:
space:
mode:
authorXisco Fauli <xiscofauli@libreoffice.org>2023-08-15 19:43:42 +0200
committerXisco Fauli <xiscofauli@libreoffice.org>2023-08-15 21:42:31 +0200
commit20f57e14362674d321ef184e1987f41a6418adc2 (patch)
treeb180204ae294a6bc74acedc12a2823e61257eb37 /svgio
parentd2c7cbc7d724d608f6d37bbb0233ad2b39eb938e (diff)
tdf#156777: check for css style in textpath
Change-Id: I63a274dd9fba37852412a194a490cb2b7634f1cb Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155726 Tested-by: Xisco Fauli <xiscofauli@libreoffice.org> Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Diffstat (limited to 'svgio')
-rw-r--r--svgio/qa/cppunit/SvgImportTest.cxx21
-rw-r--r--svgio/qa/cppunit/data/tdf156777.svg14
-rw-r--r--svgio/source/svgreader/svgtextpathnode.cxx2
3 files changed, 36 insertions, 1 deletions
diff --git a/svgio/qa/cppunit/SvgImportTest.cxx b/svgio/qa/cppunit/SvgImportTest.cxx
index d68e7ebf728a..31e5bdb3ef13 100644
--- a/svgio/qa/cppunit/SvgImportTest.cxx
+++ b/svgio/qa/cppunit/SvgImportTest.cxx
@@ -710,6 +710,27 @@ CPPUNIT_TEST_FIXTURE(Test, testTdf97941)
assertXPath(pDocument, "/primitive2D/transform/textsimpleportion[1]", "familyname", "Times New Roman");
}
+CPPUNIT_TEST_FIXTURE(Test, testTdf156777)
+{
+ Primitive2DSequence aSequence = parseSvg(u"/svgio/qa/cppunit/data/tdf156777.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/textsimpleportion", 23);
+ assertXPath(pDocument, "/primitive2D/transform/textsimpleportion[1]", "text", "Quick brown fox jumps over the lazy dog.");
+
+ // Without the fix in place, this test would have failed with
+ // - Expected: #008000
+ // - Actual : #000000
+ assertXPath(pDocument, "/primitive2D/transform/textsimpleportion[1]", "fontcolor", "#008000");
+ assertXPath(pDocument, "/primitive2D/transform/textsimpleportion[1]", "x", "84");
+ assertXPath(pDocument, "/primitive2D/transform/textsimpleportion[1]", "y", "23");
+}
+
CPPUNIT_TEST_FIXTURE(Test, testTdf104339)
{
Primitive2DSequence aSequenceTdf104339 = parseSvg(u"/svgio/qa/cppunit/data/tdf104339.svg");
diff --git a/svgio/qa/cppunit/data/tdf156777.svg b/svgio/qa/cppunit/data/tdf156777.svg
new file mode 100644
index 000000000000..9ce1dd8cd37c
--- /dev/null
+++ b/svgio/qa/cppunit/data/tdf156777.svg
@@ -0,0 +1,14 @@
+<svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
+ <path
+ id="path1"
+ fill="none"
+ stroke="red"
+ d="M10,90 Q90,90 90,45 Q90,10 50,10 Q10,10 10,40 Q10,70 45,70 Q70,70 75,50" />
+
+ <text>
+ <textPath href="#path1" startOffset="40%" style="fill:green">
+ Quick brown fox jumps over the lazy dog.
+ </textPath>
+ </text>
+</svg>
+
diff --git a/svgio/source/svgreader/svgtextpathnode.cxx b/svgio/source/svgreader/svgtextpathnode.cxx
index 2c5a823566ed..4dad47f62bb6 100644
--- a/svgio/source/svgreader/svgtextpathnode.cxx
+++ b/svgio/source/svgreader/svgtextpathnode.cxx
@@ -252,7 +252,7 @@ namespace svgio::svgreader
const SvgStyleAttributes* SvgTextPathNode::getSvgStyleAttributes() const
{
- return &maSvgStyleAttributes;
+ return checkForCssStyle(maSvgStyleAttributes);
}
void SvgTextPathNode::parseAttribute(const OUString& rTokenName, SVGToken aSVGToken, const OUString& aContent)