diff options
author | Noel Power <noel.power@novell.com> | 2010-11-26 15:32:34 +0000 |
---|---|---|
committer | Noel Power <noel.power@novell.com> | 2010-11-26 15:32:34 +0000 |
commit | 4f4013169ddf827807ffe41e99b845b2dc10fa03 (patch) | |
tree | 682792e71d39f127512118badb8cbf2cad907050 | |
parent | 6998013adf9b17c4c20ea792e7777c609fc044c6 (diff) |
tentative fix for fdo#30474#
-rw-r--r-- | writerfilter/source/dmapper/DomainMapperTableManager.cxx | 38 | ||||
-rw-r--r-- | writerfilter/source/dmapper/PropertyIds.cxx | 1 | ||||
-rw-r--r-- | writerfilter/source/dmapper/PropertyIds.hxx | 1 |
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 |