summaryrefslogtreecommitdiff
path: root/formula
diff options
context:
space:
mode:
authorWinfried Donkers <winfrieddonkers@libreoffice.org>2014-11-11 17:33:48 +0100
committerEike Rathke <erack@redhat.com>2015-04-29 23:39:09 +0000
commit010b2d2d9be846fb6b10848204e29e1bc00ef1ea (patch)
tree7ac115c5bd37be8b9e4cf295a84385d63f212d8e /formula
parent3a6866c2953c17a55536fa434b9fceda670d0685 (diff)
fdo#69552 [part 1] make calc functions CEILING comply with ODF1.2
Also, add support for CEILING.MATH and fix small deficiencies with CEILING functions, as most are interwoven. Change-Id: I0d9a46fb17e982ccf1e9d9e403b58926172c1a7a Reviewed-on: https://gerrit.libreoffice.org/7088 Reviewed-by: Eike Rathke <erack@redhat.com> Tested-by: Eike Rathke <erack@redhat.com>
Diffstat (limited to 'formula')
-rw-r--r--formula/source/core/api/token.cxx13
-rw-r--r--formula/source/core/resource/core_resource.src22
2 files changed, 30 insertions, 5 deletions
diff --git a/formula/source/core/api/token.cxx b/formula/source/core/api/token.cxx
index 50964217a901..a33ce70d4e25 100644
--- a/formula/source/core/api/token.cxx
+++ b/formula/source/core/api/token.cxx
@@ -1053,6 +1053,8 @@ inline bool MissingConventionOOXML::isRewriteNeeded( OpCode eOp ) const
case ocIndex:
+ case ocCeil:
+
case ocGammaDist:
case ocFDist_LT:
case ocPoissonDist:
@@ -1411,7 +1413,16 @@ FormulaTokenArray * FormulaTokenArray::RewriteMissing( const MissingConvention &
break;
}
if (bAdd)
- pNewArr->AddToken( *pCur );
+ {
+ if ( pCur->GetOpCode() == ocCeil &&
+ rConv.getConvention() == MissingConvention::FORMULA_MISSING_CONVENTION_OOXML )
+ {
+ FormulaToken *pToken = new FormulaToken( svByte, ocCeil_Math );
+ pNewArr->AddToken( *pToken );
+ }
+ else
+ pNewArr->AddToken( *pCur );
+ }
}
if (pOcas != &aOpCodeAddressStack[0])
diff --git a/formula/source/core/resource/core_resource.src b/formula/source/core/resource/core_resource.src
index 31d5d9446add..4462ee9b2b91 100644
--- a/formula/source/core/resource/core_resource.src
+++ b/formula/source/core/resource/core_resource.src
@@ -149,8 +149,10 @@ Resource RID_STRLIST_FUNCTION_NAMES_ENGLISH_ODFF
String SC_OPCODE_ERROR_TYPE_ODF { Text = "ERROR.TYPE" ; };
String SC_OPCODE_FORMULA { Text = "FORMULA"; };
String SC_OPCODE_ARC_TAN_2 { Text = "ATAN2" ; };
+ String SC_OPCODE_CEIL_MATH { Text = "COM.MICROSOFT.CEILING.MATH" ; };
String SC_OPCODE_CEIL { Text = "CEILING" ; };
- String SC_OPCODE_CEIL_MS { Text = "COM.MICROSOFT.CEILING.PRECISE" ; };
+ String SC_OPCODE_CEIL_MS { Text = "COM.MICROSOFT.CEILING" ; };
+ String SC_OPCODE_CEIL_PRECISE { Text = "COM.MICROSOFT.CEILING.PRECISE" ; };
String SC_OPCODE_CEIL_ISO { Text = "COM.MICROSOFT.ISO.CEILING" ; };
String SC_OPCODE_FLOOR_MS { Text = "COM.MICROSOFT.FLOOR.PRECISE" ; };
String SC_OPCODE_FLOOR { Text = "FLOOR" ; };
@@ -565,8 +567,10 @@ Resource RID_STRLIST_FUNCTION_NAMES_ENGLISH_OOXML
String SC_OPCODE_ERROR_TYPE_ODF { Text = "ERROR.TYPE" ; };
String SC_OPCODE_FORMULA { Text = "_xlfn.FORMULATEXT"; };
String SC_OPCODE_ARC_TAN_2 { Text = "ATAN2" ; };
- String SC_OPCODE_CEIL { Text = "CEILING" ; };
- String SC_OPCODE_CEIL_MS { Text = "_xlfn.CEILING.PRECISE" ; };
+ String SC_OPCODE_CEIL_MATH { Text = "_xlfn.CEILING.MATH" ; };
+ String SC_OPCODE_CEIL { Text = "_xlfn.CEILING.MATH" ; };
+ String SC_OPCODE_CEIL_MS { Text = "CEILING" ; };
+ String SC_OPCODE_CEIL_PRECISE { Text = "_xlfn.CEILING.PRECISE" ; };
String SC_OPCODE_CEIL_ISO { Text = "ISO.CEILING" ; };
String SC_OPCODE_FLOOR_MS { Text = "_xlfn.FLOOR.PRECISE" ; };
String SC_OPCODE_FLOOR { Text = "FLOOR" ; };
@@ -983,8 +987,10 @@ Resource RID_STRLIST_FUNCTION_NAMES_ENGLISH
String SC_OPCODE_ERROR_TYPE_ODF { Text = "ERROR.TYPE" ; };
String SC_OPCODE_FORMULA { Text = "FORMULA"; };
String SC_OPCODE_ARC_TAN_2 { Text = "ATAN2" ; };
+ String SC_OPCODE_CEIL_MATH { Text = "CEILING.MATH" ; };
String SC_OPCODE_CEIL { Text = "CEILING" ; };
- String SC_OPCODE_CEIL_MS { Text = "CEILING.PRECISE" ; };
+ String SC_OPCODE_CEIL_MS { Text = "CEILING.XCL" ; };
+ String SC_OPCODE_CEIL_PRECISE { Text = "CEILING.PRECISE" ; };
String SC_OPCODE_CEIL_ISO { Text = "ISO.CEILING" ; };
String SC_OPCODE_FLOOR_MS { Text = "FLOOR.PRECISE" ; };
String SC_OPCODE_FLOOR { Text = "FLOOR" ; };
@@ -1718,12 +1724,20 @@ Resource RID_STRLIST_FUNCTION_NAMES
{
Text [ en-US ] = "ATAN2" ;
};
+ String SC_OPCODE_CEIL_MATH
+ {
+ Text [ en-US ] = "CEILING.MATH" ;
+ };
String SC_OPCODE_CEIL
{
Text [ en-US ] = "CEILING" ;
};
String SC_OPCODE_CEIL_MS
{
+ Text [ en-US ] = "CEILING.XCL" ;
+ };
+ String SC_OPCODE_CEIL_PRECISE
+ {
Text [ en-US ] = "CEILING.PRECISE" ;
};
String SC_OPCODE_CEIL_ISO