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