summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNoel Power <noel.power@novell.com>2010-11-26 15:32:34 +0000
committerNoel Power <noel.power@novell.com>2010-11-26 15:32:34 +0000
commit4f4013169ddf827807ffe41e99b845b2dc10fa03 (patch)
tree682792e71d39f127512118badb8cbf2cad907050
parent6998013adf9b17c4c20ea792e7777c609fc044c6 (diff)
tentative fix for fdo#30474#
-rw-r--r--writerfilter/source/dmapper/DomainMapperTableManager.cxx38
-rw-r--r--writerfilter/source/dmapper/PropertyIds.cxx1
-rw-r--r--writerfilter/source/dmapper/PropertyIds.hxx1
3 files changed, 40 insertions, 0 deletions
diff --git a/writerfilter/source/dmapper/DomainMapperTableManager.cxx b/writerfilter/source/dmapper/DomainMapperTableManager.cxx
index d310ea393..62d6d41d1 100644
--- a/writerfilter/source/dmapper/DomainMapperTableManager.cxx
+++ b/writerfilter/source/dmapper/DomainMapperTableManager.cxx
@@ -269,6 +269,44 @@ bool DomainMapperTableManager::sprm(Sprm & rSprm)
case NS_ooxml::LN_CT_TblPrBase_tblLook:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; //todo: table look specifier
+ case NS_ooxml::LN_CT_TcPrBase_textDirection:
+ {
+ TablePropertyMapPtr pPropMap( new TablePropertyMap );
+ const sal_Int16 HORI_LEFT_TOP = 0;
+ /*const sal_Int16 HORI_RIGHT_TOP = 1;*/ // currently not used below
+ const sal_Int16 VERT_TOP_RIGHT = 2;
+ bool bInsertCellProps = true;
+ switch ( nIntValue )
+ {
+ case 1: // tbRl
+ // Binary filter takes BiDirection into account ( but I have no idea about that here )
+ // or even what it is. But... here's where to handle it if it becomes an issue
+ pPropMap->Insert( PROP_FRM_DIRECTION, false, uno::makeAny( VERT_TOP_RIGHT ));
+ OSL_TRACE("Have inserted textDirection %d", nIntValue );
+ break;
+ case 3: // btLr
+ // We have to fake this text direction
+ pPropMap->Insert( PROP_FRM_DIRECTION, false, uno::makeAny( HORI_LEFT_TOP ));
+ pPropMap->Insert( PROP_CHAR_ROTATION, false, uno::makeAny( sal_Int16( 900 ) ));
+ OSL_TRACE("Have inserted textDirection %d", nIntValue );
+ break;
+ case 4: // lrTbV
+ pPropMap->Insert( PROP_FRM_DIRECTION, false, uno::makeAny( HORI_LEFT_TOP ));
+ break;
+ case 5: // tbRlV
+ pPropMap->Insert( PROP_FRM_DIRECTION, false, uno::makeAny( VERT_TOP_RIGHT ));
+ break;
+ case 0: // lrTb
+ case NS_ooxml::LN_Value_ST_TextDirection_tbLrV:
+ default:
+ // Ignore - we can't handle these
+ bInsertCellProps = false;
+ break;
+ }
+ if ( bInsertCellProps )
+ cellProps( pPropMap );
+ break;
+ }
case NS_ooxml::LN_CT_TcPrBase_tcW:
/* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
break; //fixed column width is not supported
diff --git a/writerfilter/source/dmapper/PropertyIds.cxx b/writerfilter/source/dmapper/PropertyIds.cxx
index f846293f1..add98f93c 100644
--- a/writerfilter/source/dmapper/PropertyIds.cxx
+++ b/writerfilter/source/dmapper/PropertyIds.cxx
@@ -324,6 +324,7 @@ const rtl::OUString& PropertyNameSupplier::GetName( PropertyIds eId ) const
case PROP_PARA_SPLIT: sName = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ParaSplit")); break;
case PROP_HELP: sName = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Help")); break;
case PROP_HEADING_STYLE_NAME: sName = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("HeadingStyleName")); break;
+ case PROP_FRM_DIRECTION: sName = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("FRMDirection")); break;
// case : sName = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("")); break;
// case : sName = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("")); break;
// case : sName = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("")); break;
diff --git a/writerfilter/source/dmapper/PropertyIds.hxx b/writerfilter/source/dmapper/PropertyIds.hxx
index 36e48d291..401c3e3f8 100644
--- a/writerfilter/source/dmapper/PropertyIds.hxx
+++ b/writerfilter/source/dmapper/PropertyIds.hxx
@@ -287,6 +287,7 @@ enum PropertyIds
/*250*/ ,PROP_HEADING_STYLE_NAME
/*251*/ ,PROP_PARA_SPLIT
/*252*/ ,PROP_HELP
+/*253*/ ,PROP_FRM_DIRECTION
};
struct PropertyNameSupplier_Impl;
class PropertyNameSupplier