summaryrefslogtreecommitdiff
path: root/xmloff/source/style/xmlnumfi.cxx
diff options
context:
space:
mode:
authorLaurent Balland-Poirier <laurent.balland-poirier@laposte.net>2015-03-22 22:01:53 +0100
committerEike Rathke <erack@redhat.com>2015-04-27 23:24:30 +0000
commit38992b419a4655eba9b85d337edbb208fd2fff95 (patch)
tree5cbab5180769e0fc3ed069d32238cb7bb18a91fd /xmloff/source/style/xmlnumfi.cxx
parentac885af343aa4f4536cf029655826b12fd9c4340 (diff)
tdf#90133 Extend ODF: exponent sign of scientific format
Scientific Format without sign in exponent, such as 0.00E0, are managed by LibO, and can be saved in XLS format This commit allows to save in ODF Change-Id: Ia0c4589e2af942543ea296f970d163bc1d1d6f05 Reviewed-on: https://gerrit.libreoffice.org/14955 Reviewed-by: Eike Rathke <erack@redhat.com> Tested-by: Eike Rathke <erack@redhat.com>
Diffstat (limited to 'xmloff/source/style/xmlnumfi.cxx')
-rw-r--r--xmloff/source/style/xmlnumfi.cxx13
1 files changed, 12 insertions, 1 deletions
diff --git a/xmloff/source/style/xmlnumfi.cxx b/xmloff/source/style/xmlnumfi.cxx
index f7b9e824d3f0..02f31cd98a04 100644
--- a/xmloff/source/style/xmlnumfi.cxx
+++ b/xmloff/source/style/xmlnumfi.cxx
@@ -117,6 +117,7 @@ struct SvXMLNumberInfo
bool bGrouping;
bool bDecReplace;
bool bVarDecimals;
+ bool bExpSign;
double fDisplayFactor;
SvXMLEmbeddedElementArr aEmbeddedElements;
@@ -124,6 +125,7 @@ struct SvXMLNumberInfo
{
nDecimals = nInteger = nExpDigits = nExpInterval = nNumerDigits = nDenomDigits = nFracDenominator = -1;
bGrouping = bDecReplace = bVarDecimals = false;
+ bExpSign = true;
fDisplayFactor = 1.0;
}
};
@@ -278,6 +280,7 @@ enum SvXMLStyleElemAttrTokens
XML_TOK_ELEM_ATTR_DENOMINATOR_VALUE,
XML_TOK_ELEM_ATTR_MIN_EXPONENT_DIGITS,
XML_TOK_ELEM_ATTR_EXPONENT_INTERVAL,
+ XML_TOK_ELEM_ATTR_EXPONENT_SIGN,
XML_TOK_ELEM_ATTR_MIN_NUMERATOR_DIGITS,
XML_TOK_ELEM_ATTR_MIN_DENOMINATOR_DIGITS,
XML_TOK_ELEM_ATTR_RFC_LANGUAGE_TAG,
@@ -575,6 +578,7 @@ const SvXMLTokenMap& SvXMLNumImpData::GetStyleElemAttrTokenMap()
{ XML_NAMESPACE_NUMBER, XML_MIN_EXPONENT_DIGITS, XML_TOK_ELEM_ATTR_MIN_EXPONENT_DIGITS },
{ XML_NAMESPACE_LO_EXT, XML_EXPONENT_INTERVAL, XML_TOK_ELEM_ATTR_EXPONENT_INTERVAL },
{ XML_NAMESPACE_NUMBER, XML_EXPONENT_INTERVAL, XML_TOK_ELEM_ATTR_EXPONENT_INTERVAL },
+ { XML_NAMESPACE_LO_EXT, XML_EXPONENT_SIGN, XML_TOK_ELEM_ATTR_EXPONENT_SIGN },
{ XML_NAMESPACE_NUMBER, XML_MIN_NUMERATOR_DIGITS, XML_TOK_ELEM_ATTR_MIN_NUMERATOR_DIGITS },
{ XML_NAMESPACE_NUMBER, XML_MIN_DENOMINATOR_DIGITS, XML_TOK_ELEM_ATTR_MIN_DENOMINATOR_DIGITS },
{ XML_NAMESPACE_NUMBER, XML_RFC_LANGUAGE_TAG, XML_TOK_ELEM_ATTR_RFC_LANGUAGE_TAG },
@@ -966,6 +970,10 @@ SvXMLNumFmtElementContext::SvXMLNumFmtElementContext( SvXMLImport& rImport,
if (::sax::Converter::convertNumber( nAttrVal, sValue, 0 ))
aNumInfo.nExpInterval = nAttrVal;
break;
+ case XML_TOK_ELEM_ATTR_EXPONENT_SIGN:
+ if (::sax::Converter::convertBool( bAttrBool, sValue ))
+ aNumInfo.bExpSign = bAttrBool;
+ break;
case XML_TOK_ELEM_ATTR_MIN_NUMERATOR_DIGITS:
if (::sax::Converter::convertNumber( nAttrVal, sValue, 0 ))
aNumInfo.nNumerDigits = nAttrVal;
@@ -1237,7 +1245,10 @@ void SvXMLNumFmtElementContext::EndElement()
}
rParent.AddNumber( aNumInfo ); // simple number
- rParent.AddToCode( OUString("E+") );
+ if ( aNumInfo.bExpSign )
+ rParent.AddToCode( OUString("E+") );
+ else
+ rParent.AddToCode( OUString("E") );
for (sal_Int32 i=0; i<aNumInfo.nExpDigits; i++)
{
rParent.AddToCode( '0' );