svgio/qa/cppunit/SvgImportTest.cxx | 17 +++++++++++++++++ svgio/qa/cppunit/data/FontsizeRelative.svg | 5 +++++ svgio/source/svgreader/svgstyleattributes.cxx | 14 ++++++++++++++ 3 files changed, 36 insertions(+)
New commits: commit 324014c997ab90f5777f772a46e6faf887a00832 Author: Xisco Fauli <aniste...@gmail.com> Date: Thu Feb 18 01:27:17 2016 +0100 SVGIO: Fix problem when relative font-size depends on its... ... parent's font-size Change-Id: I13943923c401a5a06b3aa51181fd75292534e888 Reviewed-on: https://gerrit.libreoffice.org/22452 Tested-by: Jenkins <c...@libreoffice.org> Reviewed-by: Noel Grandin <noelgran...@gmail.com> diff --git a/svgio/qa/cppunit/SvgImportTest.cxx b/svgio/qa/cppunit/SvgImportTest.cxx index 7870188..e5d2b03 100644 --- a/svgio/qa/cppunit/SvgImportTest.cxx +++ b/svgio/qa/cppunit/SvgImportTest.cxx @@ -42,6 +42,7 @@ class Test : public test::BootstrapFixture, public XmlTestTools void testTdf87309(); void testFontsizeKeywords(); void testFontsizePercentage(); + void testFontsizeRelative(); void testTdf45771(); void testTdf97941(); void testTdf85770(); @@ -63,6 +64,7 @@ public: CPPUNIT_TEST(testTdf87309); CPPUNIT_TEST(testFontsizeKeywords); CPPUNIT_TEST(testFontsizePercentage); + CPPUNIT_TEST(testFontsizeRelative); CPPUNIT_TEST(testTdf45771); CPPUNIT_TEST(testTdf97941); CPPUNIT_TEST(testTdf85770); @@ -197,6 +199,7 @@ void Test::testFontsizeKeywords() void Test::testFontsizePercentage() { + //Check when font-size uses percentage and defined globally Primitive2DSequence aSequenceFontsizePercentage = parseSvg("/svgio/qa/cppunit/data/FontsizePercentage.svg"); CPPUNIT_ASSERT_EQUAL(1, (int)aSequenceFontsizePercentage.getLength()); @@ -208,6 +211,20 @@ void Test::testFontsizePercentage() assertXPath(pDocument, "/primitive2D/transform/textsimpleportion[1]", "height", "16"); } +void Test::testFontsizeRelative() +{ + //Check when font-size uses relative units (em,ex) and it's based on its parent's font-size + Primitive2DSequence aSequenceFontsizeRelative = parseSvg("/svgio/qa/cppunit/data/FontsizeRelative.svg"); + CPPUNIT_ASSERT_EQUAL(1, (int)aSequenceFontsizeRelative.getLength()); + + Primitive2dXmlDump dumper; + xmlDocPtr pDocument = dumper.dumpAndParse(comphelper::sequenceToContainer<Primitive2DContainer>(aSequenceFontsizeRelative)); + + CPPUNIT_ASSERT (pDocument); + + assertXPath(pDocument, "/primitive2D/transform/textsimpleportion[1]", "height", "50"); +} + void Test::testTdf45771() { //Check text fontsize when using relative units diff --git a/svgio/qa/cppunit/data/FontsizeRelative.svg b/svgio/qa/cppunit/data/FontsizeRelative.svg new file mode 100644 index 0000000..339e663 --- /dev/null +++ b/svgio/qa/cppunit/data/FontsizeRelative.svg @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> <svg height="600" width="400" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> +<g font-size="5px"> + <text x="150" y="150" font-size="10em">Sample</text> +</g> +</svg> diff --git a/svgio/source/svgreader/svgstyleattributes.cxx b/svgio/source/svgreader/svgstyleattributes.cxx index a6ad68d..fb750fe 100644 --- a/svgio/source/svgreader/svgstyleattributes.cxx +++ b/svgio/source/svgreader/svgstyleattributes.cxx @@ -2402,6 +2402,20 @@ namespace svgio return SvgNumber( maFontSizeNumber.getNumber() * aDefaultSize / 100.0, Unit_px, true); } + else if((Unit_em == maFontSizeNumber.getUnit()) || (Unit_ex == maFontSizeNumber.getUnit())) + { + const SvgStyleAttributes* pSvgStyleAttributes = getParentStyle(); + + if(pSvgStyleAttributes) + { + const SvgNumber aParentNumber = pSvgStyleAttributes->getFontSizeNumber(); + + return SvgNumber( + aParentNumber.getNumber() * maFontSizeNumber.getNumber(), + aParentNumber.getUnit(), + true); + } + } return maFontSizeNumber; } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits