From 128aeab30eb768ea11d88a24139284b6901cf60c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Aragunde=20P=C3=A9rez?= Date: Sun, 22 Dec 2013 18:55:43 +0100 Subject: [PATCH] ooxml: Preserve paragraph theme fill attribute The theme fill attribute and the original fill color are saved to the paragraph grab bag during the import. On export, the original fill color and the current one are compared to know if the user has changed the fill color during the edition. In that case, the theme fill attribute and the original color are dropped. Some methods related to the grab bag management were added to CellColorHandler for convenience. Added a unit test for this attribute. Change-Id: Ic0514ce1d2f290fb0aef5ed86327c1f03f31f20c --- .../ooxmlexport/data/theme-preservation.docx | Bin 14739 -> 14798 bytes sw/qa/extras/ooxmlexport/ooxmlexport.cxx | 3 + sw/source/filter/ww8/docxattributeoutput.cxx | 53 ++++++++++++++++-- sw/source/filter/ww8/docxattributeoutput.hxx | 2 + .../source/dmapper/CellColorHandler.cxx | 11 ++++ .../source/dmapper/CellColorHandler.hxx | 2 + writerfilter/source/dmapper/DomainMapper.cxx | 8 +++ writerfilter/source/dmapper/PropertyIds.cxx | 1 + writerfilter/source/dmapper/PropertyIds.hxx | 1 + 9 files changed, 77 insertions(+), 4 deletions(-) diff --git a/sw/qa/extras/ooxmlexport/data/theme-preservation.docx b/sw/qa/extras/ooxmlexport/data/theme-preservation.docx index ff7c5700c965db692ed7c10b019033948cb22734..778e10646ed3f14d7e0da65eaa35222054965966 100644 GIT binary patch delta 3601 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 delta 3569 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 I^hWhy)Tyu!LYJwX% zUie6szHqk_G&v)GO?gZ7$f0Pl*T3;e?2zzf=K0AUcHvh^Lm$24ow=dG0T&p{YJGL0 z?a1K!^`*YpI^AMe6(&$Y>Nw*g=jkQ4c+m~E0eet$v>w4nlj&WwZb)R+1Aas0VHt#K zWBhcY+d_7~OB*3%rjQ@Zog_up0c_>iNEnqD$DyW_&!$Qnrq~~cR31eT>6O>eSulK* zVn=aL=Gg$lnLtJ#ElRb5`xfRRN^Bfo-2~p&mS#DaNWty~^oKzr)V>zy3&^gz)2CmEG ze7K|xucE+zmGqI0jn%ec()7BiD&)|k_}<1Y)8MnqbRNy+ojQvo3Y8o5Ovmmn zSn3DZJMV_;<#oH_$>L=b);@1vuNk)PLeT$GW$PGTd3rBp^8E9K&`&2h4uWs;j%fd5 z-K&d_Z~mhbB4P>jg6s&@e;x?kA}7cBuNoo;0A|?%0Osr2KM{ncmKWjtPo7Z!-!c8^ zL(m5Dszll7m-0HKZ+Wjh)g>zpdTrS zasK=4*S+9tarTcL`xAcXA_Z0AQwj8v0)+TT5-p&pN~DT*R21g?@1n0Y6Yvk(getRun(getParagraph(4, "Direct format font"), 1), "CharFontName")); CPPUNIT_ASSERT_EQUAL(OUString("Trebuchet MS"), getProperty(getParagraph(5, "Major theme font"), "CharFontName")); + + // check the paragraph background theme color has been preserved + assertXPath(pXmlDocument, "/w:document/w:body/w:p[6]/w:pPr/w:shd", "themeFill", "text2"); } DECLARE_OOXMLEXPORT_TEST(testcantSplit, "2_table_doc.docx") diff --git a/sw/source/filter/ww8/docxattributeoutput.cxx b/sw/source/filter/ww8/docxattributeoutput.cxx index 7daf7888fddc..29a6cd45b84d 100644 --- a/sw/source/filter/ww8/docxattributeoutput.cxx +++ b/sw/source/filter/ww8/docxattributeoutput.cxx @@ -694,6 +694,14 @@ void DocxAttributeOutput::WriteCollectedParagraphProperties() m_pSerializer->singleElementNS( XML_w, XML_spacing, xAttrList ); } + + if ( m_pBackgroundAttrList ) + { + XFastAttributeListRef xAttrList( m_pBackgroundAttrList ); + m_pBackgroundAttrList = NULL; + + m_pSerializer->singleElementNS( XML_w, XML_shd, xAttrList ); + } } void DocxAttributeOutput::EndParagraphProperties( const SwRedlineData* pRedlineData, const SwRedlineData* pRedlineParagraphMarkerDeleted, const SwRedlineData* pRedlineParagraphMarkerInserted ) @@ -5769,10 +5777,24 @@ void DocxAttributeOutput::FormatBackground( const SvxBrushItem& rBrush ) } else if ( !m_rExport.bOutPageDescs ) { - m_pSerializer->singleElementNS( XML_w, XML_shd, - FSNS( XML_w, XML_fill ), sColor.getStr( ), - FSNS( XML_w, XML_val ), "clear", - FSEND ); + if( !m_pBackgroundAttrList ) + m_pBackgroundAttrList = m_pSerializer->createAttrList(); + + // compare fill color with the original fill color + OString sOriginalFill = rtl::OUStringToOString( + m_pBackgroundAttrList->getOptionalValue( FSNS( XML_w, XML_fill ) ), RTL_TEXTENCODING_UTF8 ); + if( sOriginalFill.isEmpty() ) + { + m_pBackgroundAttrList->add( FSNS( XML_w, XML_fill ), sColor.getStr() ); + } + else if ( sOriginalFill != sColor ) + { + // fill was modified during edition, theme fill attribute must be dropped + delete m_pBackgroundAttrList; + m_pBackgroundAttrList = m_pSerializer->createAttrList(); + m_pBackgroundAttrList->add( FSNS( XML_w, XML_fill ), sColor.getStr() ); + } + m_pBackgroundAttrList->add( FSNS( XML_w, XML_val ), "clear" ); } } @@ -6109,6 +6131,27 @@ void DocxAttributeOutput::ParaGrabBag(const SfxGrabBagItem& rItem) m_nParaAfterSpacing = MM100_TO_TWIP(m_nParaAfterSpacing); SAL_INFO("sw.ww8", "DocxAttributeOutput::ParaGrabBag: property =" << i->first << " : m_nParaBeforeSpacing= " << m_nParaAfterSpacing); } + else if (i->first == "CharThemeFill") + { + uno::Sequence aGrabBagSeq; + i->second >>= aGrabBagSeq; + OUString sThemeFill, sOriginalFill; + for (sal_Int32 j=0; j < aGrabBagSeq.getLength(); ++j) + { + if (aGrabBagSeq[j].Name == "themeFill") + aGrabBagSeq[j].Value >>= sThemeFill; + else if (aGrabBagSeq[j].Name == "fill") + aGrabBagSeq[j].Value >>= sOriginalFill; + } + + if (!m_pBackgroundAttrList) + m_pBackgroundAttrList = m_pSerializer->createAttrList(); + + m_pBackgroundAttrList->add(FSNS(XML_w, XML_themeFill), + OUStringToOString(sThemeFill, RTL_TEXTENCODING_UTF8)); + m_pBackgroundAttrList->add(FSNS(XML_w, XML_fill), + OUStringToOString(sOriginalFill, RTL_TEXTENCODING_UTF8)); + } else SAL_INFO("sw.ww8", "DocxAttributeOutput::ParaGrabBag: unhandled grab bag property " << i->first ); } @@ -6236,6 +6279,7 @@ DocxAttributeOutput::DocxAttributeOutput( DocxExport &rExport, FSHelperPtr pSeri m_pFlyWrapAttrList( NULL ), m_pTextboxAttrList( NULL ), m_pColorAttrList( NULL ), + m_pBackgroundAttrList( NULL ), m_pFlyFrameSize(0), m_pFootnotesList( new ::docx::FootnotesList() ), m_pEndnotesList( new ::docx::FootnotesList() ), @@ -6293,6 +6337,7 @@ DocxAttributeOutput::~DocxAttributeOutput() delete m_pBodyPrAttrList, m_pBodyPrAttrList = NULL; delete m_pTextboxAttrList, m_pTextboxAttrList = NULL; delete m_pColorAttrList, m_pColorAttrList = NULL; + delete m_pBackgroundAttrList, m_pBackgroundAttrList = NULL; delete m_pFootnotesList, m_pFootnotesList = NULL; delete m_pEndnotesList, m_pEndnotesList = NULL; diff --git a/sw/source/filter/ww8/docxattributeoutput.hxx b/sw/source/filter/ww8/docxattributeoutput.hxx index 62ec9f4b7c05..a2a39772cfea 100644 --- a/sw/source/filter/ww8/docxattributeoutput.hxx +++ b/sw/source/filter/ww8/docxattributeoutput.hxx @@ -686,6 +686,8 @@ private: ::sax_fastparser::FastAttributeList *m_pTextboxAttrList; /// Attributes of the run color ::sax_fastparser::FastAttributeList *m_pColorAttrList; + /// Attributes of the paragraph background + ::sax_fastparser::FastAttributeList *m_pBackgroundAttrList; /// When exporting fly frames, this holds the real size of the frame. const Size* m_pFlyFrameSize; diff --git a/writerfilter/source/dmapper/CellColorHandler.cxx b/writerfilter/source/dmapper/CellColorHandler.cxx index da8c9cb75bdc..4204b5b6c2e7 100644 --- a/writerfilter/source/dmapper/CellColorHandler.cxx +++ b/writerfilter/source/dmapper/CellColorHandler.cxx @@ -359,6 +359,17 @@ beans::PropertyValue CellColorHandler::getInteropGrabBag() return aRet; } +void CellColorHandler::disableInteropGrabBag() +{ + m_aInteropGrabBagName = ""; + m_aInteropGrabBag.clear(); +} + +sal_Bool CellColorHandler::isInteropGrabBagEnabled() +{ + return !(m_aInteropGrabBagName.isEmpty()); +} + } //namespace dmapper } //namespace writerfilter diff --git a/writerfilter/source/dmapper/CellColorHandler.hxx b/writerfilter/source/dmapper/CellColorHandler.hxx index 7904a9deccdf..e3e1c0b59a7f 100644 --- a/writerfilter/source/dmapper/CellColorHandler.hxx +++ b/writerfilter/source/dmapper/CellColorHandler.hxx @@ -58,6 +58,8 @@ public: void enableInteropGrabBag(OUString aName); beans::PropertyValue getInteropGrabBag(); + void disableInteropGrabBag(); + sal_Bool isInteropGrabBagEnabled(); }; typedef boost::shared_ptr< CellColorHandler > CellColorHandlerPtr; }} diff --git a/writerfilter/source/dmapper/DomainMapper.cxx b/writerfilter/source/dmapper/DomainMapper.cxx index bc5d2bf2aedb..5e151e6e8843 100644 --- a/writerfilter/source/dmapper/DomainMapper.cxx +++ b/writerfilter/source/dmapper/DomainMapper.cxx @@ -1961,8 +1961,16 @@ void DomainMapper::sprmWithProps( Sprm& rSprm, PropertyMapPtr rContext, SprmType { CellColorHandlerPtr pCellColorHandler( new CellColorHandler ); pCellColorHandler->setOutputFormat( CellColorHandler::Paragraph ); + sal_Bool bEnableTempGrabBag = !pCellColorHandler->isInteropGrabBagEnabled(); + if( bEnableTempGrabBag ) + pCellColorHandler->enableInteropGrabBag( "TempShdPropsGrabBag" ); + pProperties->resolve(*pCellColorHandler); rContext->InsertProps(pCellColorHandler->getProperties()); + + rContext->Insert(PROP_CHAR_THEME_FILL, pCellColorHandler->getInteropGrabBag().Value, true, PARA_GRAB_BAG); + if(bEnableTempGrabBag) + pCellColorHandler->disableInteropGrabBag(); } } break; diff --git a/writerfilter/source/dmapper/PropertyIds.cxx b/writerfilter/source/dmapper/PropertyIds.cxx index a0c9dc48d5c7..a05249a5c6a3 100644 --- a/writerfilter/source/dmapper/PropertyIds.cxx +++ b/writerfilter/source/dmapper/PropertyIds.cxx @@ -358,6 +358,7 @@ OUString PropertyNameSupplier::GetName( PropertyIds eId ) const case PROP_CHAR_THEME_COLOR : sName = "CharThemeColor"; break; case PROP_CHAR_THEME_ORIGINAL_COLOR : sName = "CharThemeOriginalColor"; break; case PROP_CHAR_THEME_COLOR_SHADE : sName = "CharThemeColorShade"; break; + case PROP_CHAR_THEME_FILL : sName = "CharThemeFill"; break; } ::std::pair 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 e9ad035c6d3f..ae3e02a4c7b8 100644 --- a/writerfilter/source/dmapper/PropertyIds.hxx +++ b/writerfilter/source/dmapper/PropertyIds.hxx @@ -329,6 +329,7 @@ enum PropertyIds ,PROP_CHAR_THEME_COLOR ,PROP_CHAR_THEME_ORIGINAL_COLOR ,PROP_CHAR_THEME_COLOR_SHADE + ,PROP_CHAR_THEME_FILL }; struct PropertyNameSupplier_Impl; class PropertyNameSupplier