sc/inc/document.hxx | 2 + sc/source/core/data/document10.cxx | 50 +++++++++++++++++++++++++++++++ sc/source/ui/docshell/docsh.cxx | 5 +++ sc/source/ui/inc/docsh.hxx | 2 + svx/source/tbxctrls/SvxColorValueSet.cxx | 6 --- sw/source/core/doc/docfmt.cxx | 17 ++++++---- 6 files changed, 71 insertions(+), 11 deletions(-)
New commits: commit 7ced18afb479f880fa135802980e1f66dc832fd0 Author: Krisztian Pinter <pin.termina...@gmail.com> Date: Tue Jun 24 15:32:18 2014 +0200 Add loading document colors to Calc Change-Id: I06783b04dbbad2aa690820af1ca2cf05a1004f20 diff --git a/sc/inc/document.hxx b/sc/inc/document.hxx index 259d119..164f629d 100644 --- a/sc/inc/document.hxx +++ b/sc/inc/document.hxx @@ -1816,6 +1816,8 @@ public: void CopyCellValuesFrom( const ScAddress& rTopPos, const sc::CellValues& rSrc ); + std::vector<Color> GetDocColors(); + private: ScDocument(const ScDocument& r); // disabled with no definition diff --git a/sc/source/core/data/document10.cxx b/sc/source/core/data/document10.cxx index 4112bb9..8ecf3de 100644 --- a/sc/source/core/data/document10.cxx +++ b/sc/source/core/data/document10.cxx @@ -18,6 +18,12 @@ #include <tokenstringcontext.hxx> #include <poolhelp.hxx> +#include "dociter.hxx" +#include "patattr.hxx" +#include <svl/whiter.hxx> +#include <editeng/colritem.hxx> +#include "scitems.hxx" + // Add totally brand-new methods to this source file. bool ScDocument::IsMerged( const ScAddress& rPos ) const @@ -234,6 +240,50 @@ void ScDocument::CopyCellValuesFrom( const ScAddress& rTopPos, const sc::CellVal pTab->CopyCellValuesFrom(rTopPos.Col(), rTopPos.Row(), rSrc); } +std::vector<Color> ScDocument::GetDocColors() +{ + std::vector<Color> docColors; + + for( unsigned int nTabIx = 0; nTabIx < maTabs.size(); ++nTabIx ) + { + ScUsedAreaIterator aIt(this, nTabIx, 0, 0, MAXCOLCOUNT-1, MAXROWCOUNT-1); + + for( bool bIt = aIt.GetNext(); bIt; bIt = aIt.GetNext() ) + { + const ScPatternAttr* pPattern = aIt.GetPattern(); + + if( pPattern == 0 ) + continue; + + const SfxItemSet& rItemSet = pPattern->GetItemSet(); + + SfxWhichIter aIter( rItemSet ); + sal_uInt16 nWhich = aIter.FirstWhich(); + while( nWhich ) + { + const SfxPoolItem *pItem; + if( SFX_ITEM_SET == rItemSet.GetItemState( nWhich, false, &pItem ) ) + { + sal_uInt16 aWhich = pItem->Which(); + if( ATTR_FONT_COLOR == aWhich || + ATTR_BACKGROUND == aWhich ) + { + Color aColor( ((SvxColorItem*)pItem)->GetValue() ); + if( COL_AUTO != aColor.GetColor() && + std::find(docColors.begin(), docColors.end(), aColor) == docColors.end() ) + { + docColors.push_back( aColor ); + } + } + } + + nWhich = aIter.NextWhich(); + } + } + } + return docColors; +} + void ScDocument::SetCalcConfig( const ScCalcConfig& rConfig ) { maCalcConfig = rConfig; diff --git a/sc/source/ui/docshell/docsh.cxx b/sc/source/ui/docshell/docsh.cxx index 7ed1836..77d082a 100644 --- a/sc/source/ui/docshell/docsh.cxx +++ b/sc/source/ui/docshell/docsh.cxx @@ -209,6 +209,11 @@ void ScDocShell::FillClass( SvGlobalName* pClassName, } } +std::vector<Color> ScDocShell::GetDocColors() +{ + return aDocument.GetDocColors(); +} + void ScDocShell::DoEnterHandler() { ScTabViewShell* pViewSh = ScTabViewShell::GetActiveViewShell(); diff --git a/sc/source/ui/inc/docsh.hxx b/sc/source/ui/inc/docsh.hxx index 89706d2..246cf0c 100644 --- a/sc/source/ui/inc/docsh.hxx +++ b/sc/source/ui/inc/docsh.hxx @@ -203,6 +203,8 @@ public: sal_Int32 nFileFormat, bool bTemplate = false ) const SAL_OVERRIDE; + virtual std::vector<Color> GetDocColors(); + virtual bool InitNew( const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& ) SAL_OVERRIDE; virtual bool Load( SfxMedium& rMedium ) SAL_OVERRIDE; virtual bool LoadFrom( SfxMedium& rMedium ) SAL_OVERRIDE; commit 7f12b0e1f886b25d424f8df21cad8898957c6a5d Author: Krisztian Pinter <pin.termina...@gmail.com> Date: Thu Jun 19 18:26:54 2014 +0200 Get more color attributes for document colors in Writer Change-Id: I2005b434f20a56417105c7b26ce09155a7023023 diff --git a/sw/source/core/doc/docfmt.cxx b/sw/source/core/doc/docfmt.cxx index 86890b8..18626d2e 100644 --- a/sw/source/core/doc/docfmt.cxx +++ b/sw/source/core/doc/docfmt.cxx @@ -2599,14 +2599,19 @@ std::vector<Color> SwDoc::GetDocColors() while( nWhich ) { const SfxPoolItem *pItem; - if( SFX_ITEM_SET == pItemSet->GetItemState( nWhich, false, &pItem ) && - RES_CHRATR_COLOR == pItem->Which() ) + if( SFX_ITEM_SET == pItemSet->GetItemState( nWhich, false, &pItem ) ) { - Color aColor( ((SvxColorItem*)pItem)->GetValue() ); - if( COL_AUTO != aColor.GetColor() && - std::find(docColors.begin(), docColors.end(), aColor) == docColors.end() ) + sal_uInt16 aWhich = pItem->Which(); + if( RES_CHRATR_COLOR == aWhich || + RES_CHRATR_HIGHLIGHT == aWhich || + RES_BACKGROUND == aWhich ) { - docColors.push_back( aColor ); + Color aColor( ((SvxColorItem*)pItem)->GetValue() ); + if( COL_AUTO != aColor.GetColor() && + std::find(docColors.begin(), docColors.end(), aColor) == docColors.end() ) + { + docColors.push_back( aColor ); + } } } commit 5ae707cc498524bccfcbeecb653b0959990c4300 Author: Krisztian Pinter <pin.termina...@gmail.com> Date: Thu Jun 19 16:49:05 2014 +0200 Code cleanup Change-Id: Ib452a5cd716ef243e04f498d2fa23d0d389865c0 diff --git a/svx/source/tbxctrls/SvxColorValueSet.cxx b/svx/source/tbxctrls/SvxColorValueSet.cxx index 1ee94f1..b2ada21 100644 --- a/svx/source/tbxctrls/SvxColorValueSet.cxx +++ b/svx/source/tbxctrls/SvxColorValueSet.cxx @@ -90,14 +90,10 @@ void SvxColorValueSet::addEntriesForXColorList(const XColorList& rXColorList, sa void SvxColorValueSet::addEntriesForColorVector(const std::vector<Color>& rColorVector, sal_uInt32 nStartIndex) { - const sal_uInt32 nColorCount(rColorVector.size()); - - //for(sal_uInt32 nIndex(0); nIndex < nColorCount; nIndex++, nStartIndex++) for(std::vector<Color>::const_iterator it = rColorVector.begin(); it != rColorVector.end(); it++, nStartIndex++) { - const Color& rEntry = *it; - InsertItem(nStartIndex, rEntry, ""); + InsertItem(nStartIndex, *it, ""); } } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits