summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorALONSO Laurent <laurent.alonso@inria.fr>2021-09-02 13:50:43 +0200
committerALONSO Laurent <laurent.alonso@inria.fr>2021-09-02 13:50:43 +0200
commit0e03199f3a5cc73d23a6ee796e50a148d7a7d528 (patch)
treebe1d684eae796b9e6e69f9f1670b8ff91a9c7fad
parentfdfdd05c8f5995bbabaf19bfece820f04fab14d5 (diff)
Numbers[xml]: use also workspace's name to create the sheet's name
Change-Id: Ia9fae49fd7ed02249356e068c81cc5c92515cb2a
-rw-r--r--src/lib/IWAParser.cpp11
-rw-r--r--src/lib/contexts/IWORKTabularModelElement.cpp10
2 files changed, 15 insertions, 6 deletions
diff --git a/src/lib/IWAParser.cpp b/src/lib/IWAParser.cpp
index f657c44..a982cfe 100644
--- a/src/lib/IWAParser.cpp
+++ b/src/lib/IWAParser.cpp
@@ -2818,6 +2818,7 @@ void IWAParser::parseTileDefinition(unsigned row, unsigned column, RVNGInputStre
const unsigned flags = readU32(input);
if (flags & 1)
{
+ // significand 105 bits, exponent (base 10) 14 bits, sign 1 bits
long double mantissa=0;
long double decal=1;
for (int i=0; i<7; ++i)
@@ -2826,16 +2827,16 @@ void IWAParser::parseTileDefinition(unsigned row, unsigned column, RVNGInputStre
decal*=65536;
}
auto exponent=readU16(input);
+ if (exponent&1)
+ {
+ mantissa+=decal;
+ exponent&=0xfffe; // need if exponent<12352
+ }
if (exponent&0x8000)
{
mantissa*=-1;
exponent&=0x7fff;
}
- if (exponent&1)
- {
- mantissa+=decal;
- exponent&=0x7ffe; // need if exponent<12352
- }
std::stringstream s;
s << std::setprecision(12) << mantissa *std::pow(10, (exponent-12352)/2); // 3040 mean 0
text=s.str();
diff --git a/src/lib/contexts/IWORKTabularModelElement.cpp b/src/lib/contexts/IWORKTabularModelElement.cpp
index 5f2550c..6b7c30e 100644
--- a/src/lib/contexts/IWORKTabularModelElement.cpp
+++ b/src/lib/contexts/IWORKTabularModelElement.cpp
@@ -2084,7 +2084,15 @@ void IWORKTabularModelElement::endOfElement()
if (m_tableName && !get(m_tableName).empty())
{
auto &tableMap=*getState().m_tableNameMap;
- auto finalName=get(m_tableName);
+ std::string finalName;
+ if (bool(getCollector().getWorkSpaceName()))
+ {
+ std::stringstream s;
+ s << get(getCollector().getWorkSpaceName()) << "_" << get(m_tableName);
+ finalName=s.str();
+ }
+ else
+ finalName=get(m_tableName);
if (tableMap.find(finalName)!=tableMap.end())
{
ETONYEK_DEBUG_MSG(("IWORKTabularModelElement::endElement: a table with name %s already exists\n", finalName.c_str()));