oox/source/export/drawingml.cxx |    5 +++++
 oox/source/shape/WpsContext.cxx |   33 +++++++++++++++++++++------------
 2 files changed, 26 insertions(+), 12 deletions(-)

New commits:
commit 71aa91ab7e16be70ed9abd0959f8f18d35439acc
Author: Miklos Vajna <vmik...@collabora.co.uk>
Date:   Mon Jun 16 18:39:08 2014 +0200

    oox: drawingML import/export of <wps:bodyPr vert="vert270"> for textboxes
    
    As in, for shapes which have textboxes. CppunitTest_sw_ooxmlsdrexport's
    testFdo69636 is a reproducer for this problem.
    
    Change-Id: I6575d21b0802ada7f334ca9fbbea796605708ddd

diff --git a/oox/source/export/drawingml.cxx b/oox/source/export/drawingml.cxx
index f7fcf43..6073fbd 100644
--- a/oox/source/export/drawingml.cxx
+++ b/oox/source/export/drawingml.cxx
@@ -1717,6 +1717,11 @@ void DrawingML::WriteText( Reference< XInterface > 
rXIface, bool bBodyPr, bool b
                         sWritingMode = "vert";
                         bVertical = true;
                     }
+                    else if ( nTextRotateAngle == -270 )
+                    {
+                        sWritingMode = "vert270";
+                        bVertical = true;
+                    }
                     break;
                 }
             }
diff --git a/oox/source/shape/WpsContext.cxx b/oox/source/shape/WpsContext.cxx
index c17405e..2d2b022 100644
--- a/oox/source/shape/WpsContext.cxx
+++ b/oox/source/shape/WpsContext.cxx
@@ -56,25 +56,34 @@ oox::core::ContextHandlerRef 
WpsContext::onCreateContext(sal_Int32 nElementToken
     case XML_bodyPr:
         if (mxShape.is())
         {
+            uno::Reference<lang::XServiceInfo> xServiceInfo(mxShape, 
uno::UNO_QUERY);
+            uno::Reference<beans::XPropertySet> xPropertySet(mxShape, 
uno::UNO_QUERY);
             OptValue<OUString> oVert = rAttribs.getString(XML_vert);
             if (oVert.has() && oVert.get() == "vert270")
             {
-                // No support for this in core, work around by char rotation, 
as we do so for table cells already.
-                uno::Reference<text::XText> xText(mxShape, uno::UNO_QUERY);
-                uno::Reference<text::XTextCursor> xTextCursor = 
xText->createTextCursor();
-                xTextCursor->gotoStart(false);
-                xTextCursor->gotoEnd(true);
-                uno::Reference<beans::XPropertyState> 
xPropertyState(xTextCursor, uno::UNO_QUERY);
-                beans::PropertyState aState = 
xPropertyState->getPropertyState("CharRotation");
-                if (aState == beans::PropertyState_DEFAULT_VALUE)
+                if 
(xServiceInfo->supportsService("com.sun.star.text.TextFrame"))
+                {
+                    // No support for this in core, work around by char 
rotation, as we do so for table cells already.
+                    uno::Reference<text::XText> xText(mxShape, uno::UNO_QUERY);
+                    uno::Reference<text::XTextCursor> xTextCursor = 
xText->createTextCursor();
+                    xTextCursor->gotoStart(false);
+                    xTextCursor->gotoEnd(true);
+                    uno::Reference<beans::XPropertyState> 
xPropertyState(xTextCursor, uno::UNO_QUERY);
+                    beans::PropertyState aState = 
xPropertyState->getPropertyState("CharRotation");
+                    if (aState == beans::PropertyState_DEFAULT_VALUE)
+                    {
+                        uno::Reference<beans::XPropertySet> 
xTextCursorPropertySet(xTextCursor, uno::UNO_QUERY);
+                        
xTextCursorPropertySet->setPropertyValue("CharRotation", 
uno::makeAny(sal_Int16(900)));
+                    }
+                }
+                else
                 {
-                    uno::Reference<beans::XPropertySet> 
xPropertySet(xTextCursor, uno::UNO_QUERY);
-                    xPropertySet->setPropertyValue("CharRotation", 
uno::makeAny(sal_Int16(900)));
+                    comphelper::SequenceAsHashMap 
aCustomShapeGeometry(xPropertySet->getPropertyValue("CustomShapeGeometry"));
+                    aCustomShapeGeometry["TextPreRotateAngle"] = 
uno::makeAny(sal_Int32(-270));
+                    xPropertySet->setPropertyValue("CustomShapeGeometry", 
uno::makeAny(aCustomShapeGeometry.getAsConstPropertyValueList()));
                 }
             }
 
-            uno::Reference<lang::XServiceInfo> xServiceInfo(mxShape, 
uno::UNO_QUERY);
-            uno::Reference<beans::XPropertySet> xPropertySet(mxShape, 
uno::UNO_QUERY);
             if (xServiceInfo.is())
             {
                 bool bTextFrame = 
xServiceInfo->supportsService("com.sun.star.text.TextFrame");
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to