diff options
author | Eike Rathke <erack@redhat.com> | 2017-02-20 20:27:52 +0100 |
---|---|---|
committer | Eike Rathke <erack@redhat.com> | 2017-02-20 20:29:57 +0100 |
commit | 820cb1f86f3fd177877b8719315fc03534e2049c (patch) | |
tree | 41ec2be4c53047a91ceaca390dff59b9b35dc051 | |
parent | 82e22bfe0410f3b7858bf5d43d09480fcd251b92 (diff) |
don't obtain the underlying SvNumberformat thrice, tdf#105657 follow-up
... which all GetFormatTable()->...(nFormat) do.
Also introduce SvNumberformat::GetMaskedType() for convenience.
Change-Id: I9495d71b99116e74e8b877ffc9cd21bd36cc7b7f
-rw-r--r-- | include/svl/zformat.hxx | 3 | ||||
-rw-r--r-- | sc/source/core/data/documen4.cxx | 10 |
2 files changed, 9 insertions, 4 deletions
diff --git a/include/svl/zformat.hxx b/include/svl/zformat.hxx index d68a1007cc24..a50281b536ac 100644 --- a/include/svl/zformat.hxx +++ b/include/svl/zformat.hxx @@ -169,6 +169,9 @@ public: /// Get type of format, may include css::util::NumberFormat::DEFINED bit short GetType() const { return eType; } + /// Get type of format, does not include css::util::NumberFormat::DEFINED + short GetMaskedType() const { return eType & ~css::util::NumberFormat::DEFINED; } + void SetType(const short eSetType) { eType = eSetType; } // Standard means the I18N defined standard format of this type void SetStandard() { bStandard = true; } diff --git a/sc/source/core/data/documen4.cxx b/sc/source/core/data/documen4.cxx index 09b7c543e7e8..fed6c0d043f0 100644 --- a/sc/source/core/data/documen4.cxx +++ b/sc/source/core/data/documen4.cxx @@ -19,6 +19,7 @@ #include <svl/intitem.hxx> #include <svl/zforlist.hxx> +#include <svl/zformat.hxx> #include <formula/token.hxx> #include "document.hxx" @@ -651,14 +652,15 @@ bool ScDocument::GetSelectionFunction( ScSubTotalFunc eFunc, double ScDocument::RoundValueAsShown( double fVal, sal_uInt32 nFormat ) const { + const SvNumberformat* pFormat = GetFormatTable()->GetEntry( nFormat ); short nType; - if ( (nType = GetFormatTable()->GetType( nFormat )) != css::util::NumberFormat::DATE - && nType != css::util::NumberFormat::TIME && nType != css::util::NumberFormat::DATETIME ) + if (pFormat && (nType = pFormat->GetMaskedType()) != css::util::NumberFormat::DATE + && nType != css::util::NumberFormat::TIME && nType != css::util::NumberFormat::DATETIME ) { short nPrecision; if ((nFormat % SV_COUNTRY_LANGUAGE_OFFSET) != 0) { - nPrecision = (short)GetFormatTable()->GetFormatPrecision( nFormat ); + nPrecision = (short)pFormat->GetFormatPrecision(); switch ( nType ) { case css::util::NumberFormat::PERCENT: // 0.41% == 0.0041 @@ -674,7 +676,7 @@ double ScDocument::RoundValueAsShown( double fVal, sal_uInt32 nFormat ) const } case css::util::NumberFormat::FRACTION: // get value of fraction representation { - return GetFormatTable()->GetRoundFractionValue( nFormat, fVal ); + return pFormat->GetRoundFractionValue( fVal ); } } } |