sw/qa/extras/ooxmlexport/data/theme-preservation.docx |binary sw/qa/extras/ooxmlexport/ooxmlexport.cxx | 6 +++++ sw/source/filter/ww8/docxattributeoutput.cxx | 6 +++++ writerfilter/source/dmapper/DomainMapper.cxx | 19 ++++++++++-------- writerfilter/source/dmapper/DomainMapper_Impl.cxx | 17 ++++++++++++++++ writerfilter/source/dmapper/DomainMapper_Impl.hxx | 5 ++++ writerfilter/source/dmapper/PropertyIds.cxx | 1 writerfilter/source/dmapper/PropertyIds.hxx | 1 8 files changed, 47 insertions(+), 8 deletions(-)
New commits: commit 32210fc19324c659603e1dfed1ed006072ccf22f Author: Jacobo Aragunde Pérez <jaragu...@igalia.com> Date: Mon Feb 10 20:55:53 2014 +0100 writerfilter: legibility improvement regarding grabbag use Change-Id: I01b99887dc1e94616633ae6509e13ec951fd5485 diff --git a/writerfilter/source/dmapper/DomainMapper.cxx b/writerfilter/source/dmapper/DomainMapper.cxx index 2c96ada..bdf3565 100644 --- a/writerfilter/source/dmapper/DomainMapper.cxx +++ b/writerfilter/source/dmapper/DomainMapper.cxx @@ -1911,11 +1911,13 @@ void DomainMapper::sprmWithProps( Sprm& rSprm, PropertyMapPtr rContext, SprmType case NS_ooxml::LN_CT_Style_rPr: case NS_ooxml::LN_CT_PPr_rPr: case NS_ooxml::LN_CT_PPrBase_numPr: + { + bool bTempGrabBag = !m_pImpl->isInteropGrabBagEnabled(); if (nSprmId == NS_ooxml::LN_CT_PPr_sectPr) m_pImpl->SetParaSectpr(true); - else if (nSprmId == NS_ooxml::LN_EG_RPrBase_color && m_pImpl->m_aInteropGrabBagName.isEmpty()) - // if DomainMapper grab bag is not enabled, enable it temporarilly - m_pImpl->m_aInteropGrabBagName = OUString ("TempColorPropsGrabBag"); + else if (nSprmId == NS_ooxml::LN_EG_RPrBase_color && bTempGrabBag) + // if DomainMapper grab bag is not enabled, enable it temporarily + m_pImpl->enableInteropGrabBag("TempColorPropsGrabBag"); resolveSprmProps(*this, rSprm); if (nSprmId == NS_ooxml::LN_CT_PPrBase_spacing) m_pImpl->appendGrabBag(m_pImpl->m_aInteropGrabBag, "spacing", m_pImpl->m_aSubInteropGrabBag); @@ -1937,16 +1939,15 @@ void DomainMapper::sprmWithProps( Sprm& rSprm, PropertyMapPtr rContext, SprmType else if (aIter->Name == "themeTint") m_pImpl->GetTopContext()->Insert(PROP_CHAR_THEME_COLOR_TINT, aIter->Value, true, CHAR_GRAB_BAG); } - if (m_pImpl->m_aInteropGrabBagName == "TempColorPropsGrabBag") - { + if (bTempGrabBag) //disable and clear DomainMapper grab bag if it wasn't enabled before - m_pImpl->m_aInteropGrabBagName = OUString(); - m_pImpl->m_aSubInteropGrabBag.clear(); - } + m_pImpl->disableInteropGrabBag(); + m_pImpl->appendGrabBag(m_pImpl->m_aInteropGrabBag, "color", m_pImpl->m_aSubInteropGrabBag); } else if (nSprmId == NS_ooxml::LN_CT_PPrBase_ind) m_pImpl->appendGrabBag(m_pImpl->m_aInteropGrabBag, "ind", m_pImpl->m_aSubInteropGrabBag); + } break; case NS_ooxml::LN_CT_PPrBase_wordWrap: m_pImpl->appendGrabBag(m_pImpl->m_aInteropGrabBag, "wordWrap", ""); diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx b/writerfilter/source/dmapper/DomainMapper_Impl.cxx index 8b7dc2d..12855fe 100644 --- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx +++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx @@ -4194,6 +4194,23 @@ bool DomainMapper_Impl::IsNewDoc() return m_bIsNewDoc; } +void DomainMapper_Impl::enableInteropGrabBag(OUString aName) +{ + m_aInteropGrabBagName = aName; +} + +void DomainMapper_Impl::disableInteropGrabBag() +{ + m_aInteropGrabBagName = ""; + m_aInteropGrabBag.clear(); + m_aSubInteropGrabBag.clear(); +} + +bool DomainMapper_Impl::isInteropGrabBagEnabled() +{ + return !(m_aInteropGrabBagName.isEmpty()); +} + void DomainMapper_Impl::appendGrabBag(std::vector<beans::PropertyValue>& rInteropGrabBag, OUString aKey, OUString aValue) { if (m_aInteropGrabBagName.isEmpty()) diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.hxx b/writerfilter/source/dmapper/DomainMapper_Impl.hxx index 0a14054..e08fa97 100644 --- a/writerfilter/source/dmapper/DomainMapper_Impl.hxx +++ b/writerfilter/source/dmapper/DomainMapper_Impl.hxx @@ -731,6 +731,11 @@ public: void appendGrabBag(std::vector<beans::PropertyValue>& rInteropGrabBag, OUString aKey, OUString aValue); void appendGrabBag(std::vector<beans::PropertyValue>& rInteropGrabBag, OUString aKey, std::vector<beans::PropertyValue>& rValue); + /// Enable, disable an check status of grabbags + void enableInteropGrabBag(OUString aName); + void disableInteropGrabBag(); + bool isInteropGrabBagEnabled(); + /// Name of m_aInteropGrabBag. OUString m_aInteropGrabBagName; commit 05506b377a81bcbdd0191aa592f17987f2ddcd34 Author: Jacobo Aragunde Pérez <jaragu...@igalia.com> Date: Mon Feb 10 20:33:11 2014 +0100 ooxml: preserve font theme color tint property Change-Id: I5cbc8fda63a9fd2999555d5a46ea3a063685ffc7 diff --git a/sw/qa/extras/ooxmlexport/data/theme-preservation.docx b/sw/qa/extras/ooxmlexport/data/theme-preservation.docx index 778e106..1c94b47 100644 Binary files a/sw/qa/extras/ooxmlexport/data/theme-preservation.docx and b/sw/qa/extras/ooxmlexport/data/theme-preservation.docx differ diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx index ce4ff79..f6e168b 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx @@ -2098,6 +2098,10 @@ DECLARE_OOXMLEXPORT_TEST(testThemePreservation, "theme-preservation.docx") // check the font theme values in style definitions assertXPath(pXmlStyles, "/w:styles/w:style[1]/w:rPr/w:rFonts", "eastAsiaTheme", "minorEastAsia"); + // check the color theme values in style definitions + assertXPath(pXmlStyles, "/w:styles/w:style[@w:styleId='Custom1']/w:rPr/w:color", "themeColor", "accent1"); + assertXPath(pXmlStyles, "/w:styles/w:style[@w:styleId='Custom1']/w:rPr/w:color", "themeTint", "99"); + // check direct format font theme values have been preserved xmlDocPtr pXmlDocument = parseExport("word/document.xml"); if (!pXmlDocument) @@ -2109,6 +2113,8 @@ DECLARE_OOXMLEXPORT_TEST(testThemePreservation, "theme-preservation.docx") assertXPath(pXmlDocument, "/w:document/w:body/w:p[4]/w:r[1]/w:rPr/w:color", "themeColor", "accent3"); OUString sThemeShade = getXPath(pXmlDocument, "/w:document/w:body/w:p[4]/w:r[1]/w:rPr/w:color", "themeShade"); CPPUNIT_ASSERT_EQUAL(sThemeShade.toInt32(16), sal_Int32(0xbf)); + assertXPath(pXmlDocument, "/w:document/w:body/w:p[7]/w:r[1]/w:rPr/w:color", "themeColor", "accent1"); + assertXPath(pXmlDocument, "/w:document/w:body/w:p[7]/w:r[1]/w:rPr/w:color", "themeTint", "99"); // check the themeFontLang values in settings file xmlDocPtr pXmlSettings = parseExport("word/settings.xml"); diff --git a/sw/source/filter/ww8/docxattributeoutput.cxx b/sw/source/filter/ww8/docxattributeoutput.cxx index 3733c7c..6e57286 100644 --- a/sw/source/filter/ww8/docxattributeoutput.cxx +++ b/sw/source/filter/ww8/docxattributeoutput.cxx @@ -6196,6 +6196,12 @@ void DocxAttributeOutput::CharGrabBag( const SfxGrabBagItem& rItem ) AddToAttrList( m_pColorAttrList, FSNS( XML_w, XML_themeShade ), OUStringToOString( str, RTL_TEXTENCODING_UTF8 ).getStr() ); } + else if ( i->first == "CharThemeColorTint" ) + { + i->second >>= str; + AddToAttrList( m_pColorAttrList, FSNS( XML_w, XML_themeTint ), + OUStringToOString( str, RTL_TEXTENCODING_UTF8 ).getStr() ); + } else if( i->first == "CharThemeFontNameCs" || i->first == "CharThemeFontNameAscii" || i->first == "CharThemeFontNameEastAsia" || diff --git a/writerfilter/source/dmapper/DomainMapper.cxx b/writerfilter/source/dmapper/DomainMapper.cxx index bade872..2c96ada 100644 --- a/writerfilter/source/dmapper/DomainMapper.cxx +++ b/writerfilter/source/dmapper/DomainMapper.cxx @@ -1934,6 +1934,8 @@ void DomainMapper::sprmWithProps( Sprm& rSprm, PropertyMapPtr rContext, SprmType m_pImpl->GetTopContext()->Insert(PROP_CHAR_THEME_COLOR, aIter->Value, true, CHAR_GRAB_BAG); else if (aIter->Name == "themeShade") m_pImpl->GetTopContext()->Insert(PROP_CHAR_THEME_COLOR_SHADE, aIter->Value, true, CHAR_GRAB_BAG); + else if (aIter->Name == "themeTint") + m_pImpl->GetTopContext()->Insert(PROP_CHAR_THEME_COLOR_TINT, aIter->Value, true, CHAR_GRAB_BAG); } if (m_pImpl->m_aInteropGrabBagName == "TempColorPropsGrabBag") { diff --git a/writerfilter/source/dmapper/PropertyIds.cxx b/writerfilter/source/dmapper/PropertyIds.cxx index 38c834b..004ff56 100644 --- a/writerfilter/source/dmapper/PropertyIds.cxx +++ b/writerfilter/source/dmapper/PropertyIds.cxx @@ -365,6 +365,7 @@ OUString PropertyNameSupplier::GetName( PropertyIds eId ) const case PROP_TOC_BOOKMARK: sName = "TOCBookmark"; break; case PROP_TOC_NEW_LINE: sName = "TOCNewLine"; break; case PROP_TOC_PARAGRAPH_OUTLINE_LEVEL : sName = "TOCParagraphOutlineLevel"; break; + case PROP_CHAR_THEME_COLOR_TINT : sName = "CharThemeColorTint"; break; } ::std::pair<PropertyNameMap_t::iterator,bool> aInsertIt = m_pImpl->aNameMap.insert( PropertyNameMap_t::value_type( eId, sName )); diff --git a/writerfilter/source/dmapper/PropertyIds.hxx b/writerfilter/source/dmapper/PropertyIds.hxx index 75db43e..f90f7df 100644 --- a/writerfilter/source/dmapper/PropertyIds.hxx +++ b/writerfilter/source/dmapper/PropertyIds.hxx @@ -336,6 +336,7 @@ enum PropertyIds ,PROP_TOC_BOOKMARK ,PROP_TOC_NEW_LINE ,PROP_TOC_PARAGRAPH_OUTLINE_LEVEL + ,PROP_CHAR_THEME_COLOR_TINT }; struct PropertyNameSupplier_Impl; class PropertyNameSupplier
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits