diff --git a/poincare/include/poincare/sum.h b/poincare/include/poincare/sum.h index f9afbcc0e..283416e75 100644 --- a/poincare/include/poincare/sum.h +++ b/poincare/include/poincare/sum.h @@ -11,6 +11,7 @@ public: Type type() const override; Expression * cloneWithDifferentOperands(Expression ** newOperands, int numberOfOperands, bool cloneOperands = true) const override; + ExpressionLayout * createLayout() const override; }; #endif diff --git a/poincare/src/sum.cpp b/poincare/src/sum.cpp index e5a2785d7..34d4e2c2d 100644 --- a/poincare/src/sum.cpp +++ b/poincare/src/sum.cpp @@ -1,9 +1,12 @@ #include #include #include - +#include "layout/sum_layout.h" +#include "layout/string_layout.h" +#include "layout/horizontal_layout.h" extern "C" { #include +#include } Sum::Sum() : @@ -37,3 +40,10 @@ float Sum::approximate(Context& context) const { } return result; } + +ExpressionLayout * Sum::createLayout() const { + ExpressionLayout ** childrenLayouts = (ExpressionLayout **)malloc(2*sizeof(ExpressionLayout *)); + childrenLayouts[0] = new StringLayout("n=", 2); + childrenLayouts[1] = m_args[1]->createLayout(); + return new SumLayout(new HorizontalLayout(childrenLayouts, 2), m_args[2]->createLayout(), m_args[0]->createLayout()); +}