diff options
author | Miklos Vajna <vmiklos@collabora.co.uk> | 2013-10-29 10:54:55 +0100 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.co.uk> | 2013-10-29 11:12:39 +0100 |
commit | b103366b92845bde1aff9140c3f6ac2af5597893 (patch) | |
tree | 706834178be744d43ff84e1976648ce40d40f6b2 /writerfilter | |
parent | fe6f195f04b801d4dd47068de1493167a3cb0dcc (diff) |
DOCX import: store table style's rPr in InteropGrabBag
Change-Id: Iadc1831b60c4bd506e34eac42ea693f399973942
Diffstat (limited to 'writerfilter')
-rw-r--r-- | writerfilter/source/dmapper/DomainMapper.cxx | 7 | ||||
-rw-r--r-- | writerfilter/source/dmapper/StyleSheetTable.cxx | 4 | ||||
-rw-r--r-- | writerfilter/source/dmapper/ThemeTable.cxx | 24 | ||||
-rw-r--r-- | writerfilter/source/dmapper/ThemeTable.hxx | 1 |
4 files changed, 35 insertions, 1 deletions
diff --git a/writerfilter/source/dmapper/DomainMapper.cxx b/writerfilter/source/dmapper/DomainMapper.cxx index 97604039d252..75fbe654e4e6 100644 --- a/writerfilter/source/dmapper/DomainMapper.cxx +++ b/writerfilter/source/dmapper/DomainMapper.cxx @@ -958,6 +958,7 @@ void DomainMapper::lcl_attribute(Id nName, Value & val) m_pImpl->GetTopContext()->Insert(PROP_CHAR_FONT_NAME_ASIAN, uno::makeAny( sStringValue )); break; case NS_ooxml::LN_CT_Fonts_eastAsiaTheme: + m_pImpl->appendGrabBag(m_pImpl->m_aSubInteropGrabBag, "eastAsiaTheme", ThemeTable::getStringForTheme(nIntValue)); if (m_pImpl->GetTopContext()) m_pImpl->GetTopContext()->Insert(PROP_CHAR_FONT_NAME_COMPLEX, uno::makeAny( m_pImpl->GetThemeTable()->getFontNameForTheme(nIntValue) ) ); break; @@ -1159,6 +1160,8 @@ void DomainMapper::lcl_attribute(Id nName, Value & val) case NS_ooxml::LN_CT_Language_eastAsia: //90315 case NS_ooxml::LN_CT_Language_bidi: //90316 { + if (nName == NS_ooxml::LN_CT_Language_eastAsia) + m_pImpl->appendGrabBag(m_pImpl->m_aSubInteropGrabBag, "eastAsia", sStringValue); lang::Locale aLocale( LanguageTag::convertToLocale( sStringValue)); if (m_pImpl->GetTopContext()) m_pImpl->GetTopContext()->Insert(NS_ooxml::LN_CT_Language_val== nName ? PROP_CHAR_LOCALE : @@ -2998,6 +3001,10 @@ void DomainMapper::sprmWithProps( Sprm& rSprm, PropertyMapPtr rContext, SprmType resolveSprmProps(*this, rSprm); if (nSprmId == NS_ooxml::LN_CT_PPrBase_spacing) m_pImpl->appendGrabBag(m_pImpl->m_aInteropGrabBag, "spacing", m_pImpl->m_aSubInteropGrabBag); + else if (nSprmId == NS_ooxml::LN_EG_RPrBase_rFonts) + m_pImpl->appendGrabBag(m_pImpl->m_aInteropGrabBag, "rFonts", m_pImpl->m_aSubInteropGrabBag); + else if (nSprmId == NS_ooxml::LN_EG_RPrBase_lang) + m_pImpl->appendGrabBag(m_pImpl->m_aInteropGrabBag, "lang", m_pImpl->m_aSubInteropGrabBag); break; case NS_ooxml::LN_EG_SectPrContents_footnotePr: case NS_ooxml::LN_EG_SectPrContents_endnotePr: diff --git a/writerfilter/source/dmapper/StyleSheetTable.cxx b/writerfilter/source/dmapper/StyleSheetTable.cxx index ce5c16481ce4..45adc73f5f98 100644 --- a/writerfilter/source/dmapper/StyleSheetTable.cxx +++ b/writerfilter/source/dmapper/StyleSheetTable.cxx @@ -753,11 +753,13 @@ void StyleSheetTable::lcl_sprm(Sprm & rSprm) { if (nSprmId == NS_ooxml::LN_CT_Style_pPr) m_pImpl->m_rDMapper.enableInteropGrabBag("pPr"); + else if (nSprmId == NS_ooxml::LN_CT_Style_rPr) + m_pImpl->m_rDMapper.enableInteropGrabBag("rPr"); } m_pImpl->m_rDMapper.sprmWithProps( rSprm, pProps ); if (m_pImpl->m_pCurrentEntry->nStyleTypeCode == STYLE_TYPE_TABLE) { - if (nSprmId == NS_ooxml::LN_CT_Style_pPr) + if (nSprmId == NS_ooxml::LN_CT_Style_pPr || nSprmId == NS_ooxml::LN_CT_Style_rPr) { TableStyleSheetEntry* pTableEntry = static_cast<TableStyleSheetEntry *>(m_pImpl->m_pCurrentEntry.get()); pTableEntry->AppendInteropGrabBag(m_pImpl->m_rDMapper.getInteropGrabBag()); diff --git a/writerfilter/source/dmapper/ThemeTable.cxx b/writerfilter/source/dmapper/ThemeTable.cxx index bd89130ca5a7..06a492337b37 100644 --- a/writerfilter/source/dmapper/ThemeTable.cxx +++ b/writerfilter/source/dmapper/ThemeTable.cxx @@ -142,6 +142,30 @@ void ThemeTable::lcl_entry(int /*pos*/, writerfilter::Reference<Properties>::Poi #endif } +OUString ThemeTable::getStringForTheme(const Id id) +{ + std::map<sal_uInt32, OUString> tmpThemeFontMap; + switch (id) + { + case NS_ooxml::LN_Value_ST_Theme_majorEastAsia: + return OUString("majorEastAsia"); + case NS_ooxml::LN_Value_ST_Theme_majorBidi: + return OUString("majorBidi"); + case NS_ooxml::LN_Value_ST_Theme_majorAscii: + return OUString("majorAscii"); + case NS_ooxml::LN_Value_ST_Theme_majorHAnsi: + return OUString("majorHAnsi"); + case NS_ooxml::LN_Value_ST_Theme_minorEastAsia: + return OUString("minorEastAsia"); + case NS_ooxml::LN_Value_ST_Theme_minorBidi: + return OUString("minorBidi"); + case NS_ooxml::LN_Value_ST_Theme_minorAscii: + return OUString("minorAscii"); + case NS_ooxml::LN_Value_ST_Theme_minorHAnsi: + return OUString("minorHAnsi"); + } + return OUString(); +} const OUString ThemeTable::getFontNameForTheme(const Id id) const { std::map<sal_uInt32, OUString> tmpThemeFontMap; diff --git a/writerfilter/source/dmapper/ThemeTable.hxx b/writerfilter/source/dmapper/ThemeTable.hxx index 2f1d83ecb024..75145555f576 100644 --- a/writerfilter/source/dmapper/ThemeTable.hxx +++ b/writerfilter/source/dmapper/ThemeTable.hxx @@ -40,6 +40,7 @@ public: virtual ~ThemeTable(); const OUString getFontNameForTheme(const Id id) const; + static OUString getStringForTheme(const Id id); private: // Properties |