summaryrefslogtreecommitdiff
path: root/xmloff/source/style/xmlnumfi.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'xmloff/source/style/xmlnumfi.cxx')
-rw-r--r--xmloff/source/style/xmlnumfi.cxx20
1 files changed, 17 insertions, 3 deletions
diff --git a/xmloff/source/style/xmlnumfi.cxx b/xmloff/source/style/xmlnumfi.cxx
index 15d55fec2c4c..fcd92bdae280 100644
--- a/xmloff/source/style/xmlnumfi.cxx
+++ b/xmloff/source/style/xmlnumfi.cxx
@@ -129,6 +129,7 @@ struct SvXMLNumberInfo
sal_Int32 nExpDigits;
sal_Int32 nNumerDigits;
sal_Int32 nDenomDigits;
+ sal_Int32 nFracDenominator;
sal_Bool bGrouping;
sal_Bool bDecReplace;
sal_Bool bVarDecimals;
@@ -137,7 +138,7 @@ struct SvXMLNumberInfo
SvXMLNumberInfo()
{
- nDecimals = nInteger = nExpDigits = nNumerDigits = nDenomDigits = -1;
+ nDecimals = nInteger = nExpDigits = nNumerDigits = nDenomDigits = nFracDenominator = -1;
bGrouping = bDecReplace = bVarDecimals = sal_False;
fDisplayFactor = 1.0;
}
@@ -291,6 +292,7 @@ enum SvXMLStyleElemAttrTokens
XML_TOK_ELEM_ATTR_GROUPING,
XML_TOK_ELEM_ATTR_DISPLAY_FACTOR,
XML_TOK_ELEM_ATTR_DECIMAL_REPLACEMENT,
+ XML_TOK_ELEM_ATTR_DENOMINATOR_VALUE,
XML_TOK_ELEM_ATTR_MIN_EXPONENT_DIGITS,
XML_TOK_ELEM_ATTR_MIN_NUMERATOR_DIGITS,
XML_TOK_ELEM_ATTR_MIN_DENOMINATOR_DIGITS,
@@ -583,6 +585,7 @@ const SvXMLTokenMap& SvXMLNumImpData::GetStyleElemAttrTokenMap()
{ XML_NAMESPACE_NUMBER, XML_GROUPING, XML_TOK_ELEM_ATTR_GROUPING },
{ XML_NAMESPACE_NUMBER, XML_DISPLAY_FACTOR, XML_TOK_ELEM_ATTR_DISPLAY_FACTOR },
{ XML_NAMESPACE_NUMBER, XML_DECIMAL_REPLACEMENT, XML_TOK_ELEM_ATTR_DECIMAL_REPLACEMENT },
+ { XML_NAMESPACE_NUMBER, XML_DENOMINATOR_VALUE, XML_TOK_ELEM_ATTR_DENOMINATOR_VALUE },
{ XML_NAMESPACE_NUMBER, XML_MIN_EXPONENT_DIGITS, XML_TOK_ELEM_ATTR_MIN_EXPONENT_DIGITS },
{ 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 },
@@ -986,6 +989,10 @@ SvXMLNumFmtElementContext::SvXMLNumFmtElementContext( SvXMLImport& rImport,
if (::sax::Converter::convertNumber( nAttrVal, sValue, 0 ))
aNumInfo.nDenomDigits = nAttrVal;
break;
+ case XML_TOK_ELEM_ATTR_DENOMINATOR_VALUE:
+ if (::sax::Converter::convertNumber( nAttrVal, sValue, 0 ))
+ aNumInfo.nFracDenominator = nAttrVal;
+ break;
case XML_TOK_ELEM_ATTR_LANGUAGE:
sLanguage = sValue;
break;
@@ -1207,8 +1214,15 @@ void SvXMLNumFmtElementContext::EndElement()
for (i=0; i<aNumInfo.nNumerDigits; i++)
rParent.AddToCode( OUString::valueOf((sal_Unicode)'?') );
rParent.AddToCode( OUString::valueOf((sal_Unicode)'/') );
- for (i=0; i<aNumInfo.nDenomDigits; i++)
- rParent.AddToCode( OUString::valueOf((sal_Unicode)'?') );
+ if ( aNumInfo.nFracDenominator > 0 )
+ {
+ rParent.AddToCode( OUString::valueOf( aNumInfo.nFracDenominator ) );
+ }
+ else
+ {
+ for (i=0; i<aNumInfo.nDenomDigits; i++)
+ rParent.AddToCode( OUString::valueOf((sal_Unicode)'?') );
+ }
}
break;