diff options
author | ALONSO Laurent <laurent.alonso@inria.fr> | 2021-09-02 13:50:43 +0200 |
---|---|---|
committer | ALONSO Laurent <laurent.alonso@inria.fr> | 2021-09-02 13:50:43 +0200 |
commit | 0e03199f3a5cc73d23a6ee796e50a148d7a7d528 (patch) | |
tree | be1d684eae796b9e6e69f9f1670b8ff91a9c7fad | |
parent | fdfdd05c8f5995bbabaf19bfece820f04fab14d5 (diff) |
Numbers[xml]: use also workspace's name to create the sheet's name
Change-Id: Ia9fae49fd7ed02249356e068c81cc5c92515cb2a
-rw-r--r-- | src/lib/IWAParser.cpp | 11 | ||||
-rw-r--r-- | src/lib/contexts/IWORKTabularModelElement.cpp | 10 |
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())); |