oox/source/export/drawingml.cxx    |   13 ++++++++-----
 sd/qa/unit/data/pptx/tdf127090.odp |binary
 sd/qa/unit/export-tests-ooxml1.cxx |   14 ++++++++++++++
 3 files changed, 22 insertions(+), 5 deletions(-)

New commits:
commit 9b2f5d27cf0a0adcced813e18108d5878061d1ee
Author:     Gülşah Köse <gulsah.k...@collabora.com>
AuthorDate: Wed Nov 27 13:35:29 2019 +0300
Commit:     Gülşah Köse <gulsah.k...@collabora.com>
CommitDate: Wed Nov 27 21:11:21 2019 +0100

    tdf#127090 Export textbox rotation attribute.
    
    In case "rotated textbox in a custom shape" handle
    draw:text-rotate-angle attribute while exporting
    ODP to PPTX.
    
    Change-Id: I13b99da586af5e77e51a7cc93a751ab21bed7170
    Reviewed-on: https://gerrit.libreoffice.org/83888
    Tested-by: Jenkins
    Reviewed-by: Gülşah Köse <gulsah.k...@collabora.com>

diff --git a/oox/source/export/drawingml.cxx b/oox/source/export/drawingml.cxx
index 3585fbda6c12..37a28c35594d 100644
--- a/oox/source/export/drawingml.cxx
+++ b/oox/source/export/drawingml.cxx
@@ -2654,7 +2654,8 @@ void DrawingML::WriteText( const Reference< XInterface >& 
rXIface, const OUStrin
     if( !xXText.is() )
         return;
 
-    sal_Int32 nTextRotateAngle = 0;
+    sal_Int32 nTextPreRotateAngle = 0;
+    double nTextRotateAngle = 0;
     bool bIsFontworkShape(presetWarp.startsWith("text") && (presetWarp != 
"textNoShape"));
 
 #define DEFLRINS 254
@@ -2705,14 +2706,14 @@ void DrawingML::WriteText( const Reference< XInterface 
>& rXIface, const OUStrin
         {
             for ( const auto& rProp : std::as_const(aProps) )
             {
-                if ( rProp.Name == "TextPreRotateAngle" && ( rProp.Value >>= 
nTextRotateAngle ) )
+                if ( rProp.Name == "TextPreRotateAngle" && ( rProp.Value >>= 
nTextPreRotateAngle ) )
                 {
-                    if ( nTextRotateAngle == -90 )
+                    if ( nTextPreRotateAngle == -90 )
                     {
                         sWritingMode = "vert";
                         bVertical = true;
                     }
-                    else if ( nTextRotateAngle == -270 )
+                    else if ( nTextPreRotateAngle == -270 )
                     {
                         sWritingMode = "vert270";
                         bVertical = true;
@@ -2722,6 +2723,8 @@ void DrawingML::WriteText( const Reference< XInterface >& 
rXIface, const OUStrin
                 }
                 else if (rProp.Name == "AdjustmentValues")
                     rProp.Value >>= aAdjustmentSeq;
+                else if( rProp.Name == "TextRotateAngle" )
+                    rProp.Value >>= nTextRotateAngle;
                 else if (rProp.Name == "TextPath")
                 {
                     rProp.Value >>= aTextPathSeq;
@@ -2779,7 +2782,7 @@ void DrawingML::WriteText( const Reference< XInterface >& 
rXIface, const OUStrin
                                XML_anchor, sVerticalAlignment,
                                XML_anchorCtr, bHorizontalCenter ? "1" : 
nullptr,
                                XML_vert, sWritingMode,
-                               XML_rot, (nTextRotateAngle != 0) ? 
oox::drawingml::calcRotationValue( nTextRotateAngle * 100 ).getStr() : nullptr 
);
+                               XML_rot, ((nTextPreRotateAngle + 
nTextRotateAngle) != 0) ? oox::drawingml::calcRotationValue( 
(nTextPreRotateAngle + nTextRotateAngle) * 100 ).getStr() : nullptr );
         if (bIsFontworkShape)
         {
             if (aAdjustmentSeq.hasElements())
diff --git a/sd/qa/unit/data/pptx/tdf127090.odp 
b/sd/qa/unit/data/pptx/tdf127090.odp
new file mode 100644
index 000000000000..bbdc7995853f
Binary files /dev/null and b/sd/qa/unit/data/pptx/tdf127090.odp differ
diff --git a/sd/qa/unit/export-tests-ooxml1.cxx 
b/sd/qa/unit/export-tests-ooxml1.cxx
index ddc41b563c99..79b18b7cb914 100644
--- a/sd/qa/unit/export-tests-ooxml1.cxx
+++ b/sd/qa/unit/export-tests-ooxml1.cxx
@@ -81,6 +81,7 @@ public:
     void testTdf111884();
     void testTdf112633();
     void testTdf128952();
+    void testTdf127090();
     void testCustomXml();
     void testTdf94238();
     void testPictureTransparency();
@@ -118,6 +119,7 @@ public:
     CPPUNIT_TEST(testTdf111884);
     CPPUNIT_TEST(testTdf112633);
     CPPUNIT_TEST(testTdf128952);
+    CPPUNIT_TEST(testTdf127090);
     CPPUNIT_TEST(testCustomXml);
     CPPUNIT_TEST(testTdf94238);
     CPPUNIT_TEST(testTdf125554);
@@ -829,6 +831,18 @@ void SdOOXMLExportTest1::testTdf128952()
     assertXPath(pXmlDoc, "/p:sld/p:cSld/p:spTree/p:sp/p:spPr/a:xfrm/a:ext", 
"cy", "1462680");
 }
 
+void SdOOXMLExportTest1::testTdf127090()
+{
+    ::sd::DrawDocShellRef xDocShRef = 
loadURL(m_directories.getURLFromSrc("sd/qa/unit/data/pptx/tdf127090.odp"), ODP);
+    utl::TempFile tempFile;
+    xDocShRef = saveAndReload(xDocShRef.get(), PPTX, &tempFile);
+    xDocShRef->DoClose();
+
+    xmlDocPtr pXmlDoc = parseExport(tempFile, "ppt/slides/slide1.xml");
+
+    assertXPath(pXmlDoc, "/p:sld/p:cSld/p:spTree/p:sp/p:txBody/a:bodyPr", 
"rot", "-5400000");
+}
+
 void SdOOXMLExportTest1::testCustomXml()
 {
     // Load document and export it to a temporary file
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to