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();

Reply via email to