[Libreoffice-commits] .: 2 commits - sc/source
Markus Mohrhard
mmohrhard at kemper.freedesktop.org
Tue May 8 21:19:15 PDT 2012
sc/source/core/data/colorscale.cxx | 5 +++--
sc/source/core/data/documen4.cxx | 3 ++-
sc/source/filter/oox/condformatbuffer.cxx | 25 ++++++++++++++++++++++++-
3 files changed, 29 insertions(+), 4 deletions(-)
New commits:
commit 9cfab5c687b337b035179561af49c16eea93b459
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date: Wed May 9 06:17:47 2012 +0200
index is 1-based in this case
Change-Id: I74aae3f422423de09cb012e274f8d536f8b778f1
diff --git a/sc/source/core/data/colorscale.cxx b/sc/source/core/data/colorscale.cxx
index 4e74d1e..787690d 100644
--- a/sc/source/core/data/colorscale.cxx
+++ b/sc/source/core/data/colorscale.cxx
@@ -148,12 +148,13 @@ void ScColorScaleFormatList::AddFormat( ScColorScaleFormat* pFormat )
maColorScaleFormats.push_back( pFormat );
}
+// attention nFormat is 1 based, 0 is reserved for no format
ScColorScaleFormat* ScColorScaleFormatList::GetFormat(sal_uInt32 nFormat)
{
- if( nFormat >= size() )
+ if( nFormat > size() || !nFormat )
return NULL;
- return &maColorScaleFormats[nFormat];
+ return &maColorScaleFormats[nFormat-1];
}
ScColorScaleFormatList::iterator ScColorScaleFormatList::begin()
diff --git a/sc/source/core/data/documen4.cxx b/sc/source/core/data/documen4.cxx
index 7df52cc..b936699 100644
--- a/sc/source/core/data/documen4.cxx
+++ b/sc/source/core/data/documen4.cxx
@@ -629,6 +629,7 @@ sal_uLong ScDocument::AddCondFormat( const ScConditionalFormat& rNew )
}
//takes ownership
+// returns a 1-based index, 0 is reserved for no entry
sal_uLong ScDocument::AddColorScaleFormat( ScColorScaleFormat* pNew )
{
if(!pNew)
@@ -639,7 +640,7 @@ sal_uLong ScDocument::AddColorScaleFormat( ScColorScaleFormat* pNew )
mpColorScaleList->AddFormat( pNew );
- return mpColorScaleList->size()-1;
+ return mpColorScaleList->size();
}
sal_uLong ScDocument::AddValidationEntry( const ScValidationData& rNew )
commit a2a9f197f3f3e16ef5efa1d9c35e0d1fee4e3c71
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date: Wed May 9 06:15:34 2012 +0200
apply color scale to area during xlsx import
Change-Id: I8f616c85df0e9d33c74c7354dfcadbf55bb91dc7
diff --git a/sc/source/filter/oox/condformatbuffer.cxx b/sc/source/filter/oox/condformatbuffer.cxx
index 7292245..e189c75 100644
--- a/sc/source/filter/oox/condformatbuffer.cxx
+++ b/sc/source/filter/oox/condformatbuffer.cxx
@@ -43,6 +43,7 @@
#include <com/sun/star/table/CellRangeAddress.hpp>
#include <com/sun/star/table/XCellRange.hpp>
#include <rtl/ustrbuf.hxx>
+#include <svl/intitem.hxx>
#include "oox/helper/attributelist.hxx"
#include "oox/helper/containerhelper.hxx"
#include "oox/helper/propertyset.hxx"
@@ -50,8 +51,15 @@
#include "addressconverter.hxx"
#include "biffinputstream.hxx"
#include "stylesbuffer.hxx"
+
#include "colorscale.hxx"
#include "document.hxx"
+#include "convuno.hxx"
+#include "docsh.hxx"
+#include "docfunc.hxx"
+#include "markdata.hxx"
+#include "docpool.hxx"
+#include "scitems.hxx"
#include <iostream>
@@ -654,7 +662,22 @@ void CondFormatRule::finalizeImport( const Reference< XSheetConditionalEntries >
ScColorScaleFormat* pFormat = new ScColorScaleFormat();
mpColor->AddEntries( pFormat );
- rDoc.AddColorScaleFormat(pFormat);
+ sal_Int32 nIndex = rDoc.AddColorScaleFormat(pFormat);
+
+ // apply attributes to cells
+ //
+ const ApiCellRangeList& rRanges = mrCondFormat.getRanges();
+ for( ApiCellRangeList::const_iterator itr = rRanges.begin(); itr != rRanges.end(); ++itr)
+ {
+ ScRange aRange;
+ ScUnoConversion::FillScRange(aRange, *itr);
+ ScPatternAttr aPattern( rDoc.GetPool() );
+ aPattern.GetItemSet().Put( SfxUInt32Item( ATTR_COLORSCALE, nIndex ) );
+ ScDocShell* pShell = static_cast<ScDocShell*>(rDoc.GetDocumentShell());
+ ScMarkData aMarkData;
+ aMarkData.SetMarkArea(aRange);
+ pShell->GetDocFunc().ApplyAttributes( aMarkData, aPattern, sal_True, sal_True );
+ }
}
}
More information about the Libreoffice-commits
mailing list