diff --git a/apps/calculation/app.cpp b/apps/calculation/app.cpp index 39a61eef1..3814110b6 100644 --- a/apps/calculation/app.cpp +++ b/apps/calculation/app.cpp @@ -1,5 +1,6 @@ #include "app.h" #include "../apps_container.h" +#include "../shared/poincare_helpers.h" #include "calculation_icon.h" #include "../i18n.h" @@ -96,7 +97,7 @@ bool App::textInputIsCorrect(const char * text) { } Expression::ReplaceSymbolWithExpression(&exp, Symbol::SpecialSymbols::Ans, static_cast(snapshot())->calculationStore()->ansExpression(localContext())); char buffer[Calculation::k_printedExpressionSize]; - int length = exp->writeTextInBuffer(buffer, sizeof(buffer)); + int length = PoincareHelpers::WriteTextInBuffer(exp, buffer, sizeof(buffer)); delete exp; /* if the buffer is totally full, it is VERY likely that writeTextInBuffer * escaped before printing utterly the expression. */ diff --git a/apps/calculation/calculation.cpp b/apps/calculation/calculation.cpp index 3ea487ee8..2fa5afee9 100644 --- a/apps/calculation/calculation.cpp +++ b/apps/calculation/calculation.cpp @@ -60,11 +60,11 @@ void Calculation::setContent(const char * c, Context * context, Expression * ans Expression::ReplaceSymbolWithExpression(&m_input, Symbol::SpecialSymbols::Ans, ansExpression); /* We do not store directly the text enter by the user because we do not want * to keep Ans symbol in the calculation store. */ - m_input->writeTextInBuffer(m_inputText, sizeof(m_inputText)); + PoincareHelpers::WriteTextInBuffer(m_input, m_inputText, sizeof(m_inputText)); m_exactOutput = Expression::ParseAndSimplify(m_inputText, *context); - m_exactOutput->writeTextInBuffer(m_exactOutputText, sizeof(m_exactOutputText)); + PoincareHelpers::WriteTextInBuffer(m_exactOutput, m_exactOutputText, sizeof(m_exactOutputText)); m_approximateOutput = m_exactOutput->approximate(*context); - m_approximateOutput->writeTextInBuffer(m_approximateOutputText, sizeof(m_approximateOutputText)); + PoincareHelpers::WriteTextInBuffer(m_approximateOutput, m_approximateOutputText, sizeof(m_approximateOutputText)); } KDCoordinate Calculation::height(Context * context) { @@ -202,7 +202,7 @@ Calculation::EqualSign Calculation::exactAndApproximateDisplayedOutputsAreEqual( if (m_equalSign != EqualSign::Unknown) { return m_equalSign; } - m_equalSign = exactOutput(context)->isEqualToItsApproximationLayout(approximateOutput(context), k_printedExpressionSize, Preferences::sharedPreferences()->numberOfSignificantDigits(), *context) ? EqualSign::Equal : EqualSign::Approximation; + m_equalSign = exactOutput(context)->isEqualToItsApproximationLayout(approximateOutput(context), k_printedExpressionSize, Preferences::sharedPreferences()->displayMode(), Preferences::sharedPreferences()->numberOfSignificantDigits(), *context) ? EqualSign::Equal : EqualSign::Approximation; return m_equalSign; } diff --git a/apps/shared/poincare_helpers.h b/apps/shared/poincare_helpers.h index 39bfeea57..45b8c67bf 100644 --- a/apps/shared/poincare_helpers.h +++ b/apps/shared/poincare_helpers.h @@ -16,6 +16,10 @@ inline int ConvertFloatToText(T d, char * buffer, int bufferSize, int numberOfSi return Poincare::PrintFloat::convertFloatToText(d, buffer, bufferSize, numberOfSignificantDigits, Poincare::Preferences::sharedPreferences()->displayMode()); } +inline int WriteTextInBuffer(const Poincare::Expression * e, char * buffer, int bufferSize, int numberOfSignificantDigits = Poincare::PrintFloat::k_numberOfStoredSignificantDigits) { + return e->writeTextInBuffer(buffer, bufferSize, Poincare::Preferences::sharedPreferences()->displayMode(), numberOfSignificantDigits); +} + } } diff --git a/apps/solver/equation_store.cpp b/apps/solver/equation_store.cpp index ae2c922d2..f03dd3ff0 100644 --- a/apps/solver/equation_store.cpp +++ b/apps/solver/equation_store.cpp @@ -166,12 +166,12 @@ EquationStore::Error EquationStore::exactSolve(Poincare::Context * context) { /* Check for identity between exact and approximate layouts */ char exactBuffer[Shared::ExpressionModel::k_expressionBufferSize]; char approximateBuffer[Shared::ExpressionModel::k_expressionBufferSize]; - m_exactSolutionExactLayouts[i]->writeTextInBuffer(exactBuffer, Shared::ExpressionModel::k_expressionBufferSize, Preferences::sharedPreferences()->numberOfSignificantDigits()); - m_exactSolutionApproximateLayouts[i]->writeTextInBuffer(approximateBuffer, Shared::ExpressionModel::k_expressionBufferSize, Preferences::sharedPreferences()->numberOfSignificantDigits()); + m_exactSolutionExactLayouts[i]->writeTextInBuffer(exactBuffer, Shared::ExpressionModel::k_expressionBufferSize); + m_exactSolutionApproximateLayouts[i]->writeTextInBuffer(approximateBuffer, Shared::ExpressionModel::k_expressionBufferSize); m_exactSolutionIdentity[i] = strcmp(exactBuffer, approximateBuffer) == 0; /* Check for equality between exact and approximate layouts */ if (!m_exactSolutionIdentity[i]) { - m_exactSolutionEquality[i] = exactSolutions[i]->isEqualToItsApproximationLayout(approximate, Shared::ExpressionModel::k_expressionBufferSize, Preferences::sharedPreferences()->numberOfSignificantDigits(), *context); + m_exactSolutionEquality[i] = exactSolutions[i]->isEqualToItsApproximationLayout(approximate, Shared::ExpressionModel::k_expressionBufferSize, Preferences::sharedPreferences()->displayMode(), Preferences::sharedPreferences()->numberOfSignificantDigits(), *context); } delete approximate; delete exactSolutions[i]; diff --git a/apps/variable_box_controller.cpp b/apps/variable_box_controller.cpp index 4fba523a2..015351cf9 100644 --- a/apps/variable_box_controller.cpp +++ b/apps/variable_box_controller.cpp @@ -1,9 +1,11 @@ #include "variable_box_controller.h" +#include "shared/poincare_helpers.h" #include "constant.h" #include #include using namespace Poincare; +using namespace Shared; /* ContentViewController */ @@ -140,7 +142,7 @@ void VariableBoxController::ContentViewController::willDisplayCellForIndex(Highl if (m_currentPage == Page::Scalar) { myCell->displayExpression(false); char buffer[PrintFloat::k_maxComplexBufferLength]; - evaluation->writeTextInBuffer(buffer, PrintFloat::k_maxComplexBufferLength, Constant::ShortNumberOfSignificantDigits); + PoincareHelpers::WriteTextInBuffer(evaluation, buffer, PrintFloat::k_maxComplexBufferLength, Constant::ShortNumberOfSignificantDigits); myCell->setSubtitle(buffer); return; } @@ -255,7 +257,7 @@ const Expression * VariableBoxController::ContentViewController::expressionForIn ExpressionLayout * VariableBoxController::ContentViewController::expressionLayoutForIndex(int index) { if (m_currentPage == Page::Matrix) { const Symbol symbol = Symbol::matrixSymbol('0'+(char)index); - return m_context->expressionLayoutForSymbol(&symbol, Constant::LargeNumberOfSignificantDigits); + return m_context->expressionLayoutForSymbol(&symbol, Constant::ShortNumberOfSignificantDigits); } #if LIST_VARIABLES if (m_currentPage == Page::List) { diff --git a/escher/src/clipboard.cpp b/escher/src/clipboard.cpp index 5d18289d9..4ee121b00 100644 --- a/escher/src/clipboard.cpp +++ b/escher/src/clipboard.cpp @@ -11,7 +11,7 @@ void Clipboard::store(const char * storedText) { } void Clipboard::store(Poincare::ExpressionLayout * layout) { - layout->writeTextInBuffer(m_textBuffer, TextField::maxBufferSize(), Poincare::Preferences::sharedPreferences()->numberOfSignificantDigits()); + layout->writeTextInBuffer(m_textBuffer, TextField::maxBufferSize()); } const char * Clipboard::storedText() { diff --git a/poincare/include/poincare/absolute_value.h b/poincare/include/poincare/absolute_value.h index 916aad5e5..132777991 100644 --- a/poincare/include/poincare/absolute_value.h +++ b/poincare/include/poincare/absolute_value.h @@ -17,8 +17,8 @@ private: Expression * setSign(Sign s, Context & context, AngleUnit angleUnit) override; /* Layout */ ExpressionLayout * createLayout(PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override; - int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override { - return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, numberOfSignificantDigits, "abs"); + int writeTextInBuffer(char * buffer, int bufferSize, PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { + return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, "abs"); } /* Simplification */ Expression * shallowReduce(Context& context, AngleUnit angleUnit) override; diff --git a/poincare/include/poincare/addition.h b/poincare/include/poincare/addition.h index 02f98610c..e945290d7 100644 --- a/poincare/include/poincare/addition.h +++ b/poincare/include/poincare/addition.h @@ -35,8 +35,8 @@ private: ExpressionLayout * createLayout(PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutEngine::createInfixLayout(this, floatDisplayMode, numberOfSignificantDigits, name()); } - int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override { - return LayoutEngine::writeInfixExpressionTextInBuffer(this, buffer, bufferSize, numberOfSignificantDigits, name()); + int writeTextInBuffer(char * buffer, int bufferSize, PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { + return LayoutEngine::writeInfixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); } static const char * name() { return "+"; } diff --git a/poincare/include/poincare/approximation.h b/poincare/include/poincare/approximation.h index 4f058b69e..7eec62425 100644 --- a/poincare/include/poincare/approximation.h +++ b/poincare/include/poincare/approximation.h @@ -36,7 +36,7 @@ public: assert(false); return 0; } - int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override { + int writeTextInBuffer(char * buffer, int bufferSize, PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { assert(false); return 0; } diff --git a/poincare/include/poincare/arc_cosine.h b/poincare/include/poincare/arc_cosine.h index 5112d4f57..24c406c14 100644 --- a/poincare/include/poincare/arc_cosine.h +++ b/poincare/include/poincare/arc_cosine.h @@ -17,8 +17,8 @@ private: ExpressionLayout * createLayout(PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutEngine::createPrefixLayout(this, floatDisplayMode, numberOfSignificantDigits, name()); } - int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override { - return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, numberOfSignificantDigits, name()); + int writeTextInBuffer(char * buffer, int bufferSize, PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { + return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); } const char * name() const { return "acos"; diff --git a/poincare/include/poincare/arc_sine.h b/poincare/include/poincare/arc_sine.h index f0702c009..3a13d14b6 100644 --- a/poincare/include/poincare/arc_sine.h +++ b/poincare/include/poincare/arc_sine.h @@ -17,8 +17,8 @@ private: ExpressionLayout * createLayout(PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutEngine::createPrefixLayout(this, floatDisplayMode, numberOfSignificantDigits, name()); } - int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override { - return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, numberOfSignificantDigits, name()); + int writeTextInBuffer(char * buffer, int bufferSize, PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { + return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); } const char * name() const { return "asin"; } /* Simplification */ diff --git a/poincare/include/poincare/arc_tangent.h b/poincare/include/poincare/arc_tangent.h index ddb3572a0..b88f414f0 100644 --- a/poincare/include/poincare/arc_tangent.h +++ b/poincare/include/poincare/arc_tangent.h @@ -17,8 +17,8 @@ private: ExpressionLayout * createLayout(PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutEngine::createPrefixLayout(this, floatDisplayMode, numberOfSignificantDigits, name()); } - int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override { - return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, numberOfSignificantDigits, name()); + int writeTextInBuffer(char * buffer, int bufferSize, PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { + return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); } const char * name() const { return "atan"; } /* Simplification */ diff --git a/poincare/include/poincare/binomial_coefficient.h b/poincare/include/poincare/binomial_coefficient.h index e0cf61ea5..843d05ad5 100644 --- a/poincare/include/poincare/binomial_coefficient.h +++ b/poincare/include/poincare/binomial_coefficient.h @@ -16,8 +16,8 @@ private: constexpr static int k_maxNValue = 300; /* Layout */ ExpressionLayout * createLayout(PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override; - int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override { - return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, numberOfSignificantDigits, "binomial"); + int writeTextInBuffer(char * buffer, int bufferSize, PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { + return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, "binomial"); } /* Simplification */ Expression * shallowReduce(Context& context, AngleUnit angleUnit) override; diff --git a/poincare/include/poincare/ceiling.h b/poincare/include/poincare/ceiling.h index 1fe857201..7d50100b1 100644 --- a/poincare/include/poincare/ceiling.h +++ b/poincare/include/poincare/ceiling.h @@ -15,8 +15,8 @@ public: private: /* Layout */ ExpressionLayout * createLayout(PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override; - int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override { - return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, numberOfSignificantDigits, name()); + int writeTextInBuffer(char * buffer, int bufferSize, PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { + return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); } const char * name() const { return "ceil"; } /* Simplification */ diff --git a/poincare/include/poincare/complex_argument.h b/poincare/include/poincare/complex_argument.h index d90003f28..5f99a8add 100644 --- a/poincare/include/poincare/complex_argument.h +++ b/poincare/include/poincare/complex_argument.h @@ -17,8 +17,8 @@ private: ExpressionLayout * createLayout(PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutEngine::createPrefixLayout(this, floatDisplayMode, numberOfSignificantDigits, name()); } - int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override { - return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, numberOfSignificantDigits, name()); + int writeTextInBuffer(char * buffer, int bufferSize, PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { + return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); } const char * name() const { return "arg"; } /* Simplification */ diff --git a/poincare/include/poincare/confidence_interval.h b/poincare/include/poincare/confidence_interval.h index b6ac137b1..0e7fda874 100644 --- a/poincare/include/poincare/confidence_interval.h +++ b/poincare/include/poincare/confidence_interval.h @@ -17,8 +17,8 @@ private: ExpressionLayout * createLayout(PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutEngine::createPrefixLayout(this, floatDisplayMode, numberOfSignificantDigits, name()); } - int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override { - return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, numberOfSignificantDigits, name()); + int writeTextInBuffer(char * buffer, int bufferSize, PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { + return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); } virtual const char * name() const { return "confidence"; } /* Simplification */ diff --git a/poincare/include/poincare/conjugate.h b/poincare/include/poincare/conjugate.h index b8396cee0..997bc49d5 100644 --- a/poincare/include/poincare/conjugate.h +++ b/poincare/include/poincare/conjugate.h @@ -15,8 +15,8 @@ public: private: /* Layout */ ExpressionLayout * createLayout(PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override; - int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override { - return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, numberOfSignificantDigits, "conj"); + int writeTextInBuffer(char * buffer, int bufferSize, PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { + return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, "conj"); } /* Simplification */ Expression * shallowReduce(Context& context, AngleUnit angleUnit) override; diff --git a/poincare/include/poincare/cosine.h b/poincare/include/poincare/cosine.h index d0d4aa281..8868c311c 100644 --- a/poincare/include/poincare/cosine.h +++ b/poincare/include/poincare/cosine.h @@ -24,8 +24,8 @@ private: ExpressionLayout * createLayout(PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutEngine::createPrefixLayout(this, floatDisplayMode, numberOfSignificantDigits, name()); } - int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override { - return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, numberOfSignificantDigits, name()); + int writeTextInBuffer(char * buffer, int bufferSize, PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { + return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); } const char * name() const { return "cos"; } /* Simplication */ diff --git a/poincare/include/poincare/decimal.h b/poincare/include/poincare/decimal.h index ca8190bb0..48b74af93 100644 --- a/poincare/include/poincare/decimal.h +++ b/poincare/include/poincare/decimal.h @@ -23,7 +23,7 @@ public: // Expression subclassing Type type() const override; Expression * clone() const override; - int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override; + int writeTextInBuffer(char * buffer, int bufferSize, PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override; Sign sign() const override { return m_mantissa.isNegative() ? Sign::Negative : Sign::Positive; } private: constexpr static double k_biggestMantissaFromDouble = 999999999999999; diff --git a/poincare/include/poincare/derivative.h b/poincare/include/poincare/derivative.h index afff33779..1ad23fe13 100644 --- a/poincare/include/poincare/derivative.h +++ b/poincare/include/poincare/derivative.h @@ -18,8 +18,8 @@ private: ExpressionLayout * createLayout(PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutEngine::createPrefixLayout(this, floatDisplayMode, numberOfSignificantDigits, name()); } - int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override { - return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, numberOfSignificantDigits, name()); + int writeTextInBuffer(char * buffer, int bufferSize, PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { + return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); } const char * name() const { return "diff"; } /* Simplification */ diff --git a/poincare/include/poincare/determinant.h b/poincare/include/poincare/determinant.h index 7a004d6e1..7ae332105 100644 --- a/poincare/include/poincare/determinant.h +++ b/poincare/include/poincare/determinant.h @@ -16,8 +16,8 @@ private: ExpressionLayout * createLayout(PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutEngine::createPrefixLayout(this, floatDisplayMode, numberOfSignificantDigits, name()); } - int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override { - return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, numberOfSignificantDigits, name()); + int writeTextInBuffer(char * buffer, int bufferSize, PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { + return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); } const char * name() const { return "det"; } /* Simplification */ diff --git a/poincare/include/poincare/division.h b/poincare/include/poincare/division.h index d9108399b..9c62c3bc6 100644 --- a/poincare/include/poincare/division.h +++ b/poincare/include/poincare/division.h @@ -21,8 +21,8 @@ private: /* Layout */ bool needParenthesisWithParent(const Expression * e) const override; ExpressionLayout * createLayout(PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override; - int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override { - return LayoutEngine::writeInfixExpressionTextInBuffer(this, buffer, bufferSize, numberOfSignificantDigits, "/"); + int writeTextInBuffer(char * buffer, int bufferSize, PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { + return LayoutEngine::writeInfixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, "/"); } /* Simplification */ Expression * shallowReduce(Context& context, AngleUnit angleUnit) override; diff --git a/poincare/include/poincare/division_quotient.h b/poincare/include/poincare/division_quotient.h index c199b91af..688b9fb8d 100644 --- a/poincare/include/poincare/division_quotient.h +++ b/poincare/include/poincare/division_quotient.h @@ -16,8 +16,8 @@ private: ExpressionLayout * createLayout(PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutEngine::createPrefixLayout(this, floatDisplayMode, numberOfSignificantDigits, name()); } - int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override { - return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, numberOfSignificantDigits, name()); + int writeTextInBuffer(char * buffer, int bufferSize, PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { + return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); } const char * name() const { return "quo"; } /* Simplification */ diff --git a/poincare/include/poincare/division_remainder.h b/poincare/include/poincare/division_remainder.h index c4ddc367f..85a3877d8 100644 --- a/poincare/include/poincare/division_remainder.h +++ b/poincare/include/poincare/division_remainder.h @@ -16,8 +16,8 @@ private: ExpressionLayout * createLayout(PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutEngine::createPrefixLayout(this, floatDisplayMode, numberOfSignificantDigits, name()); } - int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override { - return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, numberOfSignificantDigits, name()); + int writeTextInBuffer(char * buffer, int bufferSize, PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { + return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); } const char * name() const { return "rem"; } /* Simplification */ diff --git a/poincare/include/poincare/empty_expression.h b/poincare/include/poincare/empty_expression.h index 0cf07d8d4..1c56584a0 100644 --- a/poincare/include/poincare/empty_expression.h +++ b/poincare/include/poincare/empty_expression.h @@ -14,7 +14,7 @@ public: return Type::EmptyExpression; } Expression * clone() const override; - int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override; + int writeTextInBuffer(char * buffer, int bufferSize, PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override; private: /* Layout */ ExpressionLayout * createLayout(PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override; diff --git a/poincare/include/poincare/equal.h b/poincare/include/poincare/equal.h index ff4307458..122de19b8 100644 --- a/poincare/include/poincare/equal.h +++ b/poincare/include/poincare/equal.h @@ -20,8 +20,8 @@ private: Expression * shallowReduce(Context& context, AngleUnit angleUnit) override; /* Layout */ ExpressionLayout * createLayout(PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override; - int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override { - return LayoutEngine::writeInfixExpressionTextInBuffer(this, buffer, bufferSize, numberOfSignificantDigits, "="); + int writeTextInBuffer(char * buffer, int bufferSize, PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { + return LayoutEngine::writeInfixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, "="); } /* Evalutation */ Evaluation * privateApproximate(SinglePrecision p, Context& context, AngleUnit angleUnit) const override { return templatedApproximate(context, angleUnit); } diff --git a/poincare/include/poincare/expression.h b/poincare/include/poincare/expression.h index d9679fd13..5fcb71267 100644 --- a/poincare/include/poincare/expression.h +++ b/poincare/include/poincare/expression.h @@ -245,12 +245,11 @@ public: * order on expresssions. */ return SimplificationOrder(this, e, true) == 0; } - bool isEqualToItsApproximationLayout(Expression * approximation, int bufferSize, int numberOfSignificantDigits, Context & context); + bool isEqualToItsApproximationLayout(Expression * approximation, int bufferSize, PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits, Context & context); /* Layout Engine */ virtual ExpressionLayout * createLayout(PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const = 0; // Returned object must be deleted - //virtual int writeTextInBuffer(char * buffer, int bufferSize, PrintFloat::Mode floatDisplayMode) const = 0; - virtual int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const = 0; + virtual int writeTextInBuffer(char * buffer, int bufferSize, PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const = 0; /* Simplification */ static Expression * ParseAndSimplify(const char * text, Context & context, AngleUnit angleUnit = AngleUnit::Default); diff --git a/poincare/include/poincare/expression_layout.h b/poincare/include/poincare/expression_layout.h index 6c6bdc114..276341fbe 100644 --- a/poincare/include/poincare/expression_layout.h +++ b/poincare/include/poincare/expression_layout.h @@ -92,7 +92,7 @@ public: ExpressionLayoutCursor cursorInDescendantsUnder(ExpressionLayoutCursor cursor, bool * shouldRecomputeLayout); /* Expression Engine */ - virtual int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const = 0; + virtual int writeTextInBuffer(char * buffer, int bufferSize) const = 0; /* Cursor */ virtual ExpressionLayoutCursor equivalentCursor(ExpressionLayoutCursor cursor); diff --git a/poincare/include/poincare/factor.h b/poincare/include/poincare/factor.h index b19cf22d5..35e2cd02d 100644 --- a/poincare/include/poincare/factor.h +++ b/poincare/include/poincare/factor.h @@ -19,8 +19,8 @@ private: ExpressionLayout * createLayout(PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutEngine::createPrefixLayout(this, floatDisplayMode, numberOfSignificantDigits, name()); } - int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override { - return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, numberOfSignificantDigits, name()); + int writeTextInBuffer(char * buffer, int bufferSize, PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { + return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); } const char * name() const { return "factor"; } /* Simplification */ diff --git a/poincare/include/poincare/factorial.h b/poincare/include/poincare/factorial.h index ede783894..8dc09a8ab 100644 --- a/poincare/include/poincare/factorial.h +++ b/poincare/include/poincare/factorial.h @@ -16,7 +16,7 @@ private: /* Layout */ bool needParenthesisWithParent(const Expression * e) const override; ExpressionLayout * createLayout(PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override; - int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override; + int writeTextInBuffer(char * buffer, int bufferSize, PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override; /* Simplication */ Expression * shallowReduce(Context& context, AngleUnit angleUnit) override; Expression * shallowBeautify(Context& context, AngleUnit angleUnit) override; diff --git a/poincare/include/poincare/floor.h b/poincare/include/poincare/floor.h index 84b2071d7..2f40fc19d 100644 --- a/poincare/include/poincare/floor.h +++ b/poincare/include/poincare/floor.h @@ -15,8 +15,8 @@ public: private: /* Layout */ ExpressionLayout * createLayout(PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override; - int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override { - return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, numberOfSignificantDigits, name()); + int writeTextInBuffer(char * buffer, int bufferSize, PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { + return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); } const char * name() const { return "floor"; } /* Simplification */ diff --git a/poincare/include/poincare/frac_part.h b/poincare/include/poincare/frac_part.h index 11dffa05e..b2490bb45 100644 --- a/poincare/include/poincare/frac_part.h +++ b/poincare/include/poincare/frac_part.h @@ -17,8 +17,8 @@ private: ExpressionLayout * createLayout(PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutEngine::createPrefixLayout(this, floatDisplayMode, numberOfSignificantDigits, name()); } - int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override { - return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, numberOfSignificantDigits, name()); + int writeTextInBuffer(char * buffer, int bufferSize, PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { + return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); } const char * name() const { return "frac"; } /* Simplification */ diff --git a/poincare/include/poincare/great_common_divisor.h b/poincare/include/poincare/great_common_divisor.h index 169ffd928..cbfd48a89 100644 --- a/poincare/include/poincare/great_common_divisor.h +++ b/poincare/include/poincare/great_common_divisor.h @@ -16,8 +16,8 @@ private: ExpressionLayout * createLayout(PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutEngine::createPrefixLayout(this, floatDisplayMode, numberOfSignificantDigits, name()); } - int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override { - return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, numberOfSignificantDigits, name()); + int writeTextInBuffer(char * buffer, int bufferSize, PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { + return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); } const char * name() const { return "gcd"; } /* Simplification */ diff --git a/poincare/include/poincare/hyperbolic_arc_cosine.h b/poincare/include/poincare/hyperbolic_arc_cosine.h index 49b49a57e..fc1d8e92d 100644 --- a/poincare/include/poincare/hyperbolic_arc_cosine.h +++ b/poincare/include/poincare/hyperbolic_arc_cosine.h @@ -17,8 +17,8 @@ private: ExpressionLayout * createLayout(PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutEngine::createPrefixLayout(this, floatDisplayMode, numberOfSignificantDigits, name()); } - int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override { - return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, numberOfSignificantDigits, name()); + int writeTextInBuffer(char * buffer, int bufferSize, PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { + return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); } const char * name() const { return "acosh"; } /* Simplification */ diff --git a/poincare/include/poincare/hyperbolic_arc_sine.h b/poincare/include/poincare/hyperbolic_arc_sine.h index df9f73598..b59610954 100644 --- a/poincare/include/poincare/hyperbolic_arc_sine.h +++ b/poincare/include/poincare/hyperbolic_arc_sine.h @@ -17,8 +17,8 @@ private: ExpressionLayout * createLayout(PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutEngine::createPrefixLayout(this, floatDisplayMode, numberOfSignificantDigits, name()); } - int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override { - return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, numberOfSignificantDigits, name()); + int writeTextInBuffer(char * buffer, int bufferSize, PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { + return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); } const char * name() const { return "asinh"; } /* Simplification */ diff --git a/poincare/include/poincare/hyperbolic_arc_tangent.h b/poincare/include/poincare/hyperbolic_arc_tangent.h index 76a589fbc..1e4147530 100644 --- a/poincare/include/poincare/hyperbolic_arc_tangent.h +++ b/poincare/include/poincare/hyperbolic_arc_tangent.h @@ -17,8 +17,8 @@ private: ExpressionLayout * createLayout(PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutEngine::createPrefixLayout(this, floatDisplayMode, numberOfSignificantDigits, name()); } - int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override { - return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, numberOfSignificantDigits, name()); + int writeTextInBuffer(char * buffer, int bufferSize, PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { + return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); } const char * name() const { return "atanh"; } /* Simplification */ diff --git a/poincare/include/poincare/hyperbolic_cosine.h b/poincare/include/poincare/hyperbolic_cosine.h index 244ab6cd8..fe8c7b786 100644 --- a/poincare/include/poincare/hyperbolic_cosine.h +++ b/poincare/include/poincare/hyperbolic_cosine.h @@ -18,8 +18,8 @@ private: ExpressionLayout * createLayout(PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutEngine::createPrefixLayout(this, floatDisplayMode, numberOfSignificantDigits, name()); } - int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override { - return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, numberOfSignificantDigits, name()); + int writeTextInBuffer(char * buffer, int bufferSize, PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { + return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); } const char * name() const { return "cosh"; } /* Simplification */ diff --git a/poincare/include/poincare/hyperbolic_sine.h b/poincare/include/poincare/hyperbolic_sine.h index e80e76929..ada76b87a 100644 --- a/poincare/include/poincare/hyperbolic_sine.h +++ b/poincare/include/poincare/hyperbolic_sine.h @@ -18,8 +18,8 @@ private: ExpressionLayout * createLayout(PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutEngine::createPrefixLayout(this, floatDisplayMode, numberOfSignificantDigits, name()); } - int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override { - return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, numberOfSignificantDigits, name()); + int writeTextInBuffer(char * buffer, int bufferSize, PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { + return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); } const char * name() const { return "sinh"; } /* Simplification */ diff --git a/poincare/include/poincare/hyperbolic_tangent.h b/poincare/include/poincare/hyperbolic_tangent.h index a83306760..928f5d988 100644 --- a/poincare/include/poincare/hyperbolic_tangent.h +++ b/poincare/include/poincare/hyperbolic_tangent.h @@ -18,8 +18,8 @@ private: ExpressionLayout * createLayout(PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutEngine::createPrefixLayout(this, floatDisplayMode, numberOfSignificantDigits, name()); } - int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override { - return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, numberOfSignificantDigits, name()); + int writeTextInBuffer(char * buffer, int bufferSize, PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { + return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); } const char * name() const { return "tanh"; } /* Simplification */ diff --git a/poincare/include/poincare/imaginary_part.h b/poincare/include/poincare/imaginary_part.h index 73bd34999..dd66ef4da 100644 --- a/poincare/include/poincare/imaginary_part.h +++ b/poincare/include/poincare/imaginary_part.h @@ -17,8 +17,8 @@ private: ExpressionLayout * createLayout(PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutEngine::createPrefixLayout(this, floatDisplayMode, numberOfSignificantDigits, name()); } - int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override { - return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, numberOfSignificantDigits, name()); + int writeTextInBuffer(char * buffer, int bufferSize, PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { + return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); } const char * name() const { return "im"; } /* Simplification */ diff --git a/poincare/include/poincare/integral.h b/poincare/include/poincare/integral.h index c21b9b547..f36fcdd82 100644 --- a/poincare/include/poincare/integral.h +++ b/poincare/include/poincare/integral.h @@ -16,8 +16,8 @@ public: private: /* Layout */ ExpressionLayout * createLayout(PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override; - int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override { - return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, numberOfSignificantDigits, "int"); + int writeTextInBuffer(char * buffer, int bufferSize, PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { + return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, "int"); } /* Simplification */ Expression * shallowReduce(Context& context, AngleUnit angleUnit) override; diff --git a/poincare/include/poincare/layout_engine.h b/poincare/include/poincare/layout_engine.h index b210a6722..0478572a2 100644 --- a/poincare/include/poincare/layout_engine.h +++ b/poincare/include/poincare/layout_engine.h @@ -22,12 +22,14 @@ public: const Expression * expression, char * buffer, int bufferSize, + PrintFloat::Mode floatDisplayMode, int numberOfDigits, const char * operatorName); static int writePrefixExpressionTextInBuffer( const Expression * expression, char * buffer, int bufferSize, + PrintFloat::Mode floatDisplayMode, int numberOfDigits, const char * operatorName); @@ -37,7 +39,6 @@ public: const ExpressionLayout * expressionLayout, char * buffer, int bufferSize, - int numberOfDigits, const char * operatorName, int firstChildIndex = 0, int lastChildIndex = -1, @@ -47,7 +48,6 @@ public: const ExpressionLayout * expressionLayout, char * buffer, int bufferSize, - int numberOfDigits, const char * operatorName, bool writeFirstChild = true); @@ -57,8 +57,8 @@ public: private: static constexpr char divideChar = '/'; // These two functions return the index of the null-terminating char. - static int writeInfixExpressionOrExpressionLayoutTextInBuffer(const Expression * expression, const ExpressionLayout * expressionLayout, char * buffer, int bufferSize, int numberOfDigits, const char * operatorName, int firstChildIndex, int lastChildIndex, ChildNeedsParenthesis childNeedsParenthesis); - static int writePrefixExpressionOrExpressionLayoutTextInBuffer(const Expression * expression, const ExpressionLayout * expressionLayout, char * buffer, int bufferSize, int numberOfDigits, const char * operatorName, bool writeFirstChild = true); + static int writeInfixExpressionOrExpressionLayoutTextInBuffer(const Expression * expression, const ExpressionLayout * expressionLayout, char * buffer, int bufferSize, PrintFloat::Mode floatDisplayMode, int numberOfDigits, const char * operatorName, int firstChildIndex, int lastChildIndex, ChildNeedsParenthesis childNeedsParenthesis); + static int writePrefixExpressionOrExpressionLayoutTextInBuffer(const Expression * expression, const ExpressionLayout * expressionLayout, char * buffer, int bufferSize, PrintFloat::Mode floatDisplayMode, int numberOfDigits, const char * operatorName, bool writeFirstChild = true); }; } diff --git a/poincare/include/poincare/least_common_multiple.h b/poincare/include/poincare/least_common_multiple.h index c7990ee01..5169df5e8 100644 --- a/poincare/include/poincare/least_common_multiple.h +++ b/poincare/include/poincare/least_common_multiple.h @@ -16,8 +16,8 @@ private: ExpressionLayout * createLayout(PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutEngine::createPrefixLayout(this, floatDisplayMode, numberOfSignificantDigits, name()); } - int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override { - return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, numberOfSignificantDigits, name()); + int writeTextInBuffer(char * buffer, int bufferSize, PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { + return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); } const char * name() const { return "lcm"; } /* Simplification */ diff --git a/poincare/include/poincare/logarithm.h b/poincare/include/poincare/logarithm.h index d4f574a00..f3a90355c 100644 --- a/poincare/include/poincare/logarithm.h +++ b/poincare/include/poincare/logarithm.h @@ -16,8 +16,8 @@ public: private: /* Layout */ ExpressionLayout * createLayout(PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override; - int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override { - return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, numberOfSignificantDigits, "log"); + int writeTextInBuffer(char * buffer, int bufferSize, PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { + return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, "log"); } /* Simplification */ Expression * shallowReduce(Context & context, AngleUnit angleUnit) override; diff --git a/poincare/include/poincare/matrix.h b/poincare/include/poincare/matrix.h index d4919e1d8..91c2c391c 100644 --- a/poincare/include/poincare/matrix.h +++ b/poincare/include/poincare/matrix.h @@ -21,7 +21,7 @@ public: /* Expression */ Type type() const override; Expression * clone() const override; - int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override; + int writeTextInBuffer(char * buffer, int bufferSize, PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override; int polynomialDegree(char symbolName) const override; /* Operation on matrix */ diff --git a/poincare/include/poincare/matrix_dimension.h b/poincare/include/poincare/matrix_dimension.h index 13d66bf90..9e552d5d8 100644 --- a/poincare/include/poincare/matrix_dimension.h +++ b/poincare/include/poincare/matrix_dimension.h @@ -16,8 +16,8 @@ private: ExpressionLayout * createLayout(PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutEngine::createPrefixLayout(this, floatDisplayMode, numberOfSignificantDigits, name()); } - int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override { - return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, numberOfSignificantDigits, name()); + int writeTextInBuffer(char * buffer, int bufferSize, PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { + return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); } const char * name() const { return "dim"; } /* Simplification */ diff --git a/poincare/include/poincare/matrix_inverse.h b/poincare/include/poincare/matrix_inverse.h index 4ee0ef882..fd0c5b8bc 100644 --- a/poincare/include/poincare/matrix_inverse.h +++ b/poincare/include/poincare/matrix_inverse.h @@ -16,8 +16,8 @@ private: ExpressionLayout * createLayout(PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutEngine::createPrefixLayout(this, floatDisplayMode, numberOfSignificantDigits, name()); } - int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override { - return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, numberOfSignificantDigits, name()); + int writeTextInBuffer(char * buffer, int bufferSize, PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { + return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); } const char * name() const { return "inverse"; } /* Simplification */ diff --git a/poincare/include/poincare/matrix_trace.h b/poincare/include/poincare/matrix_trace.h index a10abbbd5..96203cda6 100644 --- a/poincare/include/poincare/matrix_trace.h +++ b/poincare/include/poincare/matrix_trace.h @@ -16,8 +16,8 @@ private: ExpressionLayout * createLayout(PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutEngine::createPrefixLayout(this, floatDisplayMode, numberOfSignificantDigits, name()); } - int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override { - return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, numberOfSignificantDigits, name()); + int writeTextInBuffer(char * buffer, int bufferSize, PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { + return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); } const char * name() const { return "trace"; } /* Simplification */ diff --git a/poincare/include/poincare/matrix_transpose.h b/poincare/include/poincare/matrix_transpose.h index 08f582db8..6996b1edd 100644 --- a/poincare/include/poincare/matrix_transpose.h +++ b/poincare/include/poincare/matrix_transpose.h @@ -16,8 +16,8 @@ private: ExpressionLayout * createLayout(PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutEngine::createPrefixLayout(this, floatDisplayMode, numberOfSignificantDigits, name()); } - int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override { - return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, numberOfSignificantDigits, name()); + int writeTextInBuffer(char * buffer, int bufferSize, PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { + return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); } const char * name() const { return "transpose"; } /* Simplification */ diff --git a/poincare/include/poincare/multiplication.h b/poincare/include/poincare/multiplication.h index 03911a58d..e5e1e36bf 100644 --- a/poincare/include/poincare/multiplication.h +++ b/poincare/include/poincare/multiplication.h @@ -37,7 +37,7 @@ private: /* Layout */ bool needParenthesisWithParent(const Expression * e) const override; ExpressionLayout * createLayout(PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override; - int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override; + int writeTextInBuffer(char * buffer, int bufferSize, PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override; /* Simplification */ Expression * shallowReduce(Context& context, AngleUnit angleUnit) override; Expression * privateShallowReduce(Context& context, AngleUnit angleUnit, bool expand, bool canBeInterrupted); diff --git a/poincare/include/poincare/naperian_logarithm.h b/poincare/include/poincare/naperian_logarithm.h index 8177aa51d..5c2763833 100644 --- a/poincare/include/poincare/naperian_logarithm.h +++ b/poincare/include/poincare/naperian_logarithm.h @@ -17,8 +17,8 @@ private: ExpressionLayout * createLayout(PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutEngine::createPrefixLayout(this, floatDisplayMode, numberOfSignificantDigits, name()); } - int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override { - return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, numberOfSignificantDigits, name()); + int writeTextInBuffer(char * buffer, int bufferSize, PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { + return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); } const char * name() const { return "ln"; } /* Simplification */ diff --git a/poincare/include/poincare/nth_root.h b/poincare/include/poincare/nth_root.h index 771287640..396113bf7 100644 --- a/poincare/include/poincare/nth_root.h +++ b/poincare/include/poincare/nth_root.h @@ -14,8 +14,8 @@ public: private: /* Layout */ ExpressionLayout * createLayout(PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override; - int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override { - return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, numberOfSignificantDigits, "root"); + int writeTextInBuffer(char * buffer, int bufferSize, PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { + return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, "root"); } /* Simplification */ Expression * shallowReduce(Context& context, AngleUnit angleUnit) override; diff --git a/poincare/include/poincare/opposite.h b/poincare/include/poincare/opposite.h index 11e8b6831..ea0cf3cb9 100644 --- a/poincare/include/poincare/opposite.h +++ b/poincare/include/poincare/opposite.h @@ -19,7 +19,7 @@ private: /* Layout */ bool needParenthesisWithParent(const Expression * e) const override; ExpressionLayout * createLayout(PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override; - int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override; + int writeTextInBuffer(char * buffer, int bufferSize, PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override; /* Simplification */ Expression * shallowReduce(Context& context, AngleUnit angleUnit) override; /* Evaluation */ diff --git a/poincare/include/poincare/parenthesis.h b/poincare/include/poincare/parenthesis.h index ab1020590..88f262b22 100644 --- a/poincare/include/poincare/parenthesis.h +++ b/poincare/include/poincare/parenthesis.h @@ -16,8 +16,8 @@ public: private: /* Layout */ ExpressionLayout * createLayout(PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override; - int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override { - return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, numberOfSignificantDigits, ""); + int writeTextInBuffer(char * buffer, int bufferSize, PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { + return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, ""); } /* Simplification */ Expression * shallowReduce(Context& context, AngleUnit angleUnit) override; diff --git a/poincare/include/poincare/permute_coefficient.h b/poincare/include/poincare/permute_coefficient.h index 0b34b3a92..0f201a890 100644 --- a/poincare/include/poincare/permute_coefficient.h +++ b/poincare/include/poincare/permute_coefficient.h @@ -17,8 +17,8 @@ private: ExpressionLayout * createLayout(PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutEngine::createPrefixLayout(this, floatDisplayMode, numberOfSignificantDigits, name()); } - int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override { - return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, numberOfSignificantDigits, name()); + int writeTextInBuffer(char * buffer, int bufferSize, PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { + return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); } const char * name() const { return "permute"; } /* Simplification */ diff --git a/poincare/include/poincare/power.h b/poincare/include/poincare/power.h index c109af1e9..4f21b5a72 100644 --- a/poincare/include/poincare/power.h +++ b/poincare/include/poincare/power.h @@ -32,8 +32,8 @@ private: /* Layout */ ExpressionLayout * createLayout(PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override; bool needParenthesisWithParent(const Expression * e) const override; - int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override { - return LayoutEngine::writeInfixExpressionTextInBuffer(this, buffer, bufferSize, numberOfSignificantDigits, name()); + int writeTextInBuffer(char * buffer, int bufferSize, PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { + return LayoutEngine::writeInfixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); } static const char * name() { return "^"; } /* Simplify */ diff --git a/poincare/include/poincare/prediction_interval.h b/poincare/include/poincare/prediction_interval.h index d13f141e0..572e60de1 100644 --- a/poincare/include/poincare/prediction_interval.h +++ b/poincare/include/poincare/prediction_interval.h @@ -17,8 +17,8 @@ private: ExpressionLayout * createLayout(PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutEngine::createPrefixLayout(this, floatDisplayMode, numberOfSignificantDigits, name()); } - int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override { - return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, numberOfSignificantDigits, name()); + int writeTextInBuffer(char * buffer, int bufferSize, PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { + return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); } const char * name() const { return "prediction95"; } /* Simplification */ diff --git a/poincare/include/poincare/randint.h b/poincare/include/poincare/randint.h index edebec92d..5625cb7c5 100644 --- a/poincare/include/poincare/randint.h +++ b/poincare/include/poincare/randint.h @@ -16,8 +16,8 @@ private: ExpressionLayout * createLayout(PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutEngine::createPrefixLayout(this, floatDisplayMode, numberOfSignificantDigits, name()); } - int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override { - return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, numberOfSignificantDigits, name()); + int writeTextInBuffer(char * buffer, int bufferSize, PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { + return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); } const char * name() const { return "randint"; } /* Evaluation */ diff --git a/poincare/include/poincare/random.h b/poincare/include/poincare/random.h index a0f7eec2c..19dfc36aa 100644 --- a/poincare/include/poincare/random.h +++ b/poincare/include/poincare/random.h @@ -19,8 +19,8 @@ private: ExpressionLayout * createLayout(PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutEngine::createPrefixLayout(this, floatDisplayMode, numberOfSignificantDigits, name()); } - int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override { - return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, numberOfSignificantDigits, name()); + int writeTextInBuffer(char * buffer, int bufferSize, PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { + return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); } const char * name() const { return "random"; } /* Evaluation */ diff --git a/poincare/include/poincare/rational.h b/poincare/include/poincare/rational.h index 47e15dc59..d7be1aff2 100644 --- a/poincare/include/poincare/rational.h +++ b/poincare/include/poincare/rational.h @@ -44,7 +44,7 @@ public: private: bool needParenthesisWithParent(const Expression * e) const override; ExpressionLayout * createLayout(PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override; - int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override; + int writeTextInBuffer(char * buffer, int bufferSize, PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override; Evaluation * privateApproximate(SinglePrecision p, Context& context, AngleUnit angleUnit) const override { return templatedApproximate(context, angleUnit); } Evaluation * privateApproximate(DoublePrecision p, Context& context, AngleUnit angleUnit) const override { return templatedApproximate(context, angleUnit); } template Complex * templatedApproximate(Context& context, Expression::AngleUnit angleUnit) const; diff --git a/poincare/include/poincare/real_part.h b/poincare/include/poincare/real_part.h index f08e0b664..edc2682b5 100644 --- a/poincare/include/poincare/real_part.h +++ b/poincare/include/poincare/real_part.h @@ -17,8 +17,8 @@ private: ExpressionLayout * createLayout(PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutEngine::createPrefixLayout(this, floatDisplayMode, numberOfSignificantDigits, name()); } - int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override { - return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, numberOfSignificantDigits, name()); + int writeTextInBuffer(char * buffer, int bufferSize, PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { + return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); } const char * name() const { return "re"; } /* Simplification */ diff --git a/poincare/include/poincare/round.h b/poincare/include/poincare/round.h index e4c9344d3..dd63cb878 100644 --- a/poincare/include/poincare/round.h +++ b/poincare/include/poincare/round.h @@ -16,8 +16,8 @@ private: ExpressionLayout * createLayout(PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutEngine::createPrefixLayout(this, floatDisplayMode, numberOfSignificantDigits, name()); } - int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override { - return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, numberOfSignificantDigits, name()); + int writeTextInBuffer(char * buffer, int bufferSize, PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { + return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); } const char * name() const { return "round"; } /* Simplification */ diff --git a/poincare/include/poincare/sequence.h b/poincare/include/poincare/sequence.h index 3eed68bae..6c76e5871 100644 --- a/poincare/include/poincare/sequence.h +++ b/poincare/include/poincare/sequence.h @@ -11,8 +11,8 @@ class Sequence : public StaticHierarchy<3> { using StaticHierarchy<3>::StaticHierarchy; private: ExpressionLayout * createLayout(PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override; - int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override { - return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, numberOfSignificantDigits, name()); + int writeTextInBuffer(char * buffer, int bufferSize, PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { + return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); } virtual ExpressionLayout * createSequenceLayoutWithArgumentLayouts(ExpressionLayout * subscriptLayout, ExpressionLayout * superscriptLayout, ExpressionLayout * argumentLayout) const = 0; virtual const char * name() const = 0; diff --git a/poincare/include/poincare/simplification_root.h b/poincare/include/poincare/simplification_root.h index d365996dd..33f112e6e 100644 --- a/poincare/include/poincare/simplification_root.h +++ b/poincare/include/poincare/simplification_root.h @@ -23,7 +23,7 @@ public: ExpressionLayout * createLayout(PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { return nullptr; } - int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override { return 0; } + int writeTextInBuffer(char * buffer, int bufferSize, PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { return 0; } Evaluation * privateApproximate(SinglePrecision p, Context& context, AngleUnit angleUnit) const override { assert(false); return nullptr; diff --git a/poincare/include/poincare/sine.h b/poincare/include/poincare/sine.h index 2ec5a6e02..f19f68c5c 100644 --- a/poincare/include/poincare/sine.h +++ b/poincare/include/poincare/sine.h @@ -23,8 +23,8 @@ private: ExpressionLayout * createLayout(PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutEngine::createPrefixLayout(this, floatDisplayMode, numberOfSignificantDigits, name()); } - int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override { - return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, numberOfSignificantDigits, name()); + int writeTextInBuffer(char * buffer, int bufferSize, PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { + return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); } const char * name() const { return "sin"; } /* Simplication */ diff --git a/poincare/include/poincare/square_root.h b/poincare/include/poincare/square_root.h index af955a283..7e31586b4 100644 --- a/poincare/include/poincare/square_root.h +++ b/poincare/include/poincare/square_root.h @@ -15,7 +15,7 @@ public: private: /* Layout */ ExpressionLayout * createLayout(PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override; - int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override; + int writeTextInBuffer(char * buffer, int bufferSize, PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override; /* Simplification */ Expression * shallowReduce(Context& context, AngleUnit angleUnit) override; /* Evaluation */ diff --git a/poincare/include/poincare/store.h b/poincare/include/poincare/store.h index 46afda631..06bd23747 100644 --- a/poincare/include/poincare/store.h +++ b/poincare/include/poincare/store.h @@ -19,7 +19,7 @@ private: Expression * shallowReduce(Context& context, AngleUnit angleUnit) override; /* Layout */ ExpressionLayout * createLayout(PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override; - int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override; + int writeTextInBuffer(char * buffer, int bufferSize, PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override; /* Evalutation */ Evaluation * privateApproximate(SinglePrecision p, Context& context, AngleUnit angleUnit) const override { return templatedApproximate(context, angleUnit); } Evaluation * privateApproximate(DoublePrecision p, Context& context, AngleUnit angleUnit) const override { return templatedApproximate(context, angleUnit); } diff --git a/poincare/include/poincare/subtraction.h b/poincare/include/poincare/subtraction.h index ff370e4d8..84041d3f9 100644 --- a/poincare/include/poincare/subtraction.h +++ b/poincare/include/poincare/subtraction.h @@ -20,8 +20,8 @@ private: ExpressionLayout * createLayout(PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutEngine::createInfixLayout(this, floatDisplayMode, numberOfSignificantDigits, name()); } - int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override { - return LayoutEngine::writeInfixExpressionTextInBuffer(this, buffer, bufferSize, numberOfSignificantDigits, name()); + int writeTextInBuffer(char * buffer, int bufferSize, PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { + return LayoutEngine::writeInfixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); } static const char * name() { return "-"; } /* Simplification */ diff --git a/poincare/include/poincare/symbol.h b/poincare/include/poincare/symbol.h index b91dac216..3ede81851 100644 --- a/poincare/include/poincare/symbol.h +++ b/poincare/include/poincare/symbol.h @@ -69,7 +69,7 @@ private: int simplificationOrderSameType(const Expression * e, bool canBeInterrupted) const override; /* Layout */ ExpressionLayout * createLayout(PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override; - int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override; + int writeTextInBuffer(char * buffer, int bufferSize, PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override; /* Evaluation */ Evaluation * privateApproximate(SinglePrecision p, Context& context, AngleUnit angleUnit) const override { return templatedApproximate(context, angleUnit); } Evaluation * privateApproximate(DoublePrecision p, Context& context, AngleUnit angleUnit) const override { return templatedApproximate(context, angleUnit); } diff --git a/poincare/include/poincare/tangent.h b/poincare/include/poincare/tangent.h index 2a72cef23..8c86306e1 100644 --- a/poincare/include/poincare/tangent.h +++ b/poincare/include/poincare/tangent.h @@ -19,8 +19,8 @@ private: ExpressionLayout * createLayout(PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutEngine::createPrefixLayout(this, floatDisplayMode, numberOfSignificantDigits, name()); } - int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override { - return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, numberOfSignificantDigits, name()); + int writeTextInBuffer(char * buffer, int bufferSize, PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override { + return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); } const char * name() const { return "tan"; } /* Simplication */ diff --git a/poincare/include/poincare/undefined.h b/poincare/include/poincare/undefined.h index 554c00fd9..90259fbfc 100644 --- a/poincare/include/poincare/undefined.h +++ b/poincare/include/poincare/undefined.h @@ -10,7 +10,7 @@ class Undefined : public StaticHierarchy<0> { public: Type type() const override; Expression * clone() const override; - int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override; + int writeTextInBuffer(char * buffer, int bufferSize, PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override; int polynomialDegree(char symbolName) const override; private: /* Layout */ diff --git a/poincare/src/decimal.cpp b/poincare/src/decimal.cpp index 40fa392cd..2734838af 100644 --- a/poincare/src/decimal.cpp +++ b/poincare/src/decimal.cpp @@ -205,8 +205,8 @@ int Decimal::convertToText(char * buffer, int bufferSize, PrintFloat::Mode mode, return currentChar; } -int Decimal::writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits) const { - return convertToText(buffer, bufferSize, PrintFloat::Mode::Decimal, PrintFloat::k_numberOfStoredSignificantDigits); +int Decimal::writeTextInBuffer(char * buffer, int bufferSize, PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const { + return convertToText(buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits); } bool Decimal::needParenthesisWithParent(const Expression * e) const { diff --git a/poincare/src/empty_expression.cpp b/poincare/src/empty_expression.cpp index b1f27ade4..8aaecdc3b 100644 --- a/poincare/src/empty_expression.cpp +++ b/poincare/src/empty_expression.cpp @@ -13,7 +13,7 @@ Expression * EmptyExpression::clone() const { return new EmptyExpression(); } -int EmptyExpression::writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits) const { +int EmptyExpression::writeTextInBuffer(char * buffer, int bufferSize, PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const { return LayoutEngine::writeOneCharInBuffer(buffer, bufferSize, Ion::Charset::Empty); } diff --git a/poincare/src/expression.cpp b/poincare/src/expression.cpp index fa92347e0..a379e4721 100644 --- a/poincare/src/expression.cpp +++ b/poincare/src/expression.cpp @@ -335,9 +335,9 @@ int Expression::SimplificationOrder(const Expression * e1, const Expression * e2 } } -bool Expression::isEqualToItsApproximationLayout(Expression * approximation, int bufferSize, int numberOfSignificantDigits, Context & context) { +bool Expression::isEqualToItsApproximationLayout(Expression * approximation, int bufferSize, PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits, Context & context) { char buffer[bufferSize]; - approximation->writeTextInBuffer(buffer, bufferSize, numberOfSignificantDigits); + approximation->writeTextInBuffer(buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits); /* Warning: we cannot use directly the the approximate expression but we have * to re-serialize it because the number of stored significative * numbers and the number of displayed significative numbers might not be diff --git a/poincare/src/factorial.cpp b/poincare/src/factorial.cpp index c3f732814..a4c553b33 100644 --- a/poincare/src/factorial.cpp +++ b/poincare/src/factorial.cpp @@ -99,7 +99,7 @@ ExpressionLayout * Factorial::createLayout(PrintFloat::Mode floatDisplayMode, in return result; } -int Factorial::writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits) const { +int Factorial::writeTextInBuffer(char * buffer, int bufferSize, PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const { if (bufferSize == 0) { return -1; } @@ -109,7 +109,7 @@ int Factorial::writeTextInBuffer(char * buffer, int bufferSize, int numberOfSign buffer[numberOfChar++] = '('; if (numberOfChar >= bufferSize-1) { return bufferSize-1; } } - numberOfChar += operand(0)->writeTextInBuffer(buffer+numberOfChar, bufferSize-numberOfChar, numberOfSignificantDigits); + numberOfChar += operand(0)->writeTextInBuffer(buffer+numberOfChar, bufferSize-numberOfChar, floatDisplayMode, numberOfSignificantDigits); if (operand(0)->needParenthesisWithParent(this)) { buffer[numberOfChar++] = ')'; if (numberOfChar >= bufferSize-1) { return bufferSize-1; } diff --git a/poincare/src/layout/absolute_value_layout.h b/poincare/src/layout/absolute_value_layout.h index c9ad4a6a0..f524d91af 100644 --- a/poincare/src/layout/absolute_value_layout.h +++ b/poincare/src/layout/absolute_value_layout.h @@ -11,8 +11,8 @@ class AbsoluteValueLayout : public BracketPairLayout { public: using BracketPairLayout::BracketPairLayout; ExpressionLayout * clone() const override; - int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override { - return LayoutEngine::writePrefixExpressionLayoutTextInBuffer(this, buffer, bufferSize, numberOfSignificantDigits, "abs"); + int writeTextInBuffer(char * buffer, int bufferSize) const override { + return LayoutEngine::writePrefixExpressionLayoutTextInBuffer(this, buffer, bufferSize, "abs"); } protected: KDCoordinate widthMargin() const override { return 2; } diff --git a/poincare/src/layout/binomial_coefficient_layout.h b/poincare/src/layout/binomial_coefficient_layout.h index f53ac8baf..92a1742ab 100644 --- a/poincare/src/layout/binomial_coefficient_layout.h +++ b/poincare/src/layout/binomial_coefficient_layout.h @@ -19,8 +19,8 @@ public: ExpressionLayoutCursor cursorUnder(ExpressionLayoutCursor cursor, bool * shouldRecomputeLayout, bool equivalentPositionVisited = false) override; // Serialization - int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override { - return LayoutEngine::writePrefixExpressionLayoutTextInBuffer(this, buffer, bufferSize, numberOfSignificantDigits, "binomial"); + int writeTextInBuffer(char * buffer, int bufferSize) const override { + return LayoutEngine::writePrefixExpressionLayoutTextInBuffer(this, buffer, bufferSize, "binomial"); } protected: diff --git a/poincare/src/layout/bracket_pair_layout.cpp b/poincare/src/layout/bracket_pair_layout.cpp index 96a6c97ec..30f48e096 100644 --- a/poincare/src/layout/bracket_pair_layout.cpp +++ b/poincare/src/layout/bracket_pair_layout.cpp @@ -80,7 +80,7 @@ ExpressionLayoutCursor BracketPairLayout::cursorRightOf(ExpressionLayoutCursor c return ExpressionLayoutCursor(); } -int BracketPairLayout::writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits) const { +int BracketPairLayout::writeTextInBuffer(char * buffer, int bufferSize) const { if (bufferSize == 0) { return -1; } diff --git a/poincare/src/layout/bracket_pair_layout.h b/poincare/src/layout/bracket_pair_layout.h index 25fbef9b9..0a7d0148c 100644 --- a/poincare/src/layout/bracket_pair_layout.h +++ b/poincare/src/layout/bracket_pair_layout.h @@ -23,7 +23,7 @@ public: ExpressionLayoutCursor cursorRightOf(ExpressionLayoutCursor cursor, bool * shouldRecomputeLayout) override; // Serialization - int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override; + int writeTextInBuffer(char * buffer, int bufferSize) const override; protected: ExpressionLayout * operandLayout() { return editableChild(0); } KDCoordinate externWidthMargin() const { return 2; } diff --git a/poincare/src/layout/ceiling_layout.h b/poincare/src/layout/ceiling_layout.h index 0a456ed6a..b5f1d5bb9 100644 --- a/poincare/src/layout/ceiling_layout.h +++ b/poincare/src/layout/ceiling_layout.h @@ -10,8 +10,8 @@ class CeilingLayout : public BracketPairLayout { public: using BracketPairLayout::BracketPairLayout; ExpressionLayout * clone() const override; - int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override { - return LayoutEngine::writePrefixExpressionLayoutTextInBuffer(this, buffer, bufferSize, numberOfSignificantDigits, "ceil"); + int writeTextInBuffer(char * buffer, int bufferSize) const override { + return LayoutEngine::writePrefixExpressionLayoutTextInBuffer(this, buffer, bufferSize, "ceil"); } protected: bool renderBottomBar() const override { return false; } diff --git a/poincare/src/layout/char_layout.h b/poincare/src/layout/char_layout.h index 79da87bd2..71a8fccde 100644 --- a/poincare/src/layout/char_layout.h +++ b/poincare/src/layout/char_layout.h @@ -22,7 +22,7 @@ public: ExpressionLayoutCursor cursorRightOf(ExpressionLayoutCursor cursor, bool * shouldRecomputeLayout) override; // Serialization - int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override { + int writeTextInBuffer(char * buffer, int bufferSize) const override { return LayoutEngine::writeOneCharInBuffer(buffer, bufferSize, m_char); } diff --git a/poincare/src/layout/condensed_sum_layout.h b/poincare/src/layout/condensed_sum_layout.h index 372c9d6e8..f5f8feea1 100644 --- a/poincare/src/layout/condensed_sum_layout.h +++ b/poincare/src/layout/condensed_sum_layout.h @@ -33,8 +33,8 @@ public: } // Serialization - int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override { - return LayoutEngine::writePrefixExpressionLayoutTextInBuffer(this, buffer, bufferSize, numberOfSignificantDigits, "sum"); + int writeTextInBuffer(char * buffer, int bufferSize) const override { + return LayoutEngine::writePrefixExpressionLayoutTextInBuffer(this, buffer, bufferSize, "sum"); } // Other diff --git a/poincare/src/layout/conjugate_layout.h b/poincare/src/layout/conjugate_layout.h index e29f3fc8a..1b3d2de3c 100644 --- a/poincare/src/layout/conjugate_layout.h +++ b/poincare/src/layout/conjugate_layout.h @@ -23,8 +23,8 @@ public: ExpressionLayoutCursor cursorRightOf(ExpressionLayoutCursor cursor, bool * shouldRecomputeLayout) override; // Serialization - int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override { - return LayoutEngine::writePrefixExpressionLayoutTextInBuffer(this, buffer, bufferSize, numberOfSignificantDigits, "conj"); + int writeTextInBuffer(char * buffer, int bufferSize) const override { + return LayoutEngine::writePrefixExpressionLayoutTextInBuffer(this, buffer, bufferSize, "conj"); } protected: void render(KDContext * ctx, KDPoint p, KDColor expressionColor, KDColor backgroundColor) override; diff --git a/poincare/src/layout/empty_layout.cpp b/poincare/src/layout/empty_layout.cpp index 535599ec5..9265ad2b5 100644 --- a/poincare/src/layout/empty_layout.cpp +++ b/poincare/src/layout/empty_layout.cpp @@ -47,7 +47,7 @@ ExpressionLayoutCursor EmptyLayout::cursorRightOf(ExpressionLayoutCursor cursor, return ExpressionLayoutCursor(); } -int EmptyLayout::writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits) const { +int EmptyLayout::writeTextInBuffer(char * buffer, int bufferSize) const { if (bufferSize == 0) { return -1; } diff --git a/poincare/src/layout/empty_layout.h b/poincare/src/layout/empty_layout.h index 77ce71b3a..e059e8efb 100644 --- a/poincare/src/layout/empty_layout.h +++ b/poincare/src/layout/empty_layout.h @@ -30,7 +30,7 @@ public: ExpressionLayoutCursor cursorRightOf(ExpressionLayoutCursor cursor, bool * shouldRecomputeLayout) override; // Serialization - int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override; + int writeTextInBuffer(char * buffer, int bufferSize) const override; // Other bool isEmpty() const override { return true; } diff --git a/poincare/src/layout/floor_layout.h b/poincare/src/layout/floor_layout.h index bd5300b1d..8f4c57428 100644 --- a/poincare/src/layout/floor_layout.h +++ b/poincare/src/layout/floor_layout.h @@ -10,8 +10,8 @@ class FloorLayout : public BracketPairLayout { public: using BracketPairLayout::BracketPairLayout; ExpressionLayout * clone() const override; - int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override { - return LayoutEngine::writePrefixExpressionLayoutTextInBuffer(this, buffer, bufferSize, numberOfSignificantDigits, "floor"); + int writeTextInBuffer(char * buffer, int bufferSize) const override { + return LayoutEngine::writePrefixExpressionLayoutTextInBuffer(this, buffer, bufferSize, "floor"); } protected: bool renderTopBar() const override { return false; } diff --git a/poincare/src/layout/fraction_layout.cpp b/poincare/src/layout/fraction_layout.cpp index 8782aafb5..a118ae92a 100644 --- a/poincare/src/layout/fraction_layout.cpp +++ b/poincare/src/layout/fraction_layout.cpp @@ -177,7 +177,7 @@ ExpressionLayoutCursor FractionLayout::cursorUnder(ExpressionLayoutCursor cursor return ExpressionLayout::cursorUnder(cursor, shouldRecomputeLayout, equivalentPositionVisited); } -int FractionLayout::writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits) const { +int FractionLayout::writeTextInBuffer(char * buffer, int bufferSize) const { if (bufferSize == 0) { return -1; } @@ -205,7 +205,7 @@ int FractionLayout::writeTextInBuffer(char * buffer, int bufferSize, int numberO } // Write the content of the fraction - numberOfChar += LayoutEngine::writeInfixExpressionLayoutTextInBuffer(this, buffer+numberOfChar, bufferSize-numberOfChar, numberOfSignificantDigits, "/"); + numberOfChar += LayoutEngine::writeInfixExpressionLayoutTextInBuffer(this, buffer+numberOfChar, bufferSize-numberOfChar, "/"); if (numberOfChar >= bufferSize-1) { return bufferSize-1; } if (addParenthesis) { diff --git a/poincare/src/layout/fraction_layout.h b/poincare/src/layout/fraction_layout.h index 31562945f..87ccf84e1 100644 --- a/poincare/src/layout/fraction_layout.h +++ b/poincare/src/layout/fraction_layout.h @@ -24,7 +24,7 @@ public: ExpressionLayoutCursor cursorUnder(ExpressionLayoutCursor cursor, bool * shouldRecomputeLayout, bool equivalentPositionVisited = false) override; // Serialization - int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override; + int writeTextInBuffer(char * buffer, int bufferSize) const override; // Other ExpressionLayout * layoutToPointWhenInserting() override; diff --git a/poincare/src/layout/grid_layout.h b/poincare/src/layout/grid_layout.h index 7dd23a0e1..8ff09bfcd 100644 --- a/poincare/src/layout/grid_layout.h +++ b/poincare/src/layout/grid_layout.h @@ -24,7 +24,7 @@ public: * children, do not call this function. */ // Serialization - int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override { return 0; } + int writeTextInBuffer(char * buffer, int bufferSize) const override { return 0; } protected: void render(KDContext * ctx, KDPoint p, KDColor expressionColor, KDColor backgroundColor) override; diff --git a/poincare/src/layout/horizontal_layout.cpp b/poincare/src/layout/horizontal_layout.cpp index 139c664f5..3afcf3930 100644 --- a/poincare/src/layout/horizontal_layout.cpp +++ b/poincare/src/layout/horizontal_layout.cpp @@ -285,7 +285,7 @@ void HorizontalLayout::mergeChildrenAtIndex(DynamicLayoutHierarchy * eL, int ind DynamicLayoutHierarchy::mergeChildrenAtIndex(eL, newIndex, removeEmptyChildren); } -int HorizontalLayout::writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits) const { +int HorizontalLayout::writeTextInBuffer(char * buffer, int bufferSize) const { if (numberOfChildren() == 0) { if (bufferSize == 0) { return -1; @@ -293,7 +293,7 @@ int HorizontalLayout::writeTextInBuffer(char * buffer, int bufferSize, int numbe buffer[0] = 0; return 0; } - return LayoutEngine::writeInfixExpressionLayoutTextInBuffer(this, buffer, bufferSize, numberOfSignificantDigits, ""); + return LayoutEngine::writeInfixExpressionLayoutTextInBuffer(this, buffer, bufferSize, ""); } ExpressionLayoutCursor HorizontalLayout::equivalentCursor(ExpressionLayoutCursor cursor) { diff --git a/poincare/src/layout/horizontal_layout.h b/poincare/src/layout/horizontal_layout.h index f4f0b03b9..6a2036653 100644 --- a/poincare/src/layout/horizontal_layout.h +++ b/poincare/src/layout/horizontal_layout.h @@ -36,7 +36,7 @@ public: void mergeChildrenAtIndex(DynamicLayoutHierarchy * eL, int index, bool removeEmptyChildren) override; // Serialization - int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override; + int writeTextInBuffer(char * buffer, int bufferSize) const override; // Cursor ExpressionLayoutCursor equivalentCursor(ExpressionLayoutCursor cursor) override; diff --git a/poincare/src/layout/integral_layout.cpp b/poincare/src/layout/integral_layout.cpp index 81d4b91b0..7680441ec 100644 --- a/poincare/src/layout/integral_layout.cpp +++ b/poincare/src/layout/integral_layout.cpp @@ -133,7 +133,7 @@ ExpressionLayoutCursor IntegralLayout::cursorUnder(ExpressionLayoutCursor cursor return ExpressionLayout::cursorUnder(cursor, shouldRecomputeLayout, equivalentPositionVisited); } -int IntegralLayout::writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits) const { +int IntegralLayout::writeTextInBuffer(char * buffer, int bufferSize) const { if (bufferSize == 0) { return -1; } @@ -152,7 +152,7 @@ int IntegralLayout::writeTextInBuffer(char * buffer, int bufferSize, int numberO } // Write the argument - numberOfChar += const_cast(this)->integrandLayout()->writeTextInBuffer(buffer+numberOfChar, bufferSize-numberOfChar, numberOfSignificantDigits); + numberOfChar += const_cast(this)->integrandLayout()->writeTextInBuffer(buffer+numberOfChar, bufferSize-numberOfChar); if (numberOfChar >= bufferSize-1) { return bufferSize-1; } // Write the comma @@ -160,7 +160,7 @@ int IntegralLayout::writeTextInBuffer(char * buffer, int bufferSize, int numberO if (numberOfChar >= bufferSize-1) { return bufferSize-1; } // Write the lower bound - numberOfChar += const_cast(this)->lowerBoundLayout()->writeTextInBuffer(buffer+numberOfChar, bufferSize-numberOfChar, numberOfSignificantDigits); + numberOfChar += const_cast(this)->lowerBoundLayout()->writeTextInBuffer(buffer+numberOfChar, bufferSize-numberOfChar); if (numberOfChar >= bufferSize-1) { return bufferSize-1; } // Write the comma @@ -168,7 +168,7 @@ int IntegralLayout::writeTextInBuffer(char * buffer, int bufferSize, int numberO if (numberOfChar >= bufferSize-1) { return bufferSize-1; } // Write the upper bound - numberOfChar += const_cast(this)->upperBoundLayout()->writeTextInBuffer(buffer+numberOfChar, bufferSize-numberOfChar, numberOfSignificantDigits); + numberOfChar += const_cast(this)->upperBoundLayout()->writeTextInBuffer(buffer+numberOfChar, bufferSize-numberOfChar); if (numberOfChar >= bufferSize-1) { return bufferSize-1; } // Write the closing parenthesis diff --git a/poincare/src/layout/integral_layout.h b/poincare/src/layout/integral_layout.h index f577fb382..6650dcaf7 100644 --- a/poincare/src/layout/integral_layout.h +++ b/poincare/src/layout/integral_layout.h @@ -24,7 +24,7 @@ public: ExpressionLayoutCursor cursorUnder(ExpressionLayoutCursor cursor, bool * shouldRecomputeLayout, bool equivalentPositionVisited = false) override; // Serialization - int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override; + int writeTextInBuffer(char * buffer, int bufferSize) const override; // Other ExpressionLayout * layoutToPointWhenInserting() override { diff --git a/poincare/src/layout/left_parenthesis_layout.h b/poincare/src/layout/left_parenthesis_layout.h index 2d9878c5c..fa72b57f8 100644 --- a/poincare/src/layout/left_parenthesis_layout.h +++ b/poincare/src/layout/left_parenthesis_layout.h @@ -12,7 +12,7 @@ class LeftParenthesisLayout : public ParenthesisLayout { public: using ParenthesisLayout::ParenthesisLayout; ExpressionLayout * clone() const override; - int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override { + int writeTextInBuffer(char * buffer, int bufferSize) const override { return LayoutEngine::writeOneCharInBuffer(buffer, bufferSize, '('); } bool isCollapsable(int * numberOfOpenParenthesis, bool goingLeft) const override; diff --git a/poincare/src/layout/left_square_bracket_layout.h b/poincare/src/layout/left_square_bracket_layout.h index b07709fda..795572503 100644 --- a/poincare/src/layout/left_square_bracket_layout.h +++ b/poincare/src/layout/left_square_bracket_layout.h @@ -10,7 +10,7 @@ class LeftSquareBracketLayout : public SquareBracketLayout { public: using SquareBracketLayout::SquareBracketLayout; ExpressionLayout * clone() const override; - int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override { + int writeTextInBuffer(char * buffer, int bufferSize) const override { return LayoutEngine::writeOneCharInBuffer(buffer, bufferSize, '['); } bool isLeftBracket() const override { return true; } diff --git a/poincare/src/layout/matrix_layout.cpp b/poincare/src/layout/matrix_layout.cpp index 89d709242..35d3831d0 100644 --- a/poincare/src/layout/matrix_layout.cpp +++ b/poincare/src/layout/matrix_layout.cpp @@ -116,7 +116,7 @@ void MatrixLayout::removePointedChildAtIndexAndMoveCursor(int index, bool delete replaceChildAndMoveCursor(child(index), new EmptyLayout(), deleteAfterRemoval, cursor); } -int MatrixLayout::writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits) const { +int MatrixLayout::writeTextInBuffer(char * buffer, int bufferSize) const { // The grid is a matrix. if (bufferSize == 0) { return -1; @@ -134,8 +134,9 @@ int MatrixLayout::writeTextInBuffer(char * buffer, int bufferSize, int numberOfS buffer[numberOfChar++] = '['; if (numberOfChar >= bufferSize-1) { return bufferSize-1;} - numberOfChar += LayoutEngine::writeInfixExpressionLayoutTextInBuffer(this, buffer+numberOfChar, bufferSize-numberOfChar, numberOfSignificantDigits, ",", i*m_numberOfColumns, i* m_numberOfColumns + maxColumnIndex); + numberOfChar += LayoutEngine::writeInfixExpressionLayoutTextInBuffer(this, buffer+numberOfChar, bufferSize-numberOfChar, ",", i*m_numberOfColumns, i* m_numberOfColumns + maxColumnIndex); if (numberOfChar >= bufferSize-1) { return bufferSize-1; } + buffer[numberOfChar++] = ']'; if (numberOfChar >= bufferSize-1) { return bufferSize-1; } } diff --git a/poincare/src/layout/matrix_layout.h b/poincare/src/layout/matrix_layout.h index 91b74fbf3..851a7b942 100644 --- a/poincare/src/layout/matrix_layout.h +++ b/poincare/src/layout/matrix_layout.h @@ -25,7 +25,7 @@ public: void removePointedChildAtIndexAndMoveCursor(int index, bool deleteAfterRemoval, ExpressionLayoutCursor * cursor) override; // Serialization - int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override; + int writeTextInBuffer(char * buffer, int bufferSize) const override; // Other bool isMatrix() const override { return true; } diff --git a/poincare/src/layout/nth_root_layout.cpp b/poincare/src/layout/nth_root_layout.cpp index 9bfe5e189..795c653f9 100644 --- a/poincare/src/layout/nth_root_layout.cpp +++ b/poincare/src/layout/nth_root_layout.cpp @@ -150,17 +150,17 @@ ExpressionLayoutCursor NthRootLayout::cursorUnder(ExpressionLayoutCursor cursor, } static_assert('\x91' == Ion::Charset::Root, "Unicode error"); -int NthRootLayout::writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits) const { +int NthRootLayout::writeTextInBuffer(char * buffer, int bufferSize) const { // Case: root(x,n) if (numberOfChildren() == 2 && (const_cast(this))->indexLayout() && !(const_cast(this))->indexLayout()->isEmpty()) { - return LayoutEngine::writePrefixExpressionLayoutTextInBuffer(this, buffer, bufferSize, numberOfSignificantDigits, "root"); + return LayoutEngine::writePrefixExpressionLayoutTextInBuffer(this, buffer, bufferSize, "root"); } // Case: squareRoot(x) if (numberOfChildren() == 1) { - return LayoutEngine::writePrefixExpressionLayoutTextInBuffer(this, buffer, bufferSize, numberOfSignificantDigits, "\x91"); + return LayoutEngine::writePrefixExpressionLayoutTextInBuffer(this, buffer, bufferSize, "\x91"); } // Case: root(x,empty) // Write "'SquareRootSymbol'('radicandLayout')". @@ -181,7 +181,7 @@ int NthRootLayout::writeTextInBuffer(char * buffer, int bufferSize, int numberOf return bufferSize-1; } - numberOfChar += (const_cast(this))->radicandLayout()->writeTextInBuffer(buffer+numberOfChar, bufferSize-numberOfChar, numberOfSignificantDigits); + numberOfChar += (const_cast(this))->radicandLayout()->writeTextInBuffer(buffer+numberOfChar, bufferSize-numberOfChar); if (numberOfChar >= bufferSize-1) { return bufferSize-1; } buffer[numberOfChar++] = ')'; diff --git a/poincare/src/layout/nth_root_layout.h b/poincare/src/layout/nth_root_layout.h index 4af03b082..80a0f5a7e 100644 --- a/poincare/src/layout/nth_root_layout.h +++ b/poincare/src/layout/nth_root_layout.h @@ -26,7 +26,7 @@ public: ExpressionLayoutCursor cursorUnder(ExpressionLayoutCursor cursor, bool * shouldRecomputeLayout, bool equivalentPositionVisited = false) override; // Serialization - int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override; + int writeTextInBuffer(char * buffer, int bufferSize) const override; // Other bool hasUpperLeftIndex() const override { return numberOfChildren() > 1; } diff --git a/poincare/src/layout/product_layout.cpp b/poincare/src/layout/product_layout.cpp index f850b8860..2b9120db7 100644 --- a/poincare/src/layout/product_layout.cpp +++ b/poincare/src/layout/product_layout.cpp @@ -9,8 +9,8 @@ ExpressionLayout * ProductLayout::clone() const { return layout; } -int ProductLayout::writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits) const { - return SequenceLayout::writeDerivedClassInBuffer("product", buffer, bufferSize, numberOfSignificantDigits); +int ProductLayout::writeTextInBuffer(char * buffer, int bufferSize) const { + return SequenceLayout::writeDerivedClassInBuffer("product", buffer, bufferSize); } void ProductLayout::render(KDContext * ctx, KDPoint p, KDColor expressionColor, KDColor backgroundColor) { diff --git a/poincare/src/layout/product_layout.h b/poincare/src/layout/product_layout.h index 090aab63d..72750ebbb 100644 --- a/poincare/src/layout/product_layout.h +++ b/poincare/src/layout/product_layout.h @@ -10,7 +10,7 @@ class ProductLayout : public SequenceLayout { public: using SequenceLayout::SequenceLayout; ExpressionLayout * clone() const override; - int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override; + int writeTextInBuffer(char * buffer, int bufferSize) const override; protected: void render(KDContext * ctx, KDPoint p, KDColor expressionColor, KDColor backgroundColor) override; private: diff --git a/poincare/src/layout/right_parenthesis_layout.h b/poincare/src/layout/right_parenthesis_layout.h index a4606acce..0616a71f2 100644 --- a/poincare/src/layout/right_parenthesis_layout.h +++ b/poincare/src/layout/right_parenthesis_layout.h @@ -12,7 +12,7 @@ class RightParenthesisLayout : public ParenthesisLayout { public: using ParenthesisLayout::ParenthesisLayout; ExpressionLayout * clone() const override; - int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override { + int writeTextInBuffer(char * buffer, int bufferSize) const override { return LayoutEngine::writeOneCharInBuffer(buffer, bufferSize, ')'); } bool isCollapsable(int * numberOfOpenParenthesis, bool goingLeft) const override; diff --git a/poincare/src/layout/right_square_bracket_layout.h b/poincare/src/layout/right_square_bracket_layout.h index d99d3e6e4..7f99e35ad 100644 --- a/poincare/src/layout/right_square_bracket_layout.h +++ b/poincare/src/layout/right_square_bracket_layout.h @@ -10,7 +10,7 @@ class RightSquareBracketLayout : public SquareBracketLayout { public: using SquareBracketLayout::SquareBracketLayout; ExpressionLayout * clone() const override; - int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override { + int writeTextInBuffer(char * buffer, int bufferSize) const override { return LayoutEngine::writeOneCharInBuffer(buffer, bufferSize, ']'); } bool isRightBracket() const override { return true; } diff --git a/poincare/src/layout/sequence_layout.cpp b/poincare/src/layout/sequence_layout.cpp index b95f2191a..c059d6ebd 100644 --- a/poincare/src/layout/sequence_layout.cpp +++ b/poincare/src/layout/sequence_layout.cpp @@ -113,7 +113,7 @@ ExpressionLayoutCursor SequenceLayout::cursorUnder(ExpressionLayoutCursor cursor return ExpressionLayout::cursorUnder(cursor, shouldRecomputeLayout, equivalentPositionVisited); } -int SequenceLayout::writeDerivedClassInBuffer(const char * operatorName, char * buffer, int bufferSize, int numberOfSignificantDigits) const { +int SequenceLayout::writeDerivedClassInBuffer(const char * operatorName, char * buffer, int bufferSize) const { assert(operatorName != nullptr); if (bufferSize == 0) { return -1; @@ -129,7 +129,7 @@ int SequenceLayout::writeDerivedClassInBuffer(const char * operatorName, char * if (numberOfChar >= bufferSize-1) { return bufferSize-1; } // Write the argument - numberOfChar += const_cast(this)->argumentLayout()->writeTextInBuffer(buffer+numberOfChar, bufferSize-numberOfChar, numberOfSignificantDigits); + numberOfChar += const_cast(this)->argumentLayout()->writeTextInBuffer(buffer+numberOfChar, bufferSize-numberOfChar); if (numberOfChar >= bufferSize-1) { return bufferSize-1; } // Write the comma @@ -137,7 +137,7 @@ int SequenceLayout::writeDerivedClassInBuffer(const char * operatorName, char * if (numberOfChar >= bufferSize-1) { return bufferSize-1; } // Write the lower bound - numberOfChar += const_cast(this)->lowerBoundLayout()->writeTextInBuffer(buffer+numberOfChar, bufferSize-numberOfChar, numberOfSignificantDigits); + numberOfChar += const_cast(this)->lowerBoundLayout()->writeTextInBuffer(buffer+numberOfChar, bufferSize-numberOfChar); if (numberOfChar >= bufferSize-1) { return bufferSize-1; } // Write the comma @@ -145,7 +145,7 @@ int SequenceLayout::writeDerivedClassInBuffer(const char * operatorName, char * if (numberOfChar >= bufferSize-1) { return bufferSize-1; } // Write the upper bound - numberOfChar += const_cast(this)->upperBoundLayout()->writeTextInBuffer(buffer+numberOfChar, bufferSize-numberOfChar, numberOfSignificantDigits); + numberOfChar += const_cast(this)->upperBoundLayout()->writeTextInBuffer(buffer+numberOfChar, bufferSize-numberOfChar); if (numberOfChar >= bufferSize-1) { return bufferSize-1; } // Write the closing parenthesis diff --git a/poincare/src/layout/sequence_layout.h b/poincare/src/layout/sequence_layout.h index da9f619a6..d4a2cf1fe 100644 --- a/poincare/src/layout/sequence_layout.h +++ b/poincare/src/layout/sequence_layout.h @@ -30,7 +30,7 @@ public: protected: constexpr static KDCoordinate k_boundHeightMargin = 2; constexpr static KDCoordinate k_argumentWidthMargin = 2; - int writeDerivedClassInBuffer(const char * operatorName, char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const; + int writeDerivedClassInBuffer(const char * operatorName, char * buffer, int bufferSize) const; KDSize computeSize() override; KDPoint positionOfChild(ExpressionLayout * eL) override; void render(KDContext * ctx, KDPoint p, KDColor expressionColor, KDColor backgroundColor) override; diff --git a/poincare/src/layout/sum_layout.cpp b/poincare/src/layout/sum_layout.cpp index 41c274556..a38117c97 100644 --- a/poincare/src/layout/sum_layout.cpp +++ b/poincare/src/layout/sum_layout.cpp @@ -27,8 +27,8 @@ ExpressionLayout * SumLayout::clone() const { return layout; } -int SumLayout::writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits) const { - return SequenceLayout::writeDerivedClassInBuffer("sum", buffer, bufferSize, numberOfSignificantDigits); +int SumLayout::writeTextInBuffer(char * buffer, int bufferSize) const { + return SequenceLayout::writeDerivedClassInBuffer("sum", buffer, bufferSize); } void SumLayout::render(KDContext * ctx, KDPoint p, KDColor expressionColor, KDColor backgroundColor) { diff --git a/poincare/src/layout/sum_layout.h b/poincare/src/layout/sum_layout.h index 205ee0831..4f8228921 100644 --- a/poincare/src/layout/sum_layout.h +++ b/poincare/src/layout/sum_layout.h @@ -10,7 +10,7 @@ class SumLayout : public SequenceLayout { public: using SequenceLayout::SequenceLayout; ExpressionLayout * clone() const override; - int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override; + int writeTextInBuffer(char * buffer, int bufferSize) const override; private: void render(KDContext * ctx, KDPoint p, KDColor expressionColor, KDColor backgroundColor) override; }; diff --git a/poincare/src/layout/vertical_offset_layout.cpp b/poincare/src/layout/vertical_offset_layout.cpp index c29fccc05..b54134efa 100644 --- a/poincare/src/layout/vertical_offset_layout.cpp +++ b/poincare/src/layout/vertical_offset_layout.cpp @@ -160,7 +160,7 @@ ExpressionLayoutCursor VerticalOffsetLayout::cursorUnder(ExpressionLayoutCursor return ExpressionLayout::cursorUnder(cursor, shouldRecomputeLayout, equivalentPositionVisited); } -int VerticalOffsetLayout::writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits) const { +int VerticalOffsetLayout::writeTextInBuffer(char * buffer, int bufferSize) const { if (m_type == Type::Subscript) { if (bufferSize == 0) { return -1; @@ -176,7 +176,7 @@ int VerticalOffsetLayout::writeTextInBuffer(char * buffer, int bufferSize, int n numberOfChar += LayoutEngine::writeOneCharInBuffer(buffer+numberOfChar, bufferSize-numberOfChar, '{'); if (numberOfChar >= bufferSize-1) { return bufferSize-1; } - numberOfChar += const_cast(this)->indiceLayout()->writeTextInBuffer(buffer+numberOfChar, bufferSize-numberOfChar, numberOfSignificantDigits); + numberOfChar += const_cast(this)->indiceLayout()->writeTextInBuffer(buffer+numberOfChar, bufferSize-numberOfChar); if (numberOfChar >= bufferSize-1) { return bufferSize-1; } numberOfChar += LayoutEngine::writeOneCharInBuffer(buffer+numberOfChar, bufferSize-numberOfChar, '}'); @@ -186,7 +186,7 @@ int VerticalOffsetLayout::writeTextInBuffer(char * buffer, int bufferSize, int n } assert(m_type == Type::Superscript); // If the layout is a superscript, write "^(indice)" - int numberOfChar = LayoutEngine::writePrefixExpressionLayoutTextInBuffer(this, buffer, bufferSize, numberOfSignificantDigits, "^"); + int numberOfChar = LayoutEngine::writePrefixExpressionLayoutTextInBuffer(this, buffer, bufferSize, "^"); if (numberOfChar >= bufferSize-1) { return bufferSize-1; } // Add a multiplication if omitted. diff --git a/poincare/src/layout/vertical_offset_layout.h b/poincare/src/layout/vertical_offset_layout.h index 02bb3f935..1a0c63a46 100644 --- a/poincare/src/layout/vertical_offset_layout.h +++ b/poincare/src/layout/vertical_offset_layout.h @@ -27,7 +27,7 @@ public: ExpressionLayoutCursor cursorUnder(ExpressionLayoutCursor cursor, bool * shouldRecomputeLayout, bool equivalentPositionVisited = false) override; // Serialization - int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override; + int writeTextInBuffer(char * buffer, int bufferSize) const override; // Other bool mustHaveLeftSibling() const override { return true; } diff --git a/poincare/src/layout_engine.cpp b/poincare/src/layout_engine.cpp index 4034e8229..139e1d042 100644 --- a/poincare/src/layout_engine.cpp +++ b/poincare/src/layout_engine.cpp @@ -74,23 +74,23 @@ ExpressionLayout * LayoutEngine::createLogLayout(ExpressionLayout * argument, Ex return resultLayout; } -int LayoutEngine::writeInfixExpressionTextInBuffer(const Expression * expression, char * buffer, int bufferSize, int numberOfDigits, const char * operatorName) { - return writeInfixExpressionOrExpressionLayoutTextInBuffer(expression, nullptr, buffer, bufferSize, numberOfDigits, operatorName, 0, -1, [](const char * operatorName) { return true; }); +int LayoutEngine::writeInfixExpressionTextInBuffer(const Expression * expression, char * buffer, int bufferSize, PrintFloat::Mode floatDisplayMode, int numberOfDigits, const char * operatorName) { + return writeInfixExpressionOrExpressionLayoutTextInBuffer(expression, nullptr, buffer, bufferSize,floatDisplayMode, numberOfDigits, operatorName, 0, -1, [](const char * operatorName) { return true; }); } -int LayoutEngine::writePrefixExpressionTextInBuffer(const Expression * expression, char * buffer, int bufferSize, int numberOfDigits, const char * operatorName) { - return writePrefixExpressionOrExpressionLayoutTextInBuffer(expression, nullptr, buffer, bufferSize, numberOfDigits, operatorName); +int LayoutEngine::writePrefixExpressionTextInBuffer(const Expression * expression, char * buffer, int bufferSize, PrintFloat::Mode floatDisplayMode, int numberOfDigits, const char * operatorName) { + return writePrefixExpressionOrExpressionLayoutTextInBuffer(expression, nullptr, buffer, bufferSize, floatDisplayMode, numberOfDigits, operatorName); } -int LayoutEngine::writeInfixExpressionLayoutTextInBuffer(const ExpressionLayout * expressionLayout, char * buffer, int bufferSize, int numberOfDigits, const char * operatorName, int firstChildIndex, int lastChildIndex, ChildNeedsParenthesis childNeedsParenthesis) { - return writeInfixExpressionOrExpressionLayoutTextInBuffer(nullptr, expressionLayout, buffer, bufferSize, numberOfDigits, operatorName, firstChildIndex, lastChildIndex, childNeedsParenthesis); +int LayoutEngine::writeInfixExpressionLayoutTextInBuffer(const ExpressionLayout * expressionLayout, char * buffer, int bufferSize, const char * operatorName, int firstChildIndex, int lastChildIndex, ChildNeedsParenthesis childNeedsParenthesis) { + return writeInfixExpressionOrExpressionLayoutTextInBuffer(nullptr, expressionLayout, buffer, bufferSize, PrintFloat::Mode::Decimal, PrintFloat::k_numberOfStoredSignificantDigits, operatorName, firstChildIndex, lastChildIndex, childNeedsParenthesis); } -int LayoutEngine::writePrefixExpressionLayoutTextInBuffer(const ExpressionLayout * expressionLayout, char * buffer, int bufferSize, int numberOfDigits, const char * operatorName, bool writeFirstChild) { - return writePrefixExpressionOrExpressionLayoutTextInBuffer(nullptr, expressionLayout, buffer, bufferSize, numberOfDigits, operatorName, writeFirstChild); +int LayoutEngine::writePrefixExpressionLayoutTextInBuffer(const ExpressionLayout * expressionLayout, char * buffer, int bufferSize, const char * operatorName, bool writeFirstChild) { + return writePrefixExpressionOrExpressionLayoutTextInBuffer(nullptr, expressionLayout, buffer, bufferSize, PrintFloat::Mode::Decimal, PrintFloat::k_numberOfStoredSignificantDigits, operatorName, writeFirstChild); } -int LayoutEngine::writeInfixExpressionOrExpressionLayoutTextInBuffer(const Expression * expression, const ExpressionLayout * expressionLayout, char * buffer, int bufferSize, int numberOfDigits, const char * operatorName, int firstChildIndex, int lastChildIndex, ChildNeedsParenthesis childNeedsParenthesis) { +int LayoutEngine::writeInfixExpressionOrExpressionLayoutTextInBuffer(const Expression * expression, const ExpressionLayout * expressionLayout, char * buffer, int bufferSize, PrintFloat::Mode floatDisplayMode, int numberOfDigits, const char * operatorName, int firstChildIndex, int lastChildIndex, ChildNeedsParenthesis childNeedsParenthesis) { assert(expression != nullptr || expressionLayout != nullptr); if (bufferSize == 0) { return -1; @@ -112,7 +112,7 @@ int LayoutEngine::writeInfixExpressionOrExpressionLayoutTextInBuffer(const Expre } } - numberOfChar += (expression != nullptr) ? expression->operand(firstChildIndex)->writeTextInBuffer(buffer+numberOfChar, bufferSize-numberOfChar, numberOfDigits) : expressionLayout->child(firstChildIndex)->writeTextInBuffer(buffer+numberOfChar, bufferSize-numberOfChar, numberOfDigits); + numberOfChar += (expression != nullptr) ? expression->operand(firstChildIndex)->writeTextInBuffer(buffer+numberOfChar, bufferSize-numberOfChar, floatDisplayMode, numberOfDigits) : expressionLayout->child(firstChildIndex)->writeTextInBuffer(buffer+numberOfChar, bufferSize-numberOfChar); if (numberOfChar >= bufferSize-1) { return bufferSize-1; } if ((expression != nullptr && expression->operand(firstChildIndex)->needParenthesisWithParent(expression)) || (expression == nullptr && childNeedsParenthesis(operatorName))) @@ -131,7 +131,7 @@ int LayoutEngine::writeInfixExpressionOrExpressionLayoutTextInBuffer(const Expre buffer[numberOfChar++] = '('; if (numberOfChar >= bufferSize-1) { return bufferSize-1; } } - numberOfChar += (expression != nullptr) ? expression->operand(i)->writeTextInBuffer(buffer+numberOfChar, bufferSize-numberOfChar, numberOfDigits) : expressionLayout->child(i)->writeTextInBuffer(buffer+numberOfChar, bufferSize-numberOfChar, numberOfDigits); + numberOfChar += (expression != nullptr) ? expression->operand(i)->writeTextInBuffer(buffer+numberOfChar, bufferSize-numberOfChar, floatDisplayMode, numberOfDigits) : expressionLayout->child(i)->writeTextInBuffer(buffer+numberOfChar, bufferSize-numberOfChar); if (numberOfChar >= bufferSize-1) { return bufferSize-1; } if ((expression != nullptr && expression->operand(i)->needParenthesisWithParent(expression)) || (expression == nullptr && childNeedsParenthesis(operatorName))) @@ -144,7 +144,7 @@ int LayoutEngine::writeInfixExpressionOrExpressionLayoutTextInBuffer(const Expre return numberOfChar; } -int LayoutEngine::writePrefixExpressionOrExpressionLayoutTextInBuffer(const Expression * expression, const ExpressionLayout * expressionLayout, char * buffer, int bufferSize, int numberOfDigits, const char * operatorName, bool writeFirstChild) { +int LayoutEngine::writePrefixExpressionOrExpressionLayoutTextInBuffer(const Expression * expression, const ExpressionLayout * expressionLayout, char * buffer, int bufferSize, PrintFloat::Mode floatDisplayMode, int numberOfDigits, const char * operatorName, bool writeFirstChild) { assert(expression != nullptr || expressionLayout != nullptr); if (bufferSize == 0) { return -1; @@ -166,12 +166,12 @@ int LayoutEngine::writePrefixExpressionOrExpressionLayoutTextInBuffer(const Expr assert(numberOfOperands > 1); } int firstOperandIndex = writeFirstChild ? 0 : 1; - numberOfChar += (expression != nullptr) ? expression->operand(firstOperandIndex)->writeTextInBuffer(buffer+numberOfChar, bufferSize-numberOfChar, numberOfDigits) : expressionLayout->child(firstOperandIndex)->writeTextInBuffer(buffer+numberOfChar, bufferSize-numberOfChar, numberOfDigits); + numberOfChar += (expression != nullptr) ? expression->operand(firstOperandIndex)->writeTextInBuffer(buffer+numberOfChar, bufferSize-numberOfChar, floatDisplayMode, numberOfDigits) : expressionLayout->child(firstOperandIndex)->writeTextInBuffer(buffer+numberOfChar, bufferSize-numberOfChar); if (numberOfChar >= bufferSize-1) { return bufferSize-1; } for (int i = firstOperandIndex + 1; i < numberOfOperands; i++) { buffer[numberOfChar++] = ','; if (numberOfChar >= bufferSize-1) { return bufferSize-1; } - numberOfChar += (expression != nullptr) ? expression->operand(i)->writeTextInBuffer(buffer+numberOfChar, bufferSize-numberOfChar) : expressionLayout->child(i)->writeTextInBuffer(buffer+numberOfChar, bufferSize-numberOfChar); + numberOfChar += (expression != nullptr) ? expression->operand(i)->writeTextInBuffer(buffer+numberOfChar, bufferSize-numberOfChar, floatDisplayMode, numberOfDigits) : expressionLayout->child(i)->writeTextInBuffer(buffer+numberOfChar, bufferSize-numberOfChar); if (numberOfChar >= bufferSize-1) { return bufferSize-1; } } } diff --git a/poincare/src/matrix.cpp b/poincare/src/matrix.cpp index 4d2188fc9..eea688138 100644 --- a/poincare/src/matrix.cpp +++ b/poincare/src/matrix.cpp @@ -51,7 +51,7 @@ Expression * Matrix::clone() const { return new Matrix(m_operands, numberOfRows(), numberOfColumns(), true); } -int Matrix::writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits) const { +int Matrix::writeTextInBuffer(char * buffer, int bufferSize, PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const { if (bufferSize == 0) { return -1; } @@ -69,7 +69,7 @@ int Matrix::writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignifi if (currentChar >= bufferSize-1) { return currentChar; } - currentChar += operand(i*numberOfColumns())->writeTextInBuffer(buffer+currentChar, bufferSize-currentChar, numberOfSignificantDigits); + currentChar += operand(i*numberOfColumns())->writeTextInBuffer(buffer+currentChar, bufferSize-currentChar, floatDisplayMode, numberOfSignificantDigits); if (currentChar >= bufferSize-1) { return currentChar; } @@ -78,7 +78,7 @@ int Matrix::writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignifi if (currentChar >= bufferSize-1) { return currentChar; } - currentChar += operand(i*numberOfColumns()+j)->writeTextInBuffer(buffer+currentChar, bufferSize-currentChar, numberOfSignificantDigits); + currentChar += operand(i*numberOfColumns()+j)->writeTextInBuffer(buffer+currentChar, bufferSize-currentChar, floatDisplayMode, numberOfSignificantDigits); if (currentChar >= bufferSize-1) { return currentChar; } diff --git a/poincare/src/multiplication.cpp b/poincare/src/multiplication.cpp index c00179d00..ce76941fd 100644 --- a/poincare/src/multiplication.cpp +++ b/poincare/src/multiplication.cpp @@ -90,9 +90,9 @@ ExpressionLayout * Multiplication::createLayout(PrintFloat::Mode floatDisplayMod return LayoutEngine::createInfixLayout(this, floatDisplayMode, numberOfSignificantDigits, middleDotString); } -int Multiplication::writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits) const { +int Multiplication::writeTextInBuffer(char * buffer, int bufferSize, PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const { const char multiplicationString[] = {Ion::Charset::MultiplicationSign, 0}; - return LayoutEngine::writeInfixExpressionTextInBuffer(this, buffer, bufferSize, numberOfSignificantDigits, multiplicationString); + return LayoutEngine::writeInfixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, multiplicationString); } Expression::Sign Multiplication::sign() const { diff --git a/poincare/src/opposite.cpp b/poincare/src/opposite.cpp index 0f69c4096..a5dc77feb 100644 --- a/poincare/src/opposite.cpp +++ b/poincare/src/opposite.cpp @@ -75,7 +75,7 @@ ExpressionLayout * Opposite::createLayout(PrintFloat::Mode floatDisplayMode, int return result; } -int Opposite::writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits) const { +int Opposite::writeTextInBuffer(char * buffer, int bufferSize, PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const { if (bufferSize == 0) { return -1; } @@ -83,7 +83,7 @@ int Opposite::writeTextInBuffer(char * buffer, int bufferSize, int numberOfSigni int numberOfChar = 0; if (bufferSize == 1) { return 0; } buffer[numberOfChar++] = '-'; - numberOfChar += operand(0)->writeTextInBuffer(buffer+numberOfChar, bufferSize-numberOfChar, numberOfSignificantDigits); + numberOfChar += operand(0)->writeTextInBuffer(buffer+numberOfChar, bufferSize-numberOfChar, floatDisplayMode, numberOfSignificantDigits); buffer[numberOfChar] = 0; return numberOfChar; } diff --git a/poincare/src/rational.cpp b/poincare/src/rational.cpp index 8fe62359d..f55c096ca 100644 --- a/poincare/src/rational.cpp +++ b/poincare/src/rational.cpp @@ -160,7 +160,7 @@ ExpressionLayout * Rational::createLayout(PrintFloat::Mode floatDisplayMode, int return new FractionLayout(numeratorLayout, denominatorLayout, false); } -int Rational::writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits) const { +int Rational::writeTextInBuffer(char * buffer, int bufferSize, PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const { buffer[bufferSize-1] = 0; int numberOfChar = m_numerator.writeTextInBuffer(buffer, bufferSize); if (m_denominator.isOne()) { diff --git a/poincare/src/square_root.cpp b/poincare/src/square_root.cpp index efb2d1afd..39feff718 100644 --- a/poincare/src/square_root.cpp +++ b/poincare/src/square_root.cpp @@ -20,8 +20,8 @@ Expression * SquareRoot::clone() const { } static_assert('\x91' == Ion::Charset::Root, "Unicode error"); -int SquareRoot::writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits) const { - return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, numberOfSignificantDigits, "\x91"); +int SquareRoot::writeTextInBuffer(char * buffer, int bufferSize, PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const { + return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, "\x91"); } template diff --git a/poincare/src/store.cpp b/poincare/src/store.cpp index c62d52005..c90dc91a5 100644 --- a/poincare/src/store.cpp +++ b/poincare/src/store.cpp @@ -23,9 +23,8 @@ int Store::polynomialDegree(char symbolName) const { return -1; } -static_assert('\x90' == Ion::Charset::Sto, "Incorrect"); -int Store::writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits) const { - return LayoutEngine::writeInfixExpressionTextInBuffer(this, buffer, bufferSize, numberOfSignificantDigits, "\x90"); +int Store::writeTextInBuffer(char * buffer, int bufferSize, PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const { + return LayoutEngine::writeInfixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, "\x90"); } Expression * Store::shallowReduce(Context& context, AngleUnit angleUnit) { diff --git a/poincare/src/symbol.cpp b/poincare/src/symbol.cpp index 807745f1d..7743bc1ad 100644 --- a/poincare/src/symbol.cpp +++ b/poincare/src/symbol.cpp @@ -289,7 +289,7 @@ ExpressionLayout * Symbol::createLayout(PrintFloat::Mode floatDisplayMode, int n return LayoutEngine::createStringLayout(&m_name, 1); } -int Symbol::writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits) const { +int Symbol::writeTextInBuffer(char * buffer, int bufferSize, PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const { if (bufferSize == 0) { return -1; } diff --git a/poincare/src/undefined.cpp b/poincare/src/undefined.cpp index f74ff2184..2c2eed440 100644 --- a/poincare/src/undefined.cpp +++ b/poincare/src/undefined.cpp @@ -30,7 +30,7 @@ ExpressionLayout * Undefined::createLayout(PrintFloat::Mode floatDisplayMode, in return LayoutEngine::createStringLayout(buffer, numberOfChars); } -int Undefined::writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits) const { +int Undefined::writeTextInBuffer(char * buffer, int bufferSize, PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const { if (bufferSize == 0) { return -1; }