summaryrefslogtreecommitdiff
path: root/writerfilter
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@collabora.co.uk>2013-10-29 10:54:55 +0100
committerMiklos Vajna <vmiklos@collabora.co.uk>2013-10-29 11:12:39 +0100
commitb103366b92845bde1aff9140c3f6ac2af5597893 (patch)
tree706834178be744d43ff84e1976648ce40d40f6b2 /writerfilter
parentfe6f195f04b801d4dd47068de1493167a3cb0dcc (diff)
DOCX import: store table style's rPr in InteropGrabBag
Change-Id: Iadc1831b60c4bd506e34eac42ea693f399973942
Diffstat (limited to 'writerfilter')
-rw-r--r--writerfilter/source/dmapper/DomainMapper.cxx7
-rw-r--r--writerfilter/source/dmapper/StyleSheetTable.cxx4
-rw-r--r--writerfilter/source/dmapper/ThemeTable.cxx24
-rw-r--r--writerfilter/source/dmapper/ThemeTable.hxx1
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