oox/source/export/vmlexport.cxx            |   17 ++++++++++++++++-
 sw/qa/extras/ooxmlexport/ooxmlexport15.cxx |    4 ++++
 2 files changed, 20 insertions(+), 1 deletion(-)

New commits:
commit 090c61eb93db4302d4565d5f11f7673190835fdb
Author:     Michael Stahl <michael.st...@cib.de>
AuthorDate: Thu Aug 6 14:11:38 2020 +0200
Commit:     Michael Stahl <michael.st...@cib.de>
CommitDate: Thu Aug 6 17:56:32 2020 +0200

    oox: VML export: for rotated text shape, produce bottom-to-top
    
    This is for shapes that fail the lcl_isTextBox() check in
    VMLExport::StartShape(), they can be rotated too but with a different
    property than the "TextPreRotateAngle" that is used in
    VMLExport::EndShape().
    
    Change-Id: I530aae8b7138f47bae8434e205632f5f4adbb231
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/100249
    Tested-by: Jenkins
    Reviewed-by: Michael Stahl <michael.st...@cib.de>

diff --git a/oox/source/export/vmlexport.cxx b/oox/source/export/vmlexport.cxx
index c0e2f65db2c0..22dcc871ab83 100644
--- a/oox/source/export/vmlexport.cxx
+++ b/oox/source/export/vmlexport.cxx
@@ -1369,8 +1369,23 @@ sal_Int32 VMLExport::StartShape()
 
         if( pParaObj )
         {
+            uno::Reference<beans::XPropertySet> 
xPropertySet(const_cast<SdrObject*>(m_pSdrObject)->getUnoShape(), 
uno::UNO_QUERY);
+            sax_fastparser::FastAttributeList* pTextboxAttrList = 
FastSerializerHelper::createAttrList();
+            sax_fastparser::XFastAttributeListRef 
xTextboxAttrList(pTextboxAttrList);
+            if 
(xPropertySet->getPropertySetInfo()->hasPropertyByName("RotateAngle"))
+            {
+                sal_Int32 nTextRotateAngle = sal_Int32();
+                if (xPropertySet->getPropertyValue("RotateAngle") >>= 
nTextRotateAngle)
+                {
+                    if (nTextRotateAngle == 9000)
+                    {
+                        pTextboxAttrList->add(XML_style, 
"mso-layout-flow-alt:bottom-to-top");
+                    }
+                }
+            }
+
             // this is reached only in case some text is attached to the shape
-            m_pSerializer->startElementNS(XML_v, XML_textbox);
+            m_pSerializer->startElementNS(XML_v, XML_textbox, 
xTextboxAttrList);
             m_pTextExport->WriteOutliner(*pParaObj);
             m_pSerializer->endElementNS(XML_v, XML_textbox);
             if( bOwnParaObj )
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport15.cxx 
b/sw/qa/extras/ooxmlexport/ooxmlexport15.cxx
index 3c75d8fe30aa..009867c72f11 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport15.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport15.cxx
@@ -230,6 +230,10 @@ DECLARE_OOXMLEXPORT_TEST(testAtPageShapeRelOrientation, 
"rotated_shape.fodt")
         "/wp:positionV/wp:posOffset", "1080135");
     assertXPath(pXmlDocument, "/w:document/w:body/w:p/w:r/w:drawing/wp:anchor"
         "/wp:positionV", "relativeFrom", "page");
+
+    // now test text rotation -> VML writing direction
+    assertXPath(pXmlDocument, 
"/w:document/w:body/w:p/w:r/mc:AlternateContent[1]/mc:Fallback/w:pict/v:shape/v:textbox",
 "style", "mso-layout-flow-alt:bottom-to-top");
+
 }
 
 DECLARE_OOXMLEXPORT_TEST(testRelativeAnchorHeightFromBottomMarginHasFooter,
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to