[Libreoffice-commits] core.git: include/svl sc/source
Eike Rathke
erack at redhat.com
Mon Feb 20 19:30:26 UTC 2017
include/svl/zformat.hxx | 3 +++
sc/source/core/data/documen4.cxx | 10 ++++++----
2 files changed, 9 insertions(+), 4 deletions(-)
New commits:
commit 820cb1f86f3fd177877b8719315fc03534e2049c
Author: Eike Rathke <erack at redhat.com>
Date: Mon Feb 20 20:27:52 2017 +0100
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
diff --git a/include/svl/zformat.hxx b/include/svl/zformat.hxx
index d68a100..a50281b 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 09b7c54..fed6c0d 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 );
}
}
}
More information about the Libreoffice-commits
mailing list