sc/source/filter/excel/xestyle.cxx | 59 ++++++++++++++++++++++++++----------- sc/source/filter/inc/xestyle.hxx | 23 ++++++++++---- 2 files changed, 58 insertions(+), 24 deletions(-)
New commits: commit 631b6e87ca95c0e2bcb2bdc34095c5f601af3469 Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Tue Aug 14 22:50:05 2012 +0200 check for non existing style entries, fdo#53339 Change-Id: I95bbb3ad89eedebbcd45b4eefd26b46d5d8cd05f diff --git a/sc/source/filter/excel/xestyle.cxx b/sc/source/filter/excel/xestyle.cxx index 01f0b0f..9bfb1ca 100644 --- a/sc/source/filter/excel/xestyle.cxx +++ b/sc/source/filter/excel/xestyle.cxx @@ -2902,7 +2902,12 @@ XclExpDxfs::XclExpDxfs( const XclExpRoot& rRoot ) { maStyleNameToDxfId.insert(std::pair<rtl::OUString, sal_Int32>(aStyleName, nIndex)); - SfxItemSet& rSet = rRoot.GetDoc().GetStyleSheetPool()->Find(aStyleName)->GetItemSet(); + std::cout << "Style" << aStyleName << std::endl; + SfxStyleSheetBase* pStyle = rRoot.GetDoc().GetStyleSheetPool()->Find(aStyleName); + if(!pStyle) + continue; + + SfxItemSet& rSet = pStyle->GetItemSet(); XclExpCellBorder* pBorder = new XclExpCellBorder; if (!pBorder->FillFromItemSet( rSet, GetPalette(), GetBiff()) ) commit 97c8aaee3afa65bf7106cf175af87841147ca6e5 Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Tue Aug 14 22:19:15 2012 +0200 use boost::scoped_ptr instead of raw pointers Change-Id: Ie09c66a414ec5a949bf8b0e5a32a3bd0d603bd06 diff --git a/sc/source/filter/excel/xestyle.cxx b/sc/source/filter/excel/xestyle.cxx index dacbbbc..01f0b0f 100644 --- a/sc/source/filter/excel/xestyle.cxx +++ b/sc/source/filter/excel/xestyle.cxx @@ -3002,12 +3002,6 @@ XclExpDxf::XclExpDxf( const XclExpRoot& rRoot, XclExpCellAlign* pAlign, XclExpCe XclExpDxf::~XclExpDxf() { - delete mpAlign; - delete mpBorder; - delete mpFont; - delete mpNumberFmt; - delete mpProt; - delete mpColor; } void XclExpDxf::SaveXml( XclExpXmlStream& rStrm ) diff --git a/sc/source/filter/inc/xestyle.hxx b/sc/source/filter/inc/xestyle.hxx index a255b98..2d064f2 100644 --- a/sc/source/filter/inc/xestyle.hxx +++ b/sc/source/filter/inc/xestyle.hxx @@ -748,12 +748,12 @@ public: virtual void SaveXml( XclExpXmlStream& rStrm ); private: - XclExpCellAlign* mpAlign; - XclExpCellBorder* mpBorder; - XclExpFont* mpFont; - XclExpNumFmt* mpNumberFmt; - XclExpCellProt* mpProt; - XclExpColor* mpColor; + boost::scoped_ptr<XclExpCellAlign> mpAlign; + boost::scoped_ptr<XclExpCellBorder> mpBorder; + boost::scoped_ptr<XclExpFont> mpFont; + boost::scoped_ptr<XclExpNumFmt> mpNumberFmt; + boost::scoped_ptr<XclExpCellProt> mpProt; + boost::scoped_ptr<XclExpColor> mpColor; }; class XclExpDxfs : public XclExpRecordBase, protected XclExpRoot commit 232f2513fc79120ab2625db867f49c35838830ef Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Tue Aug 14 22:13:50 2012 +0200 correctly export background colors of cond formats to xlsx Change-Id: I6d4b596ba3d611c8b795d48ca59378c4f4136611 diff --git a/sc/source/filter/excel/xestyle.cxx b/sc/source/filter/excel/xestyle.cxx index 5e2e011..dacbbbc 100644 --- a/sc/source/filter/excel/xestyle.cxx +++ b/sc/source/filter/excel/xestyle.cxx @@ -1885,6 +1885,33 @@ void XclExpCellArea::SaveXml( XclExpXmlStream& rStrm ) const rStyleSheet->endElement( XML_fill ); } + +bool XclExpColor::FillFromItemSet( const SfxItemSet& rItemSet ) +{ + if( !ScfTools::CheckItem( rItemSet, ATTR_BACKGROUND, true ) ) + return false; + + const SvxBrushItem& rBrushItem = GETITEM( rItemSet, SvxBrushItem, ATTR_BACKGROUND ); + maColor = rBrushItem.GetColor(); + + return true; +} + +void XclExpColor::SaveXml( XclExpXmlStream& rStrm ) const +{ + sax_fastparser::FSHelperPtr& rStyleSheet = rStrm.GetCurrentStream(); + rStyleSheet->startElement( XML_fill, + FSEND ); + rStyleSheet->startElement( XML_patternFill, + FSEND ); + rStyleSheet->singleElement( XML_bgColor, + XML_rgb, XclXmlUtils::ToOString(maColor).getStr(), + FSEND ); + + rStyleSheet->endElement( XML_patternFill ); + rStyleSheet->endElement( XML_fill ); +} + // ---------------------------------------------------------------------------- XclExpXFId::XclExpXFId() : @@ -2898,11 +2925,11 @@ XclExpDxfs::XclExpDxfs( const XclExpRoot& rRoot ) pCellProt = NULL; } - XclExpCellArea* pCellArea = new XclExpCellArea; - if(!pCellArea->FillFromItemSet( rSet, GetPalette(), GetBiff() )) + XclExpColor* pColor = new XclExpColor(); + if(!pColor->FillFromItemSet( rSet )) { - delete pCellArea; - pCellArea = NULL; + delete pColor; + pColor = NULL; } XclExpFont* pFont = NULL; @@ -2923,7 +2950,7 @@ XclExpDxfs::XclExpDxfs( const XclExpRoot& rRoot ) ++nNumFmtIndex; } - maDxf.push_back(new XclExpDxf( rRoot, pAlign, pBorder, pFont, pNumFormat, pCellProt, pCellArea )); + maDxf.push_back(new XclExpDxf( rRoot, pAlign, pBorder, pFont, pNumFormat, pCellProt, pColor )); ++nIndex; } @@ -2962,16 +2989,15 @@ void XclExpDxfs::SaveXml( XclExpXmlStream& rStrm ) // ============================================================================ XclExpDxf::XclExpDxf( const XclExpRoot& rRoot, XclExpCellAlign* pAlign, XclExpCellBorder* pBorder, - XclExpFont* pFont, XclExpNumFmt* pNumberFmt, XclExpCellProt* pProt, XclExpCellArea* pCellArea) + XclExpFont* pFont, XclExpNumFmt* pNumberFmt, XclExpCellProt* pProt, XclExpColor* pColor) : XclExpRoot( rRoot ), mpAlign(pAlign), mpBorder(pBorder), mpFont(pFont), mpNumberFmt(pNumberFmt), mpProt(pProt), - mpCellArea(pCellArea) + mpColor(pColor) { - } XclExpDxf::~XclExpDxf() @@ -2981,7 +3007,7 @@ XclExpDxf::~XclExpDxf() delete mpFont; delete mpNumberFmt; delete mpProt; - delete mpCellArea; + delete mpColor; } void XclExpDxf::SaveXml( XclExpXmlStream& rStrm ) @@ -2999,8 +3025,8 @@ void XclExpDxf::SaveXml( XclExpXmlStream& rStrm ) mpNumberFmt->SaveXml(rStrm); if (mpProt) mpProt->SaveXml(rStrm); - if (mpCellArea) - mpCellArea->SaveXml(rStrm); + if (mpColor) + mpColor->SaveXml(rStrm); rStyleSheet->endElement( XML_dxf ); } diff --git a/sc/source/filter/inc/xestyle.hxx b/sc/source/filter/inc/xestyle.hxx index ba7dc67..a255b98 100644 --- a/sc/source/filter/inc/xestyle.hxx +++ b/sc/source/filter/inc/xestyle.hxx @@ -427,6 +427,15 @@ struct XclExpCellArea : public XclCellArea void SaveXml( XclExpXmlStream& rStrm ) const; }; +struct XclExpColor +{ + Color maColor; + + bool FillFromItemSet( const SfxItemSet& rItemSet ); + + void SaveXml( XclExpXmlStream& rStrm ) const; +}; + // ---------------------------------------------------------------------------- /** A combination of unique XF identifier with real Excel XF index. */ @@ -733,7 +742,7 @@ class XclExpDxf : public XclExpRecordBase, protected XclExpRoot { public: XclExpDxf( const XclExpRoot& rRoot, XclExpCellAlign* pAlign, XclExpCellBorder* pBorder, - XclExpFont* pFont, XclExpNumFmt* pNumberFmt, XclExpCellProt* pProt, XclExpCellArea* pCellArea); + XclExpFont* pFont, XclExpNumFmt* pNumberFmt, XclExpCellProt* pProt, XclExpColor* pColor); virtual ~XclExpDxf(); virtual void SaveXml( XclExpXmlStream& rStrm ); @@ -744,7 +753,7 @@ private: XclExpFont* mpFont; XclExpNumFmt* mpNumberFmt; XclExpCellProt* mpProt; - XclExpCellArea* mpCellArea; + XclExpColor* mpColor; }; class XclExpDxfs : public XclExpRecordBase, protected XclExpRoot _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits