sc/inc/dbdataformatting.hxx | 24 +++++----- sc/source/core/data/fillinfo.cxx | 34 ++++++++++++++ sc/source/core/tool/dbdata2.cxx | 74 +++++++++---------------------- sc/source/core/tool/dbdataformatting.cxx | 53 ++++++++++++++++++++-- sc/source/filter/inc/stylesbuffer.hxx | 3 - sc/source/filter/oox/stylesbuffer.cxx | 25 ++++++++-- 6 files changed, 141 insertions(+), 72 deletions(-)
New commits: commit 219738ee4deee6204ed19c9681cde6c7579297c1 Author: Akash Shetye <shetyeak...@gmail.com> Date: Fri Aug 30 04:46:14 2013 +0530 Revised the code for cell style calculation Change-Id: Ib2a66148ec6461f3b8ce5a4de7dabcc78dadaea3 diff --git a/sc/source/core/tool/dbdata2.cxx b/sc/source/core/tool/dbdata2.cxx index 879437a..073dea2 100644 --- a/sc/source/core/tool/dbdata2.cxx +++ b/sc/source/core/tool/dbdata2.cxx @@ -16,14 +16,12 @@ OUString ScDBData::GetCellStyle( const ScAddress& rPos, bool bRowStripe ) //first see if the DB Range has any DB Formatting at all if( !HasFormatting() ) return OUString("Default"); + //Check if the bRowStripe specified applies? + if ( bRowStripe == true && !(mpTableFormatData->GetBandedRows()) ) + return OUString("Default");//Asked banded rows, but not banded + if ( bRowStripe == false && !(mpTableFormatData->GetBandedColumns()) ) + return OUString("Default");//asked banded cols, but not banded here //Calculating which style sheet is applicable to the give cell begins now - //Create a whole row stripe map - std::vector< OUString > aRowStripeSeq; - //Create a whole column stripe map - std::vector< OUString > aColStripeSeq; - //The above two vectors represent a whole row/col stripe by - //using consecutive entries of stylenames into the vector - //just as it would look like in a rendered single stripe. ScDBDataFormatting aDBFormatting; GetTableFormatting( aDBFormatting ); sal_Int32 i; @@ -31,6 +29,7 @@ OUString ScDBData::GetCellStyle( const ScAddress& rPos, bool bRowStripe ) sal_Int32 nSecondSize; OUString aFirstStyle; OUString aSecondStyle; + sal_Int32 nStyleIndex; if ( bRowStripe ) { //Fill the row stripe sequence @@ -38,65 +37,38 @@ OUString ScDBData::GetCellStyle( const ScAddress& rPos, bool bRowStripe ) aFirstStyle = aDBFormatting.GetFirstRowStripeStyle(); nSecondSize = aDBFormatting.GetSecondRowStripeSize(); aSecondStyle = aDBFormatting.GetSecondRowStripeStyle(); - for ( i = 1; i <= nFirstSize; ++i ) - { - //Add the first row stripe style to the RowStripeSeq vector nFirstSize - //many times. - aRowStripeSeq.push_back( aFirstStyle ); - } - for ( i = 1; i<= nSecondSize; ++i ) - { - //Similarly - aRowStripeSeq.push_back( aSecondStyle ); - } } - //Fill the column stripe sequence else { + //Fill the col stripe sequence nFirstSize = aDBFormatting.GetFirstColStripeSize(); aFirstStyle = aDBFormatting.GetFirstColStripeStyle(); nSecondSize = aDBFormatting.GetSecondColStripeSize(); aSecondStyle = aDBFormatting.GetSecondColStripeStyle(); - for ( i = 1; i<=nFirstSize; ++i ) - { - aColStripeSeq.push_back( aFirstStyle ); - } - for ( i = 1; i<=nSecondSize; ++i ) - { - aColStripeSeq.push_back( aSecondStyle ); - } } - //This approach of calculating the stripe sequence will be bad - //if stripe sizes are huge, they generally aren't. - //Now the math. - //We used 1-based addressing for this instead of the 0-based used in Calc if ( bRowStripe ) { - sal_Int32 nStyleIndex = ( rPos.Row() + 1 ) % ( aRowStripeSeq.size() ); - if ( nStyleIndex == 0 ) - { - //Return the last entry in the vector - return aRowStripeSeq[ ( aRowStripeSeq.size() - 1 ) ]; - } + nStyleIndex = ( rPos.Row() + 1 ) % ( nFirstSize + nSecondSize ); + } + else + { + nStyleIndex = ( rPos.Col() + 1 ) % ( nFirstSize + nSecondSize ); + } + if ( nStyleIndex == 0 ) + { + sal_Int32 nEntryNo = ( ( nFirstSize + nSecondSize ) ); + if ( nEntryNo <= nFirstSize ) + return aFirstStyle; else - { - //Return the nStyleIndex'th entry - return aRowStripeSeq[ ( nStyleIndex - 1) ]; - } + return aSecondStyle; } else { - sal_Int32 nStyleIndex = ( rPos.Row() + 1 ) % ( aRowStripeSeq.size() ); - if ( nStyleIndex == 0 ) - { - //Return the last entry in the vector - return aColStripeSeq[ ( aColStripeSeq.size() - 1 ) ]; - } + sal_Int32 nEntryNo = ( nStyleIndex ); + if ( nEntryNo <= nFirstSize ) + return aFirstStyle; else - { - //Return the nStyleIndex'th entry - return aColStripeSeq[ ( nStyleIndex - 1 ) ]; - } + return aSecondStyle; } } commit 9b09732f864d5599f1e85b5ba717d77595b1abd9 Author: Akash Shetye <shetyeak...@gmail.com> Date: Fri Aug 30 04:40:26 2013 +0530 Added support for importing stripe sizes as well Change-Id: I83b83d74b6241f4884461f4d07944946e1f25fe8 diff --git a/sc/source/filter/inc/stylesbuffer.hxx b/sc/source/filter/inc/stylesbuffer.hxx index c274d2d..44c4d68 100644 --- a/sc/source/filter/inc/stylesbuffer.hxx +++ b/sc/source/filter/inc/stylesbuffer.hxx @@ -789,7 +789,8 @@ typedef ::boost::shared_ptr< Dxf > DxfRef; struct TableStyleElementModel { - sal_Int32 maDxfId; + sal_Int32 nDxfId; + sal_Int32 nSize; OUString maStyleElementType; }; diff --git a/sc/source/filter/oox/stylesbuffer.cxx b/sc/source/filter/oox/stylesbuffer.cxx index 82f9315..c5ccdb4 100644 --- a/sc/source/filter/oox/stylesbuffer.cxx +++ b/sc/source/filter/oox/stylesbuffer.cxx @@ -2644,10 +2644,15 @@ void TableStyle::importTableStyleElement( const AttributeList& rAttribs ) //Get the table Style element type. OUString aStyleElementType = rAttribs.getXString( XML_type, OUString() ); //Extract the Dxf Id and create such a style - sal_Int32 aDxfId = static_cast< sal_Int32 >( rAttribs.getInteger( XML_dxfId, -1 ) ); - SAL_WARN_IF( (aDxfId == -1) ,"sc", "TableStyle::importTableStyleElement - DxfId not defined for table style element" ); + sal_Int32 nDxfId = static_cast< sal_Int32 >( rAttribs.getInteger( XML_dxfId, -1 ) ); + SAL_WARN_IF( (nDxfId == -1) ,"sc", "TableStyle::importTableStyleElement - DxfId not defined for table style element" ); + sal_Int32 nSize = static_cast< sal_Int32 >( rAttribs.getInteger( XML_size, -1 ) ); + SAL_WARN_IF( ( nSize == -1 ), "sc", "TableStyle::importTableStyleElement - Size not defined assuming as 1"); + if ( nSize == -1 ) + nSize = 1; TableStyleElementModel aTableStyleElementModel; - aTableStyleElementModel.maDxfId = aDxfId; + aTableStyleElementModel.nDxfId = nDxfId; + aTableStyleElementModel.nSize = nSize; aTableStyleElementModel.maStyleElementType = aStyleElementType; maStyleElementVector.push_back( aTableStyleElementModel ); } @@ -2668,15 +2673,27 @@ void TableStyle::finalizeImport() for( TableStyleElementModelVector::iterator itr = maStyleElementVector.begin(); itr!=maStyleElementVector.end(); ++itr) { //Should I stop on finding this missing feild or keep going? - OUString aDxfStyleName = getStyles().createDxfStyle( itr->maDxfId ); + OUString aDxfStyleName = getStyles().createDxfStyle( itr->nDxfId ); if( itr->maStyleElementType.equals("firstColumnStripe") ) + { mxTableFormatting->SetFirstColStripeStyle( aDxfStyleName ); + mxTableFormatting->SetFirstColStripeSize( itr->nSize ); + } else if( itr->maStyleElementType.equals("secondColumnStripe") ) + { mxTableFormatting->SetSecondColStripeStyle( aDxfStyleName ); + mxTableFormatting->SetSecondColStripeSize( itr->nSize ); + } else if( itr->maStyleElementType.equals("firstRowStripe") ) + { mxTableFormatting->SetFirstRowStripeStyle( aDxfStyleName ); + mxTableFormatting->SetFirstRowStripeSize( itr->nSize ); + } else if( itr->maStyleElementType.equals("secondRowStripe") ) + { mxTableFormatting->SetSecondRowStripeStyle( aDxfStyleName ); + mxTableFormatting->SetSecondRowStripeSize( itr->nSize ); + } } } commit cc5ab36c5ae3e9145261ec7645e2e798aa2fd95e Author: Akash Shetye <shetyeak...@gmail.com> Date: Fri Aug 30 04:39:20 2013 +0530 Adds the code to fill info to allow cell colouring. Change-Id: I5a037c97192ac40be9b76f7eb8ef550a2f7205b0 diff --git a/sc/source/core/data/fillinfo.cxx b/sc/source/core/data/fillinfo.cxx index 5f9b6ce..4a60e68 100644 --- a/sc/source/core/data/fillinfo.cxx +++ b/sc/source/core/data/fillinfo.cxx @@ -41,6 +41,7 @@ #include "stlpool.hxx" #include "cellvalue.hxx" #include "mtvcellfunc.hxx" +#include "dbdata.hxx" const sal_uInt16 ROWINFO_MAX = 1024; @@ -537,6 +538,39 @@ void ScDocument::FillInfo( pThisRowInfo->bEmptyBack = false; } + //Exp Code + //Overwrite this pBackground value + //Get cell style for this cell + if ( pDBCollection ) + { + ScDBCollection::NamedDBs& aNamedDBs = pDBCollection->getNamedDBs(); + ScDBData* pDBData = pDBCollection->GetDBAtCursor( nX, nCurRow, nTab, false ); + if ( pDBData && pDBData->HasFormatting() ) + { + ScDBDataFormatting aDBFormatting; + pDBData->GetTableFormatting( aDBFormatting ); + //Getting the applicable cell style name + //First for banded columns/lowest priority + OUString aCellStyleName; + if ( aDBFormatting.GetBandedColumns() ) + aCellStyleName = pDBData->GetCellStyle( ScAddress( nX, nCurRow, nTab ), false ); + //Second for banded rows/highest priority + if ( aDBFormatting.GetBandedRows() ) + aCellStyleName = pDBData->GetCellStyle( ScAddress( nX, nCurRow, nTab ), true ); + if ( !aCellStyleName.isEmpty() ) + { + SfxStyleSheetBase* pStyleSheet = pStlPool->Find(aCellStyleName, SFX_STYLE_FAMILY_PARA ); + if ( pStyleSheet ) + { + SfxItemSet aStyleSheetItemSet = pStyleSheet->GetItemSet(); + pInfo->pBackground = ( const SvxBrushItem * )aStyleSheetItemSet.GetItem( ATTR_BACKGROUND ); + } + } + } + } + //From the style get the SfxItemSet + //Exp Code ends + if ( bContainsCondFormat ) { bool bFound = false; commit e3995f25d94f74b325e94f41df7e0d3b64adc617 Author: Akash Shetye <shetyeak...@gmail.com> Date: Fri Aug 30 04:37:40 2013 +0530 Added nFirstRowStripeSize etc to the initializers for various constructors Change-Id: I32645a5056fb6147dc2c23dd8fe97ab8834d38df diff --git a/sc/inc/dbdataformatting.hxx b/sc/inc/dbdataformatting.hxx index c14bed1..e984275 100644 --- a/sc/inc/dbdataformatting.hxx +++ b/sc/inc/dbdataformatting.hxx @@ -19,10 +19,10 @@ class SC_DLLPUBLIC ScDBDataFormatting OUString maSecondRowStripeStyle; OUString maFirstColStripeStyle; OUString maSecondColStripeStyle; - sal_Int32 maFirstRowStripeSize; - sal_Int32 maSecondRowStripeSize; - sal_Int32 maFirstColStripeSize; - sal_Int32 maSecondColStripeSize; + sal_Int32 nFirstRowStripeSize; + sal_Int32 nSecondRowStripeSize; + sal_Int32 nFirstColStripeSize; + sal_Int32 nSecondColStripeSize; bool mbBandedRows; bool mbBandedColumns; public: @@ -39,14 +39,14 @@ public: const OUString& GetSecondRowStripeStyle() const; const OUString& GetFirstColStripeStyle() const; const OUString& GetSecondColStripeStyle() const; - sal_Int32 GetFirstRowStripeSize() const { return maFirstRowStripeSize; } - sal_Int32 GetSecondRowStripeSize() const { return maSecondRowStripeSize; } - sal_Int32 GetFirstColStripeSize() const { return maFirstColStripeSize; } - sal_Int32 GetSecondColStripeSize() const { return maSecondColStripeSize; } - void SetFirstRowStripeSize( const sal_Int32 nSize ){ maFirstRowStripeSize = nSize; } - void SetSecondRowStripeSize( const sal_Int32 nSize ){ maSecondRowStripeSize = nSize; } - void SetFirstColStripeSize( const sal_Int32 nSize ){ maFirstColStripeSize = nSize; } - void SetSecondColStripeSize( const sal_Int32 nSize ){ maSecondColStripeSize = nSize; } + sal_Int32 GetFirstRowStripeSize(); + sal_Int32 GetSecondRowStripeSize(); + sal_Int32 GetFirstColStripeSize(); + sal_Int32 GetSecondColStripeSize(); + void SetFirstRowStripeSize( sal_Int32 nSize ); + void SetSecondRowStripeSize( sal_Int32 nSize ); + void SetFirstColStripeSize( sal_Int32 nSize ); + void SetSecondColStripeSize( sal_Int32 nSize ); void SetFirstRowStripeStyle( const OUString& aStyleName ); void SetSecondRowStripeStyle( const OUString& aStyleName ); void SetFirstColStripeStyle( const OUString& aStyleName ); diff --git a/sc/source/core/tool/dbdataformatting.cxx b/sc/source/core/tool/dbdataformatting.cxx index 07f1ede..1864698 100644 --- a/sc/source/core/tool/dbdataformatting.cxx +++ b/sc/source/core/tool/dbdataformatting.cxx @@ -16,10 +16,10 @@ ScDBDataFormatting::ScDBDataFormatting(): maSecondRowStripeStyle ( "Default" ), maFirstColStripeStyle ( "Default" ), maSecondColStripeStyle ( "Default" ), - maFirstRowStripeSize ( 1 ), - maSecondRowStripeSize ( 1 ), - maFirstColStripeSize ( 1 ), - maSecondColStripeSize ( 1 ), + nFirstRowStripeSize ( 1 ), + nSecondRowStripeSize ( 1 ), + nFirstColStripeSize ( 1 ), + nSecondColStripeSize ( 1 ), mbBandedRows ( false ), mbBandedColumns ( false ) { @@ -31,6 +31,10 @@ ScDBDataFormatting::ScDBDataFormatting(const OUString& rTableStyleName, const OU maSecondRowStripeStyle ( rSecondRowStripeStyle ), maFirstColStripeStyle ( rFirstColStripeStyle ), maSecondColStripeStyle ( rSecondColStripeStyle ), + nFirstRowStripeSize ( 1 ), + nSecondRowStripeSize ( 1 ), + nFirstColStripeSize ( 1 ), + nSecondColStripeSize ( 1 ), mbBandedRows ( bBRows ), mbBandedColumns ( bBCols ) { @@ -42,6 +46,10 @@ ScDBDataFormatting::ScDBDataFormatting( const ScDBDataFormatting& rTableFormatDa maSecondRowStripeStyle ( rTableFormatData.maSecondRowStripeStyle ), maFirstColStripeStyle ( rTableFormatData.maFirstColStripeStyle ), maSecondColStripeStyle ( rTableFormatData.maSecondColStripeStyle ), + nFirstRowStripeSize ( rTableFormatData.nFirstRowStripeSize ), + nSecondRowStripeSize ( rTableFormatData.nSecondRowStripeSize ), + nFirstColStripeSize ( rTableFormatData.nFirstColStripeSize ), + nSecondColStripeSize ( rTableFormatData.nSecondColStripeSize ), mbBandedRows ( rTableFormatData.mbBandedRows ), mbBandedColumns ( rTableFormatData.mbBandedColumns ) { @@ -116,3 +124,40 @@ void ScDBDataFormatting::SetSecondColStripeStyle( const OUString& aStyleName ) { maSecondColStripeStyle = aStyleName; } + +void ScDBDataFormatting::SetFirstRowStripeSize( sal_Int32 nSize) +{ + nFirstRowStripeSize = nSize; +} +void ScDBDataFormatting::SetSecondRowStripeSize( sal_Int32 nSize ) +{ + nSecondRowStripeSize = nSize; +} +void ScDBDataFormatting::SetFirstColStripeSize( sal_Int32 nSize ) +{ + nFirstColStripeSize = nSize; +} +void ScDBDataFormatting::SetSecondColStripeSize( sal_Int32 nSize ) +{ + nSecondColStripeSize = nSize; +} + +sal_Int32 ScDBDataFormatting::GetFirstRowStripeSize() +{ + return nFirstRowStripeSize; +} + +sal_Int32 ScDBDataFormatting::GetSecondRowStripeSize() +{ + return nSecondRowStripeSize; +} + +sal_Int32 ScDBDataFormatting::GetFirstColStripeSize() +{ + return nFirstColStripeSize; +} + +sal_Int32 ScDBDataFormatting::GetSecondColStripeSize() +{ + return nSecondColStripeSize; +} _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits