diff options
author | Zolnai Tamás <tamas.zolnai@collabora.com> | 2014-02-08 01:49:39 +0100 |
---|---|---|
committer | Zolnai Tamás <tamas.zolnai@collabora.com> | 2014-02-08 02:59:50 +0100 |
commit | 718203e37025fc1cc1e28f9e52f05bee79684811 (patch) | |
tree | 54fc2cd106c744bfa27c79147ab389daee27045a /oox | |
parent | cf9d8194932318d5e8b27ec8188cf32938670abc (diff) |
drawingML export/import: text frames with vertical alignment
Change-Id: I469da0a8234dd2979facfed3d66907aad1a138ab
Diffstat (limited to 'oox')
-rw-r--r-- | oox/source/drawingml/drawingmltypes.cxx | 39 | ||||
-rw-r--r-- | oox/source/drawingml/textbodypropertiescontext.cxx | 13 | ||||
-rw-r--r-- | oox/source/export/drawingml.cxx | 13 | ||||
-rw-r--r-- | oox/source/shape/WpsContext.cxx | 8 |
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; |