oox/source/export/drawingml.cxx                                    |    6 ++
 sd/qa/unit/data/pptx/tdf102261_testParaTabStopDefaultDistance.pptx |binary
 sd/qa/unit/export-tests-ooxml3.cxx                                 |   22 
++++++++++
 3 files changed, 28 insertions(+)

New commits:
commit f039fe0da31907a58a4c3b6717cf29caf2685101
Author:     Sarper Akdemir <sarper.akde...@collabora.com>
AuthorDate: Fri Mar 3 19:22:30 2023 +0300
Commit:     Miklos Vajna <vmik...@collabora.com>
CommitDate: Thu Mar 16 15:47:29 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>

diff --git a/oox/source/export/drawingml.cxx b/oox/source/export/drawingml.cxx
index 8f16b1ebc95e..5335dca58486 100644
--- a/oox/source/export/drawingml.cxx
+++ b/oox/source/export/drawingml.cxx
@@ -3290,6 +3290,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)
     {
@@ -3314,6 +3318,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,
@@ -3321,6 +3326,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 997dd15009fd..ccbfc6e35335 100644
--- a/sd/qa/unit/export-tests-ooxml3.cxx
+++ b/sd/qa/unit/export-tests-ooxml3.cxx
@@ -1965,6 +1965,28 @@ CPPUNIT_TEST_FIXTURE(SdOOXMLExportTest3, testLinkedOLE)
     assertXPath(pXml, "//p:oleObj", 1);
 }
 
+CPPUNIT_TEST_FIXTURE(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_PLUGIN_IMPLEMENT();
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Reply via email to