summaryrefslogtreecommitdiff
path: root/oox
diff options
context:
space:
mode:
authorZolnai Tamás <tamas.zolnai@collabora.com>2014-02-08 01:49:39 +0100
committerZolnai Tamás <tamas.zolnai@collabora.com>2014-02-08 02:59:50 +0100
commit718203e37025fc1cc1e28f9e52f05bee79684811 (patch)
tree54fc2cd106c744bfa27c79147ab389daee27045a /oox
parentcf9d8194932318d5e8b27ec8188cf32938670abc (diff)
drawingML export/import: text frames with vertical alignment
Change-Id: I469da0a8234dd2979facfed3d66907aad1a138ab
Diffstat (limited to 'oox')
-rw-r--r--oox/source/drawingml/drawingmltypes.cxx39
-rw-r--r--oox/source/drawingml/textbodypropertiescontext.cxx13
-rw-r--r--oox/source/export/drawingml.cxx13
-rw-r--r--oox/source/shape/WpsContext.cxx8
4 files changed, 52 insertions, 21 deletions
diff --git a/oox/source/drawingml/drawingmltypes.cxx b/oox/source/drawingml/drawingmltypes.cxx
index 9dd42eb01595..a96eaf382ffd 100644
--- a/oox/source/drawingml/drawingmltypes.cxx
+++ b/oox/source/drawingml/drawingmltypes.cxx
@@ -187,6 +187,45 @@ sal_Int16 GetParaAdjust( sal_Int32 nAlign )
return nEnum;
}
+TextVerticalAdjust GetTextVerticalAdjust( sal_Int32 nToken )
+{
+ TextVerticalAdjust aVertAdjust;
+ switch( nToken )
+ {
+ case XML_b:
+ aVertAdjust = TextVerticalAdjust_BOTTOM;
+ break;
+ case XML_dist:
+ case XML_just:
+ case XML_ctr:
+ aVertAdjust = TextVerticalAdjust_CENTER;
+ break;
+ case XML_t:
+ default:
+ aVertAdjust = TextVerticalAdjust_TOP;
+ break;
+ }
+ return aVertAdjust;
+}
+
+const char* GetTextVerticalAdjust( TextVerticalAdjust eAdjust )
+{
+ const char* sVerticalAdjust = 0;
+ switch( eAdjust )
+ {
+ case TextVerticalAdjust_BOTTOM:
+ sVerticalAdjust = "b";
+ break;
+ case TextVerticalAdjust_CENTER:
+ sVerticalAdjust = "ctr";
+ break;
+ case TextVerticalAdjust_TOP:
+ default:
+ sVerticalAdjust = "t";
+ break;
+ }
+ return sVerticalAdjust;
+}
TabAlign GetTabAlign( sal_Int32 aToken )
{
diff --git a/oox/source/drawingml/textbodypropertiescontext.cxx b/oox/source/drawingml/textbodypropertiescontext.cxx
index 358db9f9c987..81a99e824215 100644
--- a/oox/source/drawingml/textbodypropertiescontext.cxx
+++ b/oox/source/drawingml/textbodypropertiescontext.cxx
@@ -96,16 +96,9 @@ TextBodyPropertiesContext::TextBodyPropertiesContext( ContextHandler2Helper& rPa
}
// ST_TextAnchoringType
- if( rAttribs.hasAttribute( XML_anchor ) ) {
- switch( rAttribs.getToken( XML_anchor, XML_t ) )
- {
- case XML_b : mrTextBodyProp.meVA = drawing::TextVerticalAdjust_BOTTOM; break;
- case XML_dist :
- case XML_just :
- case XML_ctr : mrTextBodyProp.meVA = drawing::TextVerticalAdjust_CENTER; break;
- default:
- case XML_t : mrTextBodyProp.meVA = drawing::TextVerticalAdjust_TOP; break;
- }
+ if( rAttribs.hasAttribute( XML_anchor ) )
+ {
+ mrTextBodyProp.meVA = GetTextVerticalAdjust( rAttribs.getToken( XML_anchor, XML_t ) );
mrTextBodyProp.maPropertyMap[ PROP_TextVerticalAdjust ] <<= mrTextBodyProp.meVA;
}
diff --git a/oox/source/export/drawingml.cxx b/oox/source/export/drawingml.cxx
index 11fd26afd01f..f2dd046a3cf7 100644
--- a/oox/source/export/drawingml.cxx
+++ b/oox/source/export/drawingml.cxx
@@ -1541,17 +1541,8 @@ void DrawingML::WriteText( Reference< XInterface > rXIface, bool bBodyPr, bool b
TextVerticalAdjust eVerticalAlignment( TextVerticalAdjust_TOP );
const char* sVerticalAlignment = NULL;
GET( eVerticalAlignment, TextVerticalAdjust );
- switch( eVerticalAlignment ) {
- case TextVerticalAdjust_BOTTOM:
- sVerticalAlignment = "b";
- break;
- case TextVerticalAdjust_CENTER:
- sVerticalAlignment = "ctr";
- break;
- case TextVerticalAdjust_TOP:
- default:
- ;
- }
+ if( eVerticalAlignment != TextVerticalAdjust_TOP )
+ sVerticalAlignment = GetTextVerticalAdjust(eVerticalAlignment);
const char* sWritingMode = NULL;
sal_Bool bVertical = sal_False;
diff --git a/oox/source/shape/WpsContext.cxx b/oox/source/shape/WpsContext.cxx
index 04e8a232332c..7d37fc19f54f 100644
--- a/oox/source/shape/WpsContext.cxx
+++ b/oox/source/shape/WpsContext.cxx
@@ -11,6 +11,7 @@
#include <oox/drawingml/shapepropertiescontext.hxx>
#include <oox/drawingml/shapestylecontext.hxx>
#include <com/sun/star/beans/XPropertyState.hpp>
+#include <oox/drawingml/drawingmltypes.hxx>
using namespace com::sun::star;
@@ -86,6 +87,13 @@ oox::core::ContextHandlerRef WpsContext::onCreateContext(sal_Int32 nElementToken
for (size_t i = 0; i < SAL_N_ELEMENTS(aProps); ++i)
if (oInsets[i])
xPropertySet->setPropertyValue(aProps[i], uno::makeAny(*oInsets[i]));
+
+ // Handle text vertical adjustment inside a text frame
+ if( rAttribs.hasAttribute( XML_anchor ) )
+ {
+ drawing::TextVerticalAdjust eAdjust = drawingml::GetTextVerticalAdjust( rAttribs.getToken( XML_anchor, XML_t ) );
+ xPropertySet->setPropertyValue("TextVerticalAdjust", uno::makeAny(eAdjust));
+ }
return this;
}
break;