sc/inc/dpcache.hxx | 2 +- sc/source/core/data/dpcache.cxx | 18 ++++++------------ 2 files changed, 7 insertions(+), 13 deletions(-)
New commits: commit 372cfda4d6a4d49bb45cea0dc45b23ffd9dd5b3d Author: Kohei Yoshida <kohei.yosh...@gmail.com> Date: Fri Mar 9 20:19:12 2012 -0500 Store only one number format per field. diff --git a/sc/inc/dpcache.hxx b/sc/inc/dpcache.hxx index a0e6a6d..9f33db5 100644 --- a/sc/inc/dpcache.hxx +++ b/sc/inc/dpcache.hxx @@ -100,7 +100,7 @@ public: */ mutable IndexArrayType maIndexOrder; - std::vector<sal_uLong> maNumFormats; + sal_uLong mnNumFormat; Field(); }; diff --git a/sc/source/core/data/dpcache.cxx b/sc/source/core/data/dpcache.cxx index 0aa8224..9ce9e25 100644 --- a/sc/source/core/data/dpcache.cxx +++ b/sc/source/core/data/dpcache.cxx @@ -226,7 +226,7 @@ bool ScDPCache::operator== ( const ScDPCache& r ) const return true; } -ScDPCache::Field::Field() {} +ScDPCache::Field::Field() : mnNumFormat(0) {} ScDPCache::ScDPCache(ScDocument* pDoc) : mpDoc( pDoc ), @@ -637,7 +637,6 @@ bool ScDPCache::AddData(long nDim, const ScDPItemData& rData, sal_uLong nNumForm rField.maGlobalOrder.begin()+nIndex, rField.maItems.size()-1); OSL_ENSURE(rField.maGlobalOrder[nIndex] == sal::static_int_cast<SCROW>(rField.maItems.size())-1, "ScDPTableDataCache::AddData "); rField.maData.push_back(rField.maItems.size()-1); - rField.maNumFormats.push_back(nNumFormat); } else rField.maData.push_back(rField.maGlobalOrder[nIndex]); @@ -645,7 +644,10 @@ bool ScDPCache::AddData(long nDim, const ScDPItemData& rData, sal_uLong nNumForm size_t nCurRow = maFields[nDim].maData.size() - 1; if (!rData.IsEmpty()) + { maEmptyRows.insert_back(nCurRow, nCurRow+1, false); + rField.mnNumFormat = nNumFormat; + } return true; } @@ -813,13 +815,9 @@ sal_uLong ScDPCache::GetNumberFormat( long nDim ) const if ( nDim >= mnColumnCount ) return 0; - const std::vector<sal_uLong>& rNumFormats = maFields[nDim].maNumFormats; - if (rNumFormats.empty()) - return 0; - // TODO: Find a way to determine the dominant number format in presence of // multiple number formats in the same field. - return *rNumFormats.begin(); + return maFields[nDim].mnNumFormat; } bool ScDPCache::IsDateDimension( long nDim ) const @@ -831,11 +829,7 @@ bool ScDPCache::IsDateDimension( long nDim ) const if (!pFormatter) return false; - const std::vector<sal_uLong>& rNumFormats = maFields[nDim].maNumFormats; - if (rNumFormats.empty()) - return false; - - short eType = pFormatter->GetType(rNumFormats[0]); + short eType = pFormatter->GetType(maFields[nDim].mnNumFormat); return (eType == NUMBERFORMAT_DATE) || (eType == NUMBERFORMAT_DATETIME); } _______________________________________________ Libreoffice-commits mailing list Libreoffice-commits@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits