mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-03-25 16:50:50 +01:00
[poincare] Fix VerticalOffsetLayout serialization
"2^3 !" would be serialized as "2^3*!", which is wrong. It is now serialized as "2 Ion::Charset::Superscript 3 Ion::Charset::Superscript !" and parsed correctly.
This commit is contained in:
@@ -174,20 +174,14 @@ int VerticalOffsetLayoutNode::serialize(char * buffer, int bufferSize, Preferenc
|
||||
return numberOfChar;
|
||||
}
|
||||
assert(m_type == Type::Superscript);
|
||||
// If the layout is a superscript, write "^(indice)"
|
||||
int numberOfChar = SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, "^");
|
||||
// If the layout is a superscript, write "Ion::Charset::Superscript indice Ion::Charset::Superscript"
|
||||
int numberOfChar = SerializationHelper::Char(buffer, bufferSize, Ion::Charset::Superscript);
|
||||
if (numberOfChar >= bufferSize-1) { return bufferSize-1; }
|
||||
numberOfChar += const_cast<VerticalOffsetLayoutNode *>(this)->indiceLayout()->serialize(buffer+numberOfChar, bufferSize-numberOfChar, floatDisplayMode, numberOfSignificantDigits);
|
||||
if (numberOfChar >= bufferSize-1) { return bufferSize-1; }
|
||||
numberOfChar += SerializationHelper::Char(buffer+numberOfChar, bufferSize-numberOfChar, Ion::Charset::Superscript);
|
||||
if (numberOfChar >= bufferSize-1) { return bufferSize-1; }
|
||||
|
||||
// Add a multiplication if omitted.
|
||||
int indexInParent = -1;
|
||||
LayoutNode * parentNode = parent();
|
||||
if (parentNode != nullptr) {
|
||||
indexInParent = parentNode->indexOfChild(this);
|
||||
}
|
||||
if (indexInParent >= 0 && indexInParent < (parentNode->numberOfChildren() - 1) && parentNode->isHorizontal() && parentNode->childAtIndex(indexInParent + 1)->canBeOmittedMultiplicationRightFactor()) {
|
||||
buffer[numberOfChar++] = Ion::Charset::MiddleDot;
|
||||
if (numberOfChar >= bufferSize-1) { return bufferSize-1;}
|
||||
}
|
||||
buffer[numberOfChar] = 0;
|
||||
return numberOfChar;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user