oox/source/export/drawingml.cxx | 6 ++ sd/qa/unit/data/pptx/tdf102261_testParaTabStopDefaultDistance.pptx |binary sd/qa/unit/export-tests-ooxml3.cxx | 24 ++++++++++ 3 files changed, 30 insertions(+)
New commits: commit e76ac490a9dfc0ae1f6de3639179eac98ec1cb88 Author: Sarper Akdemir <sarper.akde...@collabora.com> AuthorDate: Fri Mar 3 19:22:30 2023 +0300 Commit: Sarper Akdemir <sarper.akde...@collabora.com> CommitDate: Tue Mar 28 14:54:32 2023 +0000 tdf#102261: pptx export: implement defTabSz ParaTabStopDefaultDistance Adds export of ParaTabStopDefaultDistance property into defTabSz. Also adds a unit test that checks pptx roundtrip of the property. Change-Id: I5be9ea88b15e3e8cab25af79488983a71b96dae1 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/148539 Tested-by: Jenkins Reviewed-by: Miklos Vajna <vmik...@collabora.com> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/149512 Tested-by: Sarper Akdemir <sarper.akde...@collabora.com> Reviewed-by: Sarper Akdemir <sarper.akde...@collabora.com> diff --git a/oox/source/export/drawingml.cxx b/oox/source/export/drawingml.cxx index 4f98a8803edf..3cb7d4448a9e 100644 --- a/oox/source/export/drawingml.cxx +++ b/oox/source/export/drawingml.cxx @@ -3190,6 +3190,10 @@ bool DrawingML::WriteParagraphProperties(const Reference<XTextContent>& rParagra return false; } + sal_Int32 nParaDefaultTabSize = 0; + if (GetProperty(rXPropSet, "ParaTabStopDefaultDistance")) + mAny >>= nParaDefaultTabSize; + // for autofitted textboxes, scale the indents if (GetProperty(rXShapePropSet, "TextFitToSize") && mAny.get<TextFitToSizeType>() == TextFitToSizeType_AUTOFIT) { @@ -3214,6 +3218,7 @@ bool DrawingML::WriteParagraphProperties(const Reference<XTextContent>& rParagra XML_marL, sax_fastparser::UseIf(OString::number(oox::drawingml::convertHmmToEmu(nParaLeftMargin)), nParaLeftMargin > 0), XML_indent, sax_fastparser::UseIf(OString::number(!bForceZeroIndent ? oox::drawingml::convertHmmToEmu(nParaFirstLineIndent) : 0), (bForceZeroIndent || (nParaFirstLineIndent != 0))), XML_algn, GetAlignment( nAlignment ), + XML_defTabSz, sax_fastparser::UseIf(OString::number(oox::drawingml::convertHmmToEmu(nParaDefaultTabSize)), nParaDefaultTabSize > 0), XML_rtl, sax_fastparser::UseIf(ToPsz10(bRtl), bRtl)); else mpFS->startElementNS( XML_a, nElement, @@ -3221,6 +3226,7 @@ bool DrawingML::WriteParagraphProperties(const Reference<XTextContent>& rParagra XML_marL, sax_fastparser::UseIf(OString::number(oox::drawingml::convertHmmToEmu(nLeftMargin)), nLeftMargin > 0), XML_indent, sax_fastparser::UseIf(OString::number(!bForceZeroIndent ? oox::drawingml::convertHmmToEmu(nLineIndentation) : 0), (bForceZeroIndent || ( nLineIndentation != 0))), XML_algn, GetAlignment( nAlignment ), + XML_defTabSz, sax_fastparser::UseIf(OString::number(oox::drawingml::convertHmmToEmu(nParaDefaultTabSize)), nParaDefaultTabSize > 0), XML_rtl, sax_fastparser::UseIf(ToPsz10(bRtl), bRtl)); diff --git a/sd/qa/unit/data/pptx/tdf102261_testParaTabStopDefaultDistance.pptx b/sd/qa/unit/data/pptx/tdf102261_testParaTabStopDefaultDistance.pptx new file mode 100644 index 000000000000..88438d7b5494 Binary files /dev/null and b/sd/qa/unit/data/pptx/tdf102261_testParaTabStopDefaultDistance.pptx differ diff --git a/sd/qa/unit/export-tests-ooxml3.cxx b/sd/qa/unit/export-tests-ooxml3.cxx index 287f35cc3637..4c7d020b1432 100644 --- a/sd/qa/unit/export-tests-ooxml3.cxx +++ b/sd/qa/unit/export-tests-ooxml3.cxx @@ -132,6 +132,7 @@ public: void testTdf151622_oleIcon(); void testTdf152436(); void testLinkedOLE(); + void testTdf102261_testParaTabStopDefaultDistance(); CPPUNIT_TEST_SUITE(SdOOXMLExportTest3); @@ -225,6 +226,7 @@ public: CPPUNIT_TEST(testTdf151622_oleIcon); CPPUNIT_TEST(testTdf152436); CPPUNIT_TEST(testLinkedOLE); + CPPUNIT_TEST(testTdf102261_testParaTabStopDefaultDistance); CPPUNIT_TEST_SUITE_END(); virtual void registerNamespaces(xmlXPathContextPtr& pXmlXPathCtx) override @@ -2135,6 +2137,28 @@ void SdOOXMLExportTest3::testLinkedOLE() assertXPath(pXml, "//p:oleObj", 1); } +void SdOOXMLExportTest3::testTdf102261_testParaTabStopDefaultDistance() +{ + createSdImpressDoc("pptx/tdf102261_testParaTabStopDefaultDistance.pptx"); + saveAndReload("Impress Office Open XML"); + + uno::Reference<beans::XPropertySet> xShape(getShapeFromPage(0, 0)); + { + uno::Reference<beans::XPropertySet> xPropSet(getParagraphFromShape(0, xShape), + uno::UNO_QUERY_THROW); + CPPUNIT_ASSERT_EQUAL( + sal_Int32{ 1270 }, + xPropSet->getPropertyValue("ParaTabStopDefaultDistance").get<sal_Int32>()); + } + { + uno::Reference<beans::XPropertySet> xPropSet(getParagraphFromShape(1, xShape), + uno::UNO_QUERY_THROW); + CPPUNIT_ASSERT_EQUAL( + sal_Int32{ 2540 }, + xPropSet->getPropertyValue("ParaTabStopDefaultDistance").get<sal_Int32>()); + } +} + CPPUNIT_TEST_SUITE_REGISTRATION(SdOOXMLExportTest3); CPPUNIT_PLUGIN_IMPLEMENT();