[apps/poincare] Replace CharLayouts with CodePointLayouts

This commit is contained in:
Léa Saviot
2019-01-11 14:09:45 +01:00
committed by Émilie Feral
parent 3f56cb7041
commit f576e31ff1
45 changed files with 238 additions and 421 deletions

View File

@@ -1,7 +1,7 @@
#include "calculation_controller.h"
#include "../apps_container.h"
#include "../shared/poincare_helpers.h"
#include <poincare/char_layout.h>
#include <poincare/code_point_layout.h>
#include <poincare/vertical_offset_layout.h>
#include <assert.h>
@@ -25,7 +25,7 @@ CalculationController::CalculationController(Responder * parentResponder, Button
m_hideableCell(),
m_store(store)
{
m_r2Layout = HorizontalLayout::Builder(CharLayout::Builder('r', KDFont::SmallFont), VerticalOffsetLayout::Builder(CharLayout::Builder('2', KDFont::SmallFont), VerticalOffsetLayoutNode::Type::Superscript));
m_r2Layout = HorizontalLayout::Builder(CodePointLayout::Builder('r', KDFont::SmallFont), VerticalOffsetLayout::Builder(CodePointLayout::Builder('2', KDFont::SmallFont), VerticalOffsetLayoutNode::Type::Superscript));
m_selectableTableView.setVerticalCellOverlap(0);
m_selectableTableView.setBackgroundColor(Palette::WallScreenDark);
m_selectableTableView.setMargins(k_margin, k_scrollBarMargin, k_scrollBarMargin, k_margin);

View File

@@ -2,7 +2,7 @@
#include "../../shared/poincare_helpers.h"
#include <math.h>
#include <assert.h>
#include <poincare/char_layout.h>
#include <poincare/code_point_layout.h>
#include <poincare/horizontal_layout.h>
#include <poincare/vertical_offset_layout.h>
#include <poincare/decimal.h>
@@ -20,27 +20,27 @@ namespace Regression {
Layout CubicModel::layout() {
if (m_layout.isUninitialized()) {
Layout layoutChildren[] = {
CharLayout::Builder('a', KDFont::SmallFont),
CharLayout::Builder(Ion::Charset::MiddleDot, KDFont::SmallFont),
CharLayout::Builder('X', KDFont::SmallFont),
CodePointLayout::Builder('a', KDFont::SmallFont),
CodePointLayout::Builder(Ion::Charset::MiddleDot, KDFont::SmallFont),
CodePointLayout::Builder('X', KDFont::SmallFont),
VerticalOffsetLayout::Builder(
CharLayout::Builder('3', KDFont::SmallFont),
CodePointLayout::Builder('3', KDFont::SmallFont),
VerticalOffsetLayoutNode::Type::Superscript
),
CharLayout::Builder('+', KDFont::SmallFont),
CharLayout::Builder('b', KDFont::SmallFont),
CharLayout::Builder(Ion::Charset::MiddleDot, KDFont::SmallFont),
CharLayout::Builder('X', KDFont::SmallFont),
CodePointLayout::Builder('+', KDFont::SmallFont),
CodePointLayout::Builder('b', KDFont::SmallFont),
CodePointLayout::Builder(Ion::Charset::MiddleDot, KDFont::SmallFont),
CodePointLayout::Builder('X', KDFont::SmallFont),
VerticalOffsetLayout::Builder(
CharLayout::Builder('2', KDFont::SmallFont),
CodePointLayout::Builder('2', KDFont::SmallFont),
VerticalOffsetLayoutNode::Type::Superscript
),
CharLayout::Builder('+', KDFont::SmallFont),
CharLayout::Builder('c', KDFont::SmallFont),
CharLayout::Builder(Ion::Charset::MiddleDot, KDFont::SmallFont),
CharLayout::Builder('X', KDFont::SmallFont),
CharLayout::Builder('+', KDFont::SmallFont),
CharLayout::Builder('d', KDFont::SmallFont),
CodePointLayout::Builder('+', KDFont::SmallFont),
CodePointLayout::Builder('c', KDFont::SmallFont),
CodePointLayout::Builder(Ion::Charset::MiddleDot, KDFont::SmallFont),
CodePointLayout::Builder('X', KDFont::SmallFont),
CodePointLayout::Builder('+', KDFont::SmallFont),
CodePointLayout::Builder('d', KDFont::SmallFont),
};
m_layout = HorizontalLayout::Builder(layoutChildren, 15);
}

View File

@@ -1,7 +1,7 @@
#include "exponential_model.h"
#include <math.h>
#include <assert.h>
#include <poincare/char_layout.h>
#include <poincare/code_point_layout.h>
#include <poincare/horizontal_layout.h>
#include <poincare/vertical_offset_layout.h>
@@ -12,14 +12,14 @@ namespace Regression {
Layout ExponentialModel::layout() {
if (m_layout.isUninitialized()) {
Layout layoutChildren[] = {
CharLayout::Builder('a', KDFont::SmallFont),
CharLayout::Builder(Ion::Charset::MiddleDot, KDFont::SmallFont),
CharLayout::Builder('e', KDFont::SmallFont),
CodePointLayout::Builder('a', KDFont::SmallFont),
CodePointLayout::Builder(Ion::Charset::MiddleDot, KDFont::SmallFont),
CodePointLayout::Builder('e', KDFont::SmallFont),
VerticalOffsetLayout::Builder(
HorizontalLayout::Builder(
CharLayout::Builder('b', KDFont::SmallFont),
CharLayout::Builder(Ion::Charset::MiddleDot, KDFont::SmallFont),
CharLayout::Builder('X', KDFont::SmallFont)
CodePointLayout::Builder('b', KDFont::SmallFont),
CodePointLayout::Builder(Ion::Charset::MiddleDot, KDFont::SmallFont),
CodePointLayout::Builder('X', KDFont::SmallFont)
),
VerticalOffsetLayoutNode::Type::Superscript
)

View File

@@ -2,7 +2,7 @@
#include "../store.h"
#include <math.h>
#include <assert.h>
#include <poincare/char_layout.h>
#include <poincare/code_point_layout.h>
#include <poincare/horizontal_layout.h>
using namespace Poincare;
@@ -12,11 +12,11 @@ namespace Regression {
Layout LinearModel::layout() {
if (m_layout.isUninitialized()) {
Layout layoutChildren[] = {
CharLayout::Builder('a', KDFont::SmallFont),
CharLayout::Builder(Ion::Charset::MiddleDot, KDFont::SmallFont),
CharLayout::Builder('X', KDFont::SmallFont),
CharLayout::Builder('+', KDFont::SmallFont),
CharLayout::Builder('b', KDFont::SmallFont),
CodePointLayout::Builder('a', KDFont::SmallFont),
CodePointLayout::Builder(Ion::Charset::MiddleDot, KDFont::SmallFont),
CodePointLayout::Builder('X', KDFont::SmallFont),
CodePointLayout::Builder('+', KDFont::SmallFont),
CodePointLayout::Builder('b', KDFont::SmallFont),
};
m_layout = HorizontalLayout::Builder(layoutChildren, 5);
}

View File

@@ -2,7 +2,7 @@
#include "../store.h"
#include <math.h>
#include <assert.h>
#include <poincare/char_layout.h>
#include <poincare/code_point_layout.h>
#include <poincare/horizontal_layout.h>
using namespace Poincare;
@@ -12,15 +12,15 @@ namespace Regression {
Layout LogarithmicModel::layout() {
if (m_layout.isUninitialized()) {
Layout layoutChildren[] = {
CharLayout::Builder('a', KDFont::SmallFont),
CharLayout::Builder(Ion::Charset::MiddleDot, KDFont::SmallFont),
CharLayout::Builder('l', KDFont::SmallFont),
CharLayout::Builder('n', KDFont::SmallFont),
CharLayout::Builder('(', KDFont::SmallFont),
CharLayout::Builder('X', KDFont::SmallFont),
CharLayout::Builder(')', KDFont::SmallFont),
CharLayout::Builder('+', KDFont::SmallFont),
CharLayout::Builder('b', KDFont::SmallFont)
CodePointLayout::Builder('a', KDFont::SmallFont),
CodePointLayout::Builder(Ion::Charset::MiddleDot, KDFont::SmallFont),
CodePointLayout::Builder('l', KDFont::SmallFont),
CodePointLayout::Builder('n', KDFont::SmallFont),
CodePointLayout::Builder('(', KDFont::SmallFont),
CodePointLayout::Builder('X', KDFont::SmallFont),
CodePointLayout::Builder(')', KDFont::SmallFont),
CodePointLayout::Builder('+', KDFont::SmallFont),
CodePointLayout::Builder('b', KDFont::SmallFont)
};
m_layout = HorizontalLayout::Builder(layoutChildren, 9);
}

View File

@@ -1,7 +1,7 @@
#include "logistic_model.h"
#include <math.h>
#include <assert.h>
#include <poincare/char_layout.h>
#include <poincare/code_point_layout.h>
#include <poincare/fraction_layout.h>
#include <poincare/horizontal_layout.h>
#include <poincare/vertical_offset_layout.h>
@@ -13,24 +13,24 @@ namespace Regression {
Layout LogisticModel::layout() {
if (m_layout.isUninitialized()) {
Layout exponentLayoutChildren[] = {
CharLayout::Builder('-', KDFont::SmallFont),
CharLayout::Builder('b', KDFont::SmallFont),
CharLayout::Builder(Ion::Charset::MiddleDot, KDFont::SmallFont),
CharLayout::Builder('X', KDFont::SmallFont)
CodePointLayout::Builder('-', KDFont::SmallFont),
CodePointLayout::Builder('b', KDFont::SmallFont),
CodePointLayout::Builder(Ion::Charset::MiddleDot, KDFont::SmallFont),
CodePointLayout::Builder('X', KDFont::SmallFont)
};
Layout layoutChildren[] = {
CharLayout::Builder('1', KDFont::SmallFont),
CharLayout::Builder('+', KDFont::SmallFont),
CharLayout::Builder('a', KDFont::SmallFont),
CharLayout::Builder(Ion::Charset::MiddleDot, KDFont::SmallFont),
CharLayout::Builder('e', KDFont::SmallFont),
CodePointLayout::Builder('1', KDFont::SmallFont),
CodePointLayout::Builder('+', KDFont::SmallFont),
CodePointLayout::Builder('a', KDFont::SmallFont),
CodePointLayout::Builder(Ion::Charset::MiddleDot, KDFont::SmallFont),
CodePointLayout::Builder('e', KDFont::SmallFont),
VerticalOffsetLayout::Builder(
HorizontalLayout::Builder(exponentLayoutChildren, 4),
VerticalOffsetLayoutNode::Type::Superscript
)
};
m_layout = FractionLayout::Builder(
CharLayout::Builder('c', KDFont::SmallFont),
CodePointLayout::Builder('c', KDFont::SmallFont),
HorizontalLayout::Builder(layoutChildren, 6)
);
}

View File

@@ -2,7 +2,7 @@
#include "../store.h"
#include <math.h>
#include <assert.h>
#include <poincare/char_layout.h>
#include <poincare/code_point_layout.h>
#include <poincare/horizontal_layout.h>
#include <poincare/vertical_offset_layout.h>
@@ -13,11 +13,11 @@ namespace Regression {
Layout PowerModel::layout() {
if (m_layout.isUninitialized()) {
Layout layoutChildren[] = {
CharLayout::Builder('a', KDFont::SmallFont),
CharLayout::Builder(Ion::Charset::MiddleDot, KDFont::SmallFont),
CharLayout::Builder('X', KDFont::SmallFont),
CodePointLayout::Builder('a', KDFont::SmallFont),
CodePointLayout::Builder(Ion::Charset::MiddleDot, KDFont::SmallFont),
CodePointLayout::Builder('X', KDFont::SmallFont),
VerticalOffsetLayout::Builder(
CharLayout::Builder('b', KDFont::SmallFont),
CodePointLayout::Builder('b', KDFont::SmallFont),
VerticalOffsetLayoutNode::Type::Superscript
),
};

View File

@@ -2,7 +2,7 @@
#include "../../shared/poincare_helpers.h"
#include <math.h>
#include <assert.h>
#include <poincare/char_layout.h>
#include <poincare/code_point_layout.h>
#include <poincare/horizontal_layout.h>
#include <poincare/vertical_offset_layout.h>
#include <poincare/decimal.h>
@@ -20,19 +20,19 @@ namespace Regression {
Layout QuadraticModel::layout() {
if (m_layout.isUninitialized()) {
Layout layoutChildren[] = {
CharLayout::Builder('a', KDFont::SmallFont),
CharLayout::Builder(Ion::Charset::MiddleDot, KDFont::SmallFont),
CharLayout::Builder('X', KDFont::SmallFont),
CodePointLayout::Builder('a', KDFont::SmallFont),
CodePointLayout::Builder(Ion::Charset::MiddleDot, KDFont::SmallFont),
CodePointLayout::Builder('X', KDFont::SmallFont),
VerticalOffsetLayout::Builder(
CharLayout::Builder('2', KDFont::SmallFont),
CodePointLayout::Builder('2', KDFont::SmallFont),
VerticalOffsetLayoutNode::Type::Superscript
),
CharLayout::Builder('+', KDFont::SmallFont),
CharLayout::Builder('b', KDFont::SmallFont),
CharLayout::Builder(Ion::Charset::MiddleDot, KDFont::SmallFont),
CharLayout::Builder('X', KDFont::SmallFont),
CharLayout::Builder('+', KDFont::SmallFont),
CharLayout::Builder('c', KDFont::SmallFont),
CodePointLayout::Builder('+', KDFont::SmallFont),
CodePointLayout::Builder('b', KDFont::SmallFont),
CodePointLayout::Builder(Ion::Charset::MiddleDot, KDFont::SmallFont),
CodePointLayout::Builder('X', KDFont::SmallFont),
CodePointLayout::Builder('+', KDFont::SmallFont),
CodePointLayout::Builder('c', KDFont::SmallFont),
};
m_layout = HorizontalLayout::Builder(layoutChildren, 10);
}

View File

@@ -2,7 +2,7 @@
#include "../../shared/poincare_helpers.h"
#include <math.h>
#include <assert.h>
#include <poincare/char_layout.h>
#include <poincare/code_point_layout.h>
#include <poincare/horizontal_layout.h>
#include <poincare/vertical_offset_layout.h>
#include <poincare/decimal.h>
@@ -20,35 +20,35 @@ namespace Regression {
Layout QuarticModel::layout() {
if (m_layout.isUninitialized()) {
Layout layoutChildren[] = {
CharLayout::Builder('a', KDFont::SmallFont),
CharLayout::Builder(Ion::Charset::MiddleDot, KDFont::SmallFont),
CharLayout::Builder('X', KDFont::SmallFont),
CodePointLayout::Builder('a', KDFont::SmallFont),
CodePointLayout::Builder(Ion::Charset::MiddleDot, KDFont::SmallFont),
CodePointLayout::Builder('X', KDFont::SmallFont),
VerticalOffsetLayout::Builder(
CharLayout::Builder('4', KDFont::SmallFont),
CodePointLayout::Builder('4', KDFont::SmallFont),
VerticalOffsetLayoutNode::Type::Superscript
),
CharLayout::Builder('+', KDFont::SmallFont),
CharLayout::Builder('b', KDFont::SmallFont),
CharLayout::Builder(Ion::Charset::MiddleDot, KDFont::SmallFont),
CharLayout::Builder('X', KDFont::SmallFont),
CodePointLayout::Builder('+', KDFont::SmallFont),
CodePointLayout::Builder('b', KDFont::SmallFont),
CodePointLayout::Builder(Ion::Charset::MiddleDot, KDFont::SmallFont),
CodePointLayout::Builder('X', KDFont::SmallFont),
VerticalOffsetLayout::Builder(
CharLayout::Builder('3', KDFont::SmallFont),
CodePointLayout::Builder('3', KDFont::SmallFont),
VerticalOffsetLayoutNode::Type::Superscript
),
CharLayout::Builder('+', KDFont::SmallFont),
CharLayout::Builder('c', KDFont::SmallFont),
CharLayout::Builder(Ion::Charset::MiddleDot, KDFont::SmallFont),
CharLayout::Builder('X', KDFont::SmallFont),
CodePointLayout::Builder('+', KDFont::SmallFont),
CodePointLayout::Builder('c', KDFont::SmallFont),
CodePointLayout::Builder(Ion::Charset::MiddleDot, KDFont::SmallFont),
CodePointLayout::Builder('X', KDFont::SmallFont),
VerticalOffsetLayout::Builder(
CharLayout::Builder('2', KDFont::SmallFont),
CodePointLayout::Builder('2', KDFont::SmallFont),
VerticalOffsetLayoutNode::Type::Superscript
),
CharLayout::Builder('+', KDFont::SmallFont),
CharLayout::Builder('d', KDFont::SmallFont),
CharLayout::Builder(Ion::Charset::MiddleDot, KDFont::SmallFont),
CharLayout::Builder('X', KDFont::SmallFont),
CharLayout::Builder('+', KDFont::SmallFont),
CharLayout::Builder('e', KDFont::SmallFont),
CodePointLayout::Builder('+', KDFont::SmallFont),
CodePointLayout::Builder('d', KDFont::SmallFont),
CodePointLayout::Builder(Ion::Charset::MiddleDot, KDFont::SmallFont),
CodePointLayout::Builder('X', KDFont::SmallFont),
CodePointLayout::Builder('+', KDFont::SmallFont),
CodePointLayout::Builder('e', KDFont::SmallFont),
};
m_layout = HorizontalLayout::Builder(layoutChildren, 20);
}

View File

@@ -3,7 +3,7 @@
#include <math.h>
#include <poincare/preferences.h>
#include <assert.h>
#include <poincare/char_layout.h>
#include <poincare/code_point_layout.h>
#include <poincare/horizontal_layout.h>
#include <poincare/vertical_offset_layout.h>
#include <poincare/number.h>
@@ -21,20 +21,20 @@ namespace Regression {
Layout TrigonometricModel::layout() {
if (m_layout.isUninitialized()) {
Layout layoutChildren[] = {
CharLayout::Builder('a', KDFont::SmallFont),
CharLayout::Builder(Ion::Charset::MiddleDot, KDFont::SmallFont),
CharLayout::Builder('s', KDFont::SmallFont),
CharLayout::Builder('i', KDFont::SmallFont),
CharLayout::Builder('n', KDFont::SmallFont),
CharLayout::Builder('(', KDFont::SmallFont),
CharLayout::Builder('b', KDFont::SmallFont),
CharLayout::Builder(Ion::Charset::MiddleDot, KDFont::SmallFont),
CharLayout::Builder('X', KDFont::SmallFont),
CharLayout::Builder('+', KDFont::SmallFont),
CharLayout::Builder('c', KDFont::SmallFont),
CharLayout::Builder(')', KDFont::SmallFont),
CharLayout::Builder('+', KDFont::SmallFont),
CharLayout::Builder('d', KDFont::SmallFont)
CodePointLayout::Builder('a', KDFont::SmallFont),
CodePointLayout::Builder(Ion::Charset::MiddleDot, KDFont::SmallFont),
CodePointLayout::Builder('s', KDFont::SmallFont),
CodePointLayout::Builder('i', KDFont::SmallFont),
CodePointLayout::Builder('n', KDFont::SmallFont),
CodePointLayout::Builder('(', KDFont::SmallFont),
CodePointLayout::Builder('b', KDFont::SmallFont),
CodePointLayout::Builder(Ion::Charset::MiddleDot, KDFont::SmallFont),
CodePointLayout::Builder('X', KDFont::SmallFont),
CodePointLayout::Builder('+', KDFont::SmallFont),
CodePointLayout::Builder('c', KDFont::SmallFont),
CodePointLayout::Builder(')', KDFont::SmallFont),
CodePointLayout::Builder('+', KDFont::SmallFont),
CodePointLayout::Builder('d', KDFont::SmallFont)
};
m_layout = HorizontalLayout::Builder(layoutChildren, 14);
}

View File

@@ -1,7 +1,7 @@
#include "term_sum_controller.h"
#include "../../shared/text_field_delegate.h"
#include "../app.h"
#include <poincare/char_layout.h>
#include <poincare/code_point_layout.h>
#include <poincare/horizontal_layout.h>
#include <poincare/vertical_offset_layout.h>
@@ -51,9 +51,9 @@ double TermSumController::cursorNextStep(double x, int direction) {
Layout TermSumController::createFunctionLayout(const char * functionName) {
return HorizontalLayout::Builder(
CharLayout::Builder(functionName[0], KDFont::SmallFont),
CodePointLayout::Builder(functionName[0], KDFont::SmallFont),
VerticalOffsetLayout::Builder(
CharLayout::Builder('n', KDFont::SmallFont),
CodePointLayout::Builder('n', KDFont::SmallFont),
VerticalOffsetLayoutNode::Type::Subscript
)
);

View File

@@ -2,7 +2,7 @@
#include "../sequence_store.h"
#include <poincare/layout_helper.h>
#include <assert.h>
#include <poincare/char_layout.h>
#include <poincare/code_point_layout.h>
#include <poincare/vertical_offset_layout.h>
using namespace Poincare;
@@ -77,18 +77,18 @@ void SequenceToolbox::buildExtraCellsLayouts(const char * sequenceName, int recu
for (int j = 0; j < recurrenceDepth; j++) {
const char * indice = j == 0 ? "n" : "n+1";
m_addedCellLayout[j] = HorizontalLayout::Builder(
CharLayout::Builder(sequenceName[0], KDFont::LargeFont),
CodePointLayout::Builder(sequenceName[0], KDFont::LargeFont),
VerticalOffsetLayout::Builder(LayoutHelper::String(indice, strlen(indice), KDFont::LargeFont), VerticalOffsetLayoutNode::Type::Subscript)
);
m_addedCellLayout[j+recurrenceDepth] = HorizontalLayout::Builder(
CharLayout::Builder(otherSequenceName[0], KDFont::LargeFont),
CodePointLayout::Builder(otherSequenceName[0], KDFont::LargeFont),
VerticalOffsetLayout::Builder(LayoutHelper::String(indice, strlen(indice), KDFont::LargeFont), VerticalOffsetLayoutNode::Type::Subscript)
);
}
if (recurrenceDepth < 2) {
const char * indice = recurrenceDepth == 0 ? "n" : (recurrenceDepth == 1 ? "n+1" : "n+2");
m_addedCellLayout[2*recurrenceDepth] = HorizontalLayout::Builder(
CharLayout::Builder(otherSequenceName[0], KDFont::LargeFont),
CodePointLayout::Builder(otherSequenceName[0], KDFont::LargeFont),
VerticalOffsetLayout::Builder(LayoutHelper::String(indice, strlen(indice), KDFont::LargeFont), VerticalOffsetLayoutNode::Type::Subscript)
);
}

View File

@@ -3,7 +3,7 @@
#include "../app.h"
#include <assert.h>
#include <poincare/layout_helper.h>
#include <poincare/char_layout.h>
#include <poincare/code_point_layout.h>
#include <poincare/vertical_offset_layout.h>
using namespace Poincare;
@@ -116,7 +116,7 @@ void TypeParameterController::willDisplayCellAtLocation(HighlightCell * cell, in
}
const char * subscripts[3] = {"n", "n+1", "n+2"};
m_layouts[j] = HorizontalLayout::Builder(
CharLayout::Builder(nextName[0], font),
CodePointLayout::Builder(nextName[0], font),
VerticalOffsetLayout::Builder(LayoutHelper::String(subscripts[j], strlen(subscripts[j]), font), VerticalOffsetLayoutNode::Type::Subscript)
);
ExpressionTableCellWithPointer * myCell = (ExpressionTableCellWithPointer *)cell;

View File

@@ -2,7 +2,7 @@
#include "sequence_store.h"
#include "cache_context.h"
#include <poincare/layout_helper.h>
#include <poincare/char_layout.h>
#include <poincare/code_point_layout.h>
#include <poincare/vertical_offset_layout.h>
#include <poincare/integer.h>
#include "../shared/poincare_helpers.h"
@@ -147,8 +147,8 @@ int Sequence::numberOfElements() {
Poincare::Layout Sequence::nameLayout() {
if (m_nameLayout.isUninitialized()) {
m_nameLayout = HorizontalLayout::Builder(
CharLayout::Builder(name()[0], KDFont::SmallFont),
VerticalOffsetLayout::Builder(CharLayout::Builder('n', KDFont::SmallFont), VerticalOffsetLayoutNode::Type::Subscript)
CodePointLayout::Builder(name()[0], KDFont::SmallFont),
VerticalOffsetLayout::Builder(CodePointLayout::Builder('n', KDFont::SmallFont), VerticalOffsetLayoutNode::Type::Subscript)
);
}
return m_nameLayout;
@@ -158,16 +158,16 @@ Poincare::Layout Sequence::definitionName() {
if (m_definitionName.isUninitialized()) {
if (m_type == Type::Explicit) {
m_definitionName = HorizontalLayout::Builder(
CharLayout::Builder(name()[0], k_layoutFont),
CodePointLayout::Builder(name()[0], k_layoutFont),
VerticalOffsetLayout::Builder(LayoutHelper::String("n", 1, k_layoutFont), VerticalOffsetLayoutNode::Type::Subscript));
} else if (m_type == Type::SingleRecurrence) {
m_definitionName = HorizontalLayout::Builder(
CharLayout::Builder(name()[0], k_layoutFont),
CodePointLayout::Builder(name()[0], k_layoutFont),
VerticalOffsetLayout::Builder(LayoutHelper::String("n+1", 3, k_layoutFont), VerticalOffsetLayoutNode::Type::Subscript));
} else {
assert(m_type == Type::DoubleRecurrence);
m_definitionName = HorizontalLayout::Builder(
CharLayout::Builder(name()[0], k_layoutFont),
CodePointLayout::Builder(name()[0], k_layoutFont),
VerticalOffsetLayout::Builder(LayoutHelper::String("n+2", 3, k_layoutFont), VerticalOffsetLayoutNode::Type::Subscript));
}
}
@@ -183,7 +183,7 @@ Poincare::Layout Sequence::firstInitialConditionName() {
{
Layout indexLayout = LayoutHelper::String(buffer, strlen(buffer), k_layoutFont);
m_firstInitialConditionName = HorizontalLayout::Builder(
CharLayout::Builder(name()[0], k_layoutFont),
CodePointLayout::Builder(name()[0], k_layoutFont),
VerticalOffsetLayout::Builder(indexLayout, VerticalOffsetLayoutNode::Type::Subscript));
}
return m_firstInitialConditionName;
@@ -196,7 +196,7 @@ Poincare::Layout Sequence::secondInitialConditionName() {
if (m_type == Type::DoubleRecurrence) {
Layout indexLayout = LayoutHelper::String(buffer, strlen(buffer), k_layoutFont);
m_secondInitialConditionName = HorizontalLayout::Builder(
CharLayout::Builder(name()[0], k_layoutFont),
CodePointLayout::Builder(name()[0], k_layoutFont),
VerticalOffsetLayout::Builder(indexLayout, VerticalOffsetLayoutNode::Type::Subscript));
}
}

View File

@@ -15,7 +15,7 @@ public:
void setColor(KDColor color) override;
void setOrientation(Orientation orientation) override;
const KDFont * font() const override {
return Poincare::CharLayoutNode::k_defaultFont;
return Poincare::CodePointLayoutNode::k_defaultFont;
}
Poincare::Layout layout() const override {
return m_titleTextView.layout();

View File

@@ -4,7 +4,7 @@
#include <assert.h>
#include <cmath>
#include <poincare/layout_helper.h>
#include <poincare/char_layout.h>
#include <poincare/code_point_layout.h>
#include <poincare/fraction_layout.h>
#include <poincare/vertical_offset_layout.h>
@@ -84,7 +84,7 @@ Layout layoutForPreferences(I18n::Message message) {
// Complex format
case I18n::Message::Real:
{
return CharLayout::Builder('x', KDFont::SmallFont);
return CodePointLayout::Builder('x', KDFont::SmallFont);
}
case I18n::Message::Cartesian:
{

View File

@@ -1,6 +1,6 @@
#include "list_controller.h"
#include "app.h"
#include <poincare/char_layout.h>
#include <poincare/code_point_layout.h>
#include <assert.h>
using namespace Shared;
@@ -124,7 +124,7 @@ bool textRepresentsAnEquality(const char * text) {
bool layoutRepresentsAnEquality(Poincare::Layout l) {
Poincare::Layout match = l.recursivelyMatches(
[](Poincare::Layout layout) {
return layout.isChar() && static_cast<Poincare::CharLayout &>(layout).character() == '='; });
return layout.isCodePoint() && static_cast<Poincare::CodePointLayout &>(layout).codePoint() == '='; });
return !match.isUninitialized();
}

View File

@@ -5,7 +5,7 @@
#include <assert.h>
#include <limits.h>
#include <poincare/layout_helper.h>
#include <poincare/char_layout.h>
#include <poincare/code_point_layout.h>
#include <poincare/horizontal_layout.h>
#include <poincare/symbol_abstract.h>
#include <poincare/vertical_offset_layout.h>
@@ -75,7 +75,7 @@ SolutionsController::SolutionsController(Responder * parentResponder, EquationSt
m_delta2Layout(),
m_contentView(this)
{
m_delta2Layout = HorizontalLayout::Builder(VerticalOffsetLayout::Builder(CharLayout::Builder('2', KDFont::SmallFont), VerticalOffsetLayoutNode::Type::Superscript), LayoutHelper::String("-4ac", 4, KDFont::SmallFont));
m_delta2Layout = HorizontalLayout::Builder(VerticalOffsetLayout::Builder(CodePointLayout::Builder('2', KDFont::SmallFont), VerticalOffsetLayoutNode::Type::Superscript), LayoutHelper::String("-4ac", 4, KDFont::SmallFont));
char deltaB[] = {Ion::Charset::CapitalDelta, '=', 'b'};
static_cast<HorizontalLayout&>(m_delta2Layout).addOrMergeChildAtIndex(LayoutHelper::String(deltaB, 3, KDFont::SmallFont), 0, false);
for (int i = 0; i < EquationStore::k_maxNumberOfExactSolutions; i++) {

View File

@@ -4,7 +4,6 @@ src += $(addprefix poincare/src/,\
binomial_coefficient_layout.cpp \
bracket_layout.cpp \
bracket_pair_layout.cpp \
char_layout.cpp \
code_point_layout.cpp\
condensed_sum_layout.cpp \
conjugate_layout.cpp \

View File

@@ -1,73 +0,0 @@
#ifndef POINCARE_CHAR_LAYOUT_NODE_H
#define POINCARE_CHAR_LAYOUT_NODE_H
#include <poincare/layout_cursor.h>
#include <poincare/layout.h>
#include <ion/charset.h>
namespace Poincare {
class CharLayoutNode final : public LayoutNode {
public:
static constexpr const KDFont * k_defaultFont = KDFont::LargeFont;
CharLayoutNode(char c = Ion::Charset::Empty, const KDFont * font = k_defaultFont) :
LayoutNode(),
m_char(c),
m_font(font)
{}
// CharLayout
char character() const { return m_char; }
const KDFont * font() const { return m_font; }
// LayoutNode
void moveCursorLeft(LayoutCursor * cursor, bool * shouldRecomputeLayout) override;
void moveCursorRight(LayoutCursor * cursor, bool * shouldRecomputeLayout) override;
int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override;
bool isChar() const override { return true; }
bool isCollapsable(int * numberOfOpenParenthesis, bool goingLeft) const override;
bool canBeOmittedMultiplicationLeftFactor() const override;
bool canBeOmittedMultiplicationRightFactor() const override;
// TreeNode
size_t size() const override { return sizeof(CharLayoutNode); }
int numberOfChildren() const override { return 0; }
#if POINCARE_TREE_LOG
virtual void logNodeName(std::ostream & stream) const override {
stream << "CharLayout";
}
virtual void logAttributes(std::ostream & stream) const override {
stream << " char=\"" << m_char << "\"";
}
#endif
protected:
// LayoutNode
KDSize computeSize() override;
KDCoordinate computeBaseline() override;
KDPoint positionOfChild(LayoutNode * child) override {
assert(false);
return KDPointZero;
}
private:
void render(KDContext * ctx, KDPoint p, KDColor expressionColor, KDColor backgroundColor) override;
bool isMultiplicationChar() const;
char m_char;
const KDFont * m_font;
};
class CharLayout final : public Layout {
public:
CharLayout(const CharLayoutNode * n) : Layout(n) {}
static CharLayout Builder(char c, const KDFont * font = KDFont::LargeFont);
const KDFont * font() const { return const_cast<CharLayout *>(this)->node()->font(); }
char character() const {return const_cast<CharLayout *>(this)->node()->character();}
private:
using Layout::node;
CharLayoutNode * node() { return static_cast<CharLayoutNode *>(Layout::node());}
};
}
#endif

View File

@@ -49,7 +49,6 @@ public:
bool isMatrix() const { return const_cast<Layout *>(this)->node()->isMatrix(); }
bool isVerticalOffset() const { return const_cast<Layout *>(this)->node()->isVerticalOffset(); }
bool isLeftParenthesis() const { return const_cast<Layout *>(this)->node()->isLeftParenthesis(); }
bool isChar() const { return const_cast<Layout *>(this)->node()->isChar(); }
bool isCodePoint() const { return const_cast<Layout *>(this)->node()->isCodePoint(); }
bool isCollapsable(int * numberOfOpenParenthesis, bool goingLeft) const { return const_cast<Layout *>(this)->node()->isCollapsable(numberOfOpenParenthesis, goingLeft); }
int leftCollapsingAbsorbingChildIndex() const { return const_cast<Layout *>(this)->node()->leftCollapsingAbsorbingChildIndex(); }

View File

@@ -109,7 +109,7 @@ public:
void addEmptySquarePowerLayout();
void addEmptyTenPowerLayout();
void addFractionLayoutAndCollapseSiblings();
void addXNTCharLayout();
void addXNTCodePointLayout();
void insertText(const char * text);
void addLayoutAndMoveCursor(Layout l);
bool showEmptyLayoutIfNeeded() { return privateShowHideEmptyLayoutIfNeeded(true); }

View File

@@ -84,14 +84,14 @@ public:
virtual bool isCollapsable(int * numberOfOpenParenthesis, bool goingLeft) const { return true; }
/* isCollapsable is used when adding a sibling fraction: should the layout be
* inserted in the numerator (or denominator)? For instance, 1+2|3-4 should
* become 1+ 2/3 - 4 when pressing "Divide": a CharLayout is collapsable if
* become 1+ 2/3 - 4 when pressing "Divide": a CodePointLayout is collapsable if
* its char is not +, -, or *. */
virtual bool canBeOmittedMultiplicationLeftFactor() const;
virtual bool canBeOmittedMultiplicationRightFactor() const;
/* canBeOmittedMultiplicationLeftFactor and RightFactor return true if the
* layout, next to another layout, might be the factor of a multiplication
* with an omitted multiplication sign. For instance, an absolute value layout
* returns true, because |3|2 means |3|*2. A '+' CharLayout returns false,
* returns true, because |3|2 means |3|*2. A '+' CodePointLayout returns false,
* because +'something' nevers means +*'something'. */
virtual bool mustHaveLeftSibling() const { return false; }
virtual bool isVerticalOffset() const { return false; }
@@ -104,7 +104,6 @@ public:
virtual bool isRightBracket() const { return false; }
virtual bool isEmpty() const { return false; }
virtual bool isMatrix() const { return false; }
virtual bool isChar() const { return false; }
virtual bool isCodePoint() const { return false; }
virtual bool hasUpperLeftIndex() const { return false; }
virtual char XNTChar() const {

View File

@@ -27,8 +27,8 @@ namespace SerializationHelper {
const char * operatorName,
bool writeFirstChild = true);
// Write one char in buffer
int Char(char * buffer, int bufferSize, char charToWrite); // TODO REMOVE
// Write one char in a buffer
int Char(char * buffer, int bufferSize, char c);
// Write one code point in a buffer
int CodePoint(char * buffer, int bufferSize, CodePoint c);
};

View File

@@ -6,7 +6,6 @@
#include <poincare/absolute_value_layout.h>
#include <poincare/binomial_coefficient_layout.h>
#include <poincare/bracket_pair_layout.h>
#include <poincare/char_layout.h>
#include <poincare/code_point_layout.h>
#include <poincare/ceiling_layout.h>
#include <poincare/condensed_sum_layout.h>

View File

@@ -1,106 +0,0 @@
#include <poincare/char_layout.h>
#include <poincare/layout_helper.h>
#include <poincare/serialization_helper.h>
namespace Poincare {
// LayoutNode
void CharLayoutNode::moveCursorLeft(LayoutCursor * cursor, bool * shouldRecomputeLayout) {
if (cursor->position() == LayoutCursor::Position::Right) {
cursor->setPosition(LayoutCursor::Position::Left);
return;
}
LayoutNode * parentNode = parent();
if (parentNode != nullptr) {
parentNode->moveCursorLeft(cursor, shouldRecomputeLayout);
}
}
void CharLayoutNode::moveCursorRight(LayoutCursor * cursor, bool * shouldRecomputeLayout) {
if (cursor->position() == LayoutCursor::Position::Left) {
cursor->setPosition(LayoutCursor::Position::Right);
return;
}
LayoutNode * parentNode = parent();
if (parentNode != nullptr) {
parentNode->moveCursorRight(cursor, shouldRecomputeLayout);
}
}
int CharLayoutNode::serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const {
return SerializationHelper::Char(buffer, bufferSize, m_char);
}
bool CharLayoutNode::isCollapsable(int * numberOfOpenParenthesis, bool goingLeft) const {
if (*numberOfOpenParenthesis <= 0) {
if (m_char == '+'
|| m_char == Ion::Charset::Sto
|| m_char == '='
|| m_char == ',')
{
return false;
}
if (m_char == '-') {
/* If the expression is like 3E-200, we want '-' to be collapsable.
* Otherwise, '-' is not collapsable. */
Layout thisRef = CharLayout(this);
Layout parent = thisRef.parent();
if (!parent.isUninitialized()) {
int indexOfThis = parent.indexOfChild(thisRef);
if (indexOfThis > 0) {
Layout leftBrother = parent.childAtIndex(indexOfThis-1);
if (leftBrother.isChar()
&& static_cast<CharLayout&>(leftBrother).character() == Ion::Charset::Exponent)
{
return true;
}
}
}
return false;
}
}
return true;
}
bool CharLayoutNode::canBeOmittedMultiplicationLeftFactor() const {
if (isMultiplicationChar()) {
return false;
}
return LayoutNode::canBeOmittedMultiplicationRightFactor();
}
bool CharLayoutNode::canBeOmittedMultiplicationRightFactor() const {
if (m_char == '!' || isMultiplicationChar()) {
return false;
}
return LayoutNode::canBeOmittedMultiplicationRightFactor();
}
// Sizing and positioning
KDSize CharLayoutNode::computeSize() {
return m_font->glyphSize();
}
KDCoordinate CharLayoutNode::computeBaseline() {
return m_font->glyphSize().height()/2;
}
void CharLayoutNode::render(KDContext * ctx, KDPoint p, KDColor expressionColor, KDColor backgroundColor) {
char string[2] = {m_char, 0};
ctx->drawString(string, p, m_font, expressionColor, backgroundColor);
}
bool CharLayoutNode::isMultiplicationChar() const {
return m_char == '*'
|| m_char == Ion::Charset::MultiplicationSign
|| m_char == Ion::Charset::MiddleDot;
}
CharLayout CharLayout::Builder(char c, const KDFont * font) {
void * bufferNode = TreePool::sharedPool()->alloc(sizeof(CharLayoutNode));
CharLayoutNode * node = new (bufferNode) CharLayoutNode(c, font);
TreeHandle h = TreeHandle::BuildWithGhostChildren(node);
return static_cast<CharLayout &>(h);
}
}

View File

@@ -1,5 +1,5 @@
#include <poincare/constant.h>
#include <poincare/char_layout.h>
#include <poincare/code_point_layout.h>
#include <poincare/horizontal_layout.h>
#include <poincare/layout_helper.h>
#include <poincare/complex_cartesian.h>

View File

@@ -8,7 +8,7 @@
#include <poincare/square_root.h>
#include <poincare/subtraction.h>
#include <poincare/symbol.h>
#include <poincare/char_layout.h>
#include <poincare/code_point_layout.h>
#include <poincare/serialization_helper.h>
#include <poincare/horizontal_layout.h>
#include <ion.h>
@@ -27,7 +27,7 @@ Expression EqualNode::shallowReduce(Context & context, Preferences::ComplexForma
Layout EqualNode::createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const {
HorizontalLayout result = HorizontalLayout::Builder();
result.addOrMergeChildAtIndex(childAtIndex(0)->createLayout(floatDisplayMode, numberOfSignificantDigits), 0, false);
result.addChildAtIndex(CharLayout::Builder('='), result.numberOfChildren(), result.numberOfChildren(), nullptr);
result.addChildAtIndex(CodePointLayout::Builder('='), result.numberOfChildren(), result.numberOfChildren(), nullptr);
result.addOrMergeChildAtIndex(childAtIndex(1)->createLayout(floatDisplayMode, numberOfSignificantDigits), result.numberOfChildren(), false);
return result;
}

View File

@@ -1,6 +1,6 @@
#include <poincare/factorial.h>
#include <poincare/constant.h>
#include <poincare/char_layout.h>
#include <poincare/code_point_layout.h>
#include <poincare/horizontal_layout.h>
#include <poincare/rational.h>
#include <poincare/undefined.h>
@@ -62,7 +62,7 @@ Layout FactorialNode::createLayout(Preferences::PrintFloatMode floatDisplayMode,
HorizontalLayout result = HorizontalLayout::Builder();
result.addOrMergeChildAtIndex(childAtIndex(0)->createLayout(floatDisplayMode, numberOfSignificantDigits), 0, false);
int childrenCount = result.numberOfChildren();
result.addChildAtIndex(CharLayout::Builder('!'), childrenCount, childrenCount, nullptr);
result.addChildAtIndex(CodePointLayout::Builder('!'), childrenCount, childrenCount, nullptr);
return result;
}

View File

@@ -1,5 +1,5 @@
#include <poincare/integral_layout.h>
#include <poincare/char_layout.h>
#include <poincare/code_point_layout.h>
#include <poincare/horizontal_layout.h>
#include <poincare/serialization_helper.h>
#include <string.h>

View File

@@ -1,6 +1,6 @@
#include <poincare/layout.h>
#include <poincare/bracket_pair_layout.h>
#include <poincare/char_layout.h>
#include <poincare/code_point_layout.h>
#include <poincare/empty_layout.h>
#include <poincare/expression.h>
#include <poincare/horizontal_layout.h>

View File

@@ -1,5 +1,5 @@
#include <poincare/layout_cursor.h>
#include <poincare/char_layout.h>
#include <poincare/code_point_layout.h>
#include <poincare/empty_layout.h>
#include <poincare/fraction_layout.h>
#include <poincare/horizontal_layout.h>
@@ -75,7 +75,7 @@ void LayoutCursor::move(MoveDirection direction, bool * shouldRecomputeLayout) {
void LayoutCursor::addEmptyExponentialLayout() {
EmptyLayout emptyLayout = EmptyLayout::Builder();
HorizontalLayout sibling = HorizontalLayout::Builder(
CharLayout::Builder(Ion::Charset::Exponential),
CodePointLayout::Builder(Ion::Charset::Exponential),
VerticalOffsetLayout::Builder(emptyLayout, VerticalOffsetLayoutNode::Type::Superscript));
m_layout.addSibling(this, sibling, false);
m_layout = emptyLayout;
@@ -107,16 +107,16 @@ void LayoutCursor::addEmptyPowerLayout() {
}
void LayoutCursor::addEmptySquarePowerLayout() {
VerticalOffsetLayout offsetLayout = VerticalOffsetLayout::Builder(CharLayout::Builder('2'), VerticalOffsetLayoutNode::Type::Superscript);
VerticalOffsetLayout offsetLayout = VerticalOffsetLayout::Builder(CodePointLayout::Builder('2'), VerticalOffsetLayoutNode::Type::Superscript);
privateAddEmptyPowerLayout(offsetLayout);
}
void LayoutCursor::addEmptyTenPowerLayout() {
EmptyLayout emptyLayout = EmptyLayout::Builder();
HorizontalLayout sibling = HorizontalLayout::Builder(
CharLayout::Builder(Ion::Charset::MiddleDot),
CharLayout::Builder('1'),
CharLayout::Builder('0'),
CodePointLayout::Builder(Ion::Charset::MiddleDot),
CodePointLayout::Builder('1'),
CodePointLayout::Builder('0'),
VerticalOffsetLayout::Builder(
emptyLayout,
VerticalOffsetLayoutNode::Type::Superscript));
@@ -132,8 +132,8 @@ void LayoutCursor::addFractionLayoutAndCollapseSiblings() {
Layout(newChild.node()).collapseSiblings(this);
}
void LayoutCursor::addXNTCharLayout() {
m_layout.addSibling(this, CharLayout::Builder(m_layout.XNTChar()), true);
void LayoutCursor::addXNTCodePointLayout() {
m_layout.addSibling(this, CodePointLayout::Builder(m_layout.XNTChar()), true);
}
void LayoutCursor::insertText(const char * text) {
@@ -148,7 +148,7 @@ void LayoutCursor::insertText(const char * text) {
continue;
}
if (text[i] == Ion::Charset::MultiplicationSign) {
newChild = CharLayout::Builder(Ion::Charset::MiddleDot);
newChild = CodePointLayout::Builder(Ion::Charset::MiddleDot);
} else if (text[i] == '(') {
newChild = LeftParenthesisLayout::Builder();
if (pointedChild.isUninitialized()) {
@@ -167,7 +167,7 @@ void LayoutCursor::insertText(const char * text) {
}
#endif
else {
newChild = CharLayout::Builder(text[i]);
newChild = CodePointLayout::Builder(text[i]);
}
m_layout.addSibling(this, newChild, true);
}

View File

@@ -1,5 +1,5 @@
#include <poincare/layout_helper.h>
#include <poincare/char_layout.h>
#include <poincare/code_point_layout.h>
#include <poincare/horizontal_layout.h>
#include <poincare/left_parenthesis_layout.h>
#include <poincare/right_parenthesis_layout.h>
@@ -34,7 +34,7 @@ Layout LayoutHelper::Prefix(const Expression & expression, Preferences::PrintFlo
if (numberOfChildren > 0) {
args.addOrMergeChildAtIndex(expression.childAtIndex(0).createLayout(floatDisplayMode, numberOfSignificantDigits), 0, true);
for (int i = 1; i < numberOfChildren; i++) {
args.addChildAtIndex(CharLayout::Builder(','), args.numberOfChildren(), args.numberOfChildren(), nullptr);
args.addChildAtIndex(CodePointLayout::Builder(','), args.numberOfChildren(), args.numberOfChildren(), nullptr);
args.addOrMergeChildAtIndex(expression.childAtIndex(i).createLayout(floatDisplayMode, numberOfSignificantDigits), args.numberOfChildren(), true);
}
}
@@ -57,7 +57,7 @@ HorizontalLayout LayoutHelper::String(const char * buffer, int bufferLen, const
assert(bufferLen > 0);
HorizontalLayout resultLayout = HorizontalLayout::Builder();
for (int i = 0; i < bufferLen; i++) {
resultLayout.addChildAtIndex(CharLayout::Builder(buffer[i], font), i, i, nullptr);
resultLayout.addChildAtIndex(CodePointLayout::Builder(buffer[i], font), i, i, nullptr);
}
return resultLayout;
}

View File

@@ -1,6 +1,6 @@
#include <poincare/opposite.h>
#include <poincare/addition.h>
#include <poincare/char_layout.h>
#include <poincare/code_point_layout.h>
#include <poincare/constant.h>
#include <poincare/horizontal_layout.h>
#include <cmath>
@@ -41,7 +41,7 @@ bool OppositeNode::childNeedsParenthesis(const TreeNode * child) const {
}
Layout OppositeNode::createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const {
HorizontalLayout result = HorizontalLayout::Builder(CharLayout::Builder('-'));
HorizontalLayout result = HorizontalLayout::Builder(CodePointLayout::Builder('-'));
if (childAtIndex(0)->type() == Type::Opposite) {
result.addOrMergeChildAtIndex(LayoutHelper::Parentheses(childAtIndex(0)->createLayout(floatDisplayMode, numberOfSignificantDigits), false), 1, false);
} else {

View File

@@ -1,5 +1,5 @@
#include <poincare/product_layout.h>
#include <poincare/char_layout.h>
#include <poincare/code_point_layout.h>
#include <poincare/horizontal_layout.h>
namespace Poincare {

View File

@@ -9,7 +9,7 @@ extern "C" {
#include <poincare/opposite.h>
#include <poincare/infinity.h>
#include <poincare/fraction_layout.h>
#include <poincare/char_layout.h>
#include <poincare/code_point_layout.h>
namespace Poincare {

View File

@@ -1,5 +1,5 @@
#include <poincare/sequence_layout.h>
#include <poincare/char_layout.h>
#include <poincare/code_point_layout.h>
#include <poincare/horizontal_layout.h>
#include <poincare/left_parenthesis_layout.h>
#include <poincare/right_parenthesis_layout.h>

View File

@@ -137,15 +137,15 @@ int SerializationHelper::Prefix(
return numberOfChar;
}
int SerializationHelper::Char(char * buffer, int bufferSize, char charToWrite) {
int SerializationHelper::Char(char * buffer, int bufferSize, char c) {
if (bufferSize == 0) {
return -1;
}
buffer[bufferSize-1] = 0;
if (bufferSize == 1) {
buffer[0] = 0;
return 0;
}
buffer[0] = charToWrite;
buffer[0] = c;
buffer[1] = 0;
return 1;
}

View File

@@ -1,5 +1,5 @@
#include <poincare/store.h>
#include <poincare/char_layout.h>
#include <poincare/code_point_layout.h>
#include <poincare/context.h>
#include <poincare/complex.h>
#include <poincare/horizontal_layout.h>
@@ -34,7 +34,7 @@ int StoreNode::serialize(char * buffer, int bufferSize, Preferences::PrintFloatM
Layout StoreNode::createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const {
HorizontalLayout result = HorizontalLayout::Builder();
result.addOrMergeChildAtIndex(childAtIndex(0)->createLayout(floatDisplayMode, numberOfSignificantDigits), 0, false);
result.addChildAtIndex(CharLayout::Builder(Ion::Charset::Sto), result.numberOfChildren(), result.numberOfChildren(), nullptr);
result.addChildAtIndex(CodePointLayout::Builder(Ion::Charset::Sto), result.numberOfChildren(), result.numberOfChildren(), nullptr);
result.addOrMergeChildAtIndex(childAtIndex(1)->createLayout(floatDisplayMode, numberOfSignificantDigits), result.numberOfChildren(), false);
return result;
}

View File

@@ -1,5 +1,5 @@
#include <poincare/sum_layout.h>
#include <poincare/char_layout.h>
#include <poincare/code_point_layout.h>
#include <poincare/horizontal_layout.h>
namespace Poincare {

View File

@@ -1,5 +1,5 @@
#include <poincare/symbol.h>
#include <poincare/char_layout.h>
#include <poincare/code_point_layout.h>
#include <poincare/context.h>
#include <poincare/horizontal_layout.h>
#include <poincare/layout_helper.h>
@@ -81,32 +81,32 @@ bool SymbolNode::isReal(Context & context) const {
Layout SymbolNode::createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const {
if (m_name[0] == Symbol::SpecialSymbols::UnknownX) {
assert(m_name[1] == 0);
return CharLayout::Builder(Symbol::k_unknownXReadableChar);
return CodePointLayout::Builder(Symbol::k_unknownXReadableChar);
}
if (strcmp(m_name, "u(n)") == 0) {
return HorizontalLayout::Builder(
CharLayout::Builder('u'),
CodePointLayout::Builder('u'),
VerticalOffsetLayout::Builder(
CharLayout::Builder('n'),
CodePointLayout::Builder('n'),
VerticalOffsetLayoutNode::Type::Subscript));
}
if (strcmp(m_name, "u(n+1)") == 0) {
return HorizontalLayout::Builder(
CharLayout::Builder('u'),
CodePointLayout::Builder('u'),
VerticalOffsetLayout::Builder(
LayoutHelper::String("n+1", 3),
VerticalOffsetLayoutNode::Type::Subscript));
}
if (strcmp(m_name, "v(n)") == 0) {
return HorizontalLayout::Builder(
CharLayout::Builder('v'),
CodePointLayout::Builder('v'),
VerticalOffsetLayout::Builder(
CharLayout::Builder('n'),
CodePointLayout::Builder('n'),
VerticalOffsetLayoutNode::Type::Subscript));
}
if (strcmp(m_name, "v(n+1)") == 0) {
return HorizontalLayout::Builder(
CharLayout::Builder('v'),
CodePointLayout::Builder('v'),
VerticalOffsetLayout::Builder(
LayoutHelper::String("n+1", 3),
VerticalOffsetLayoutNode::Type::Subscript));

View File

@@ -41,11 +41,11 @@ QUIZ_CASE(poincare_fraction_layout_delete) {
* |3
* */
HorizontalLayout layout2 = HorizontalLayout::Builder(
CharLayout::Builder('1'),
CharLayout::Builder('+'),
CodePointLayout::Builder('1'),
CodePointLayout::Builder('+'),
FractionLayout::Builder(
EmptyLayout::Builder(),
CharLayout::Builder('3')
CodePointLayout::Builder('3')
)
);
LayoutCursor cursor2(layout2.childAtIndex(2).childAtIndex(1), LayoutCursor::Position::Left);
@@ -56,7 +56,7 @@ QUIZ_CASE(poincare_fraction_layout_delete) {
QUIZ_CASE(poincare_fraction_layout_serialize) {
FractionLayout layout = FractionLayout::Builder(
CharLayout::Builder('1'),
CodePointLayout::Builder('1'),
LayoutHelper::String("2+3", 3)
);
assert_expression_layout_serialize_to(layout, "(1)/(2+3)");

View File

@@ -44,7 +44,7 @@ void assert_parsed_layout_is(Layout l, Poincare::Expression r) {
QUIZ_CASE(poincare_create_all_layouts) {
EmptyLayout e0 = EmptyLayout::Builder();
AbsoluteValueLayout e1 = AbsoluteValueLayout::Builder(e0);
CharLayout e2 = CharLayout::Builder('a');
CodePointLayout e2 = CodePointLayout::Builder('a');
BinomialCoefficientLayout e3 = BinomialCoefficientLayout::Builder(e1, e2);
CeilingLayout e4 = CeilingLayout::Builder(e3);
RightParenthesisLayout e5 = RightParenthesisLayout::Builder();
@@ -82,20 +82,20 @@ QUIZ_CASE(poincare_parse_layouts) {
// 1+2
l = HorizontalLayout::Builder(
CharLayout::Builder('1'),
CharLayout::Builder('+'),
CharLayout::Builder('2'));
CodePointLayout::Builder('1'),
CodePointLayout::Builder('+'),
CodePointLayout::Builder('2'));
e = Addition::Builder(Rational::Builder(1), Rational::Builder(2));
assert_parsed_layout_is(l, e);
// |3+3/6|
l = AbsoluteValueLayout:: Builder(
HorizontalLayout::Builder(
CharLayout::Builder('3'),
CharLayout::Builder('+'),
CodePointLayout::Builder('3'),
CodePointLayout::Builder('+'),
FractionLayout::Builder(
CharLayout::Builder('3'),
CharLayout::Builder('6'))));
CodePointLayout::Builder('3'),
CodePointLayout::Builder('6'))));
e = AbsoluteValue::Builder(
Addition::Builder(
Rational::Builder(3),
@@ -106,8 +106,8 @@ QUIZ_CASE(poincare_parse_layouts) {
// binCoef(4,5)
l = BinomialCoefficientLayout::Builder(
CharLayout::Builder('4'),
CharLayout::Builder('5'));
CodePointLayout::Builder('4'),
CodePointLayout::Builder('5'));
e = BinomialCoefficient::Builder(
Rational::Builder(4),
Rational::Builder(5));
@@ -116,9 +116,9 @@ QUIZ_CASE(poincare_parse_layouts) {
// ceil(4.6)
l = CeilingLayout::Builder(
HorizontalLayout::Builder(
CharLayout::Builder('4'),
CharLayout::Builder('.'),
CharLayout::Builder('6')));
CodePointLayout::Builder('4'),
CodePointLayout::Builder('.'),
CodePointLayout::Builder('6')));
e = Ceiling::Builder(
Decimal::Builder(4.6));
assert_parsed_layout_is(l, e);
@@ -126,21 +126,21 @@ QUIZ_CASE(poincare_parse_layouts) {
// floor(7.2)
l = FloorLayout::Builder(
HorizontalLayout::Builder(
CharLayout::Builder('7'),
CharLayout::Builder('.'),
CharLayout::Builder('2')));
CodePointLayout::Builder('7'),
CodePointLayout::Builder('.'),
CodePointLayout::Builder('2')));
e = Floor::Builder(
Decimal::Builder(7.2));
assert_parsed_layout_is(l, e);
// 2^(3+4)
l = HorizontalLayout::Builder(
CharLayout::Builder('2'),
CodePointLayout::Builder('2'),
VerticalOffsetLayout::Builder(
HorizontalLayout::Builder(
CharLayout::Builder('3'),
CharLayout::Builder('+'),
CharLayout::Builder('4')),
CodePointLayout::Builder('3'),
CodePointLayout::Builder('+'),
CodePointLayout::Builder('4')),
VerticalOffsetLayoutNode::Type::Superscript));
e = Power::Builder(
Rational::Builder(2),
@@ -151,12 +151,12 @@ QUIZ_CASE(poincare_parse_layouts) {
// log_3(2)
HorizontalLayout l1 = HorizontalLayout::Builder();
l1.addChildAtIndex(CharLayout::Builder('l'), l1.numberOfChildren(), l1.numberOfChildren(), nullptr);
l1.addChildAtIndex(CharLayout::Builder('o'), l1.numberOfChildren(), l1.numberOfChildren(), nullptr);
l1.addChildAtIndex(CharLayout::Builder('g'), l1.numberOfChildren(), l1.numberOfChildren(), nullptr);
l1.addChildAtIndex(VerticalOffsetLayout::Builder(CharLayout::Builder('3'), VerticalOffsetLayoutNode::Type::Subscript), l1.numberOfChildren(), l1.numberOfChildren(), nullptr);
l1.addChildAtIndex(CodePointLayout::Builder('l'), l1.numberOfChildren(), l1.numberOfChildren(), nullptr);
l1.addChildAtIndex(CodePointLayout::Builder('o'), l1.numberOfChildren(), l1.numberOfChildren(), nullptr);
l1.addChildAtIndex(CodePointLayout::Builder('g'), l1.numberOfChildren(), l1.numberOfChildren(), nullptr);
l1.addChildAtIndex(VerticalOffsetLayout::Builder(CodePointLayout::Builder('3'), VerticalOffsetLayoutNode::Type::Subscript), l1.numberOfChildren(), l1.numberOfChildren(), nullptr);
l1.addChildAtIndex(LeftParenthesisLayout::Builder(), l1.numberOfChildren(), l1.numberOfChildren(), nullptr);
l1.addChildAtIndex(CharLayout::Builder('2'), l1.numberOfChildren(), l1.numberOfChildren(), nullptr);
l1.addChildAtIndex(CodePointLayout::Builder('2'), l1.numberOfChildren(), l1.numberOfChildren(), nullptr);
l1.addChildAtIndex(RightParenthesisLayout::Builder(), l1.numberOfChildren(), l1.numberOfChildren(), nullptr);
l = l1;
e = Logarithm::Builder(
@@ -166,17 +166,17 @@ QUIZ_CASE(poincare_parse_layouts) {
// root(5,3)
l = NthRootLayout::Builder(
CharLayout::Builder('5'),
CharLayout::Builder('3'));
CodePointLayout::Builder('5'),
CodePointLayout::Builder('3'));
e = NthRoot::Builder(Rational::Builder(5), Rational::Builder(3));
assert_parsed_layout_is(l, e);
// int(7, x, 4, 5)
l = IntegralLayout::Builder(
CharLayout::Builder('7'),
CharLayout::Builder('x'),
CharLayout::Builder('4'),
CharLayout::Builder('5'));
CodePointLayout::Builder('7'),
CodePointLayout::Builder('x'),
CodePointLayout::Builder('4'),
CodePointLayout::Builder('5'));
e = Integral::Builder(
Rational::Builder(7),
Symbol::Builder('x'),
@@ -186,11 +186,11 @@ QUIZ_CASE(poincare_parse_layouts) {
// 2^2 !
l = HorizontalLayout::Builder(
CharLayout::Builder('2'),
CodePointLayout::Builder('2'),
VerticalOffsetLayout::Builder(
CharLayout::Builder('2'),
CodePointLayout::Builder('2'),
VerticalOffsetLayoutNode::Type::Superscript),
CharLayout::Builder('!'));
CodePointLayout::Builder('!'));
e = Factorial::Builder(
Power::Builder(
Rational::Builder(2),
@@ -199,14 +199,14 @@ QUIZ_CASE(poincare_parse_layouts) {
// 5* 6/(7+5) *3
l = HorizontalLayout::Builder(
CharLayout::Builder('5'),
CodePointLayout::Builder('5'),
FractionLayout::Builder(
CharLayout::Builder('6'),
CodePointLayout::Builder('6'),
HorizontalLayout::Builder(
CharLayout::Builder('7'),
CharLayout::Builder('+'),
CharLayout::Builder('5'))),
CharLayout::Builder('3'));
CodePointLayout::Builder('7'),
CodePointLayout::Builder('+'),
CodePointLayout::Builder('5'))),
CodePointLayout::Builder('3'));
e = Multiplication::Builder(
Rational::Builder(5),
Division::Builder(
@@ -220,14 +220,14 @@ QUIZ_CASE(poincare_parse_layouts) {
// [[3^2!, 7][4,5]
l = MatrixLayout::Builder(
HorizontalLayout::Builder(
CharLayout::Builder('3'),
CodePointLayout::Builder('3'),
VerticalOffsetLayout::Builder(
CharLayout::Builder('2'),
CodePointLayout::Builder('2'),
VerticalOffsetLayoutNode::Type::Superscript),
CharLayout::Builder('!')),
CharLayout::Builder('7'),
CharLayout::Builder('4'),
CharLayout::Builder('5'));
CodePointLayout::Builder('!')),
CodePointLayout::Builder('7'),
CodePointLayout::Builder('4'),
CodePointLayout::Builder('5'));
Matrix m = BuildOneChildMatrix(
Factorial::Builder(
Power::Builder(
@@ -242,15 +242,15 @@ QUIZ_CASE(poincare_parse_layouts) {
// 2^det([[3!, 7][4,5])
l = HorizontalLayout::Builder(
CharLayout::Builder('2'),
CodePointLayout::Builder('2'),
VerticalOffsetLayout::Builder(
MatrixLayout::Builder(
HorizontalLayout::Builder(
CharLayout::Builder('3'),
CharLayout::Builder('!')),
CharLayout::Builder('7'),
CharLayout::Builder('4'),
CharLayout::Builder('5')),
CodePointLayout::Builder('3'),
CodePointLayout::Builder('!')),
CodePointLayout::Builder('7'),
CodePointLayout::Builder('4'),
CodePointLayout::Builder('5')),
VerticalOffsetLayoutNode::Type::Superscript));
m = BuildOneChildMatrix(
Factorial::Builder(
@@ -264,10 +264,10 @@ QUIZ_CASE(poincare_parse_layouts) {
// 2e^3
l = HorizontalLayout::Builder(
CharLayout::Builder('2'),
CharLayout::Builder(Ion::Charset::Exponential),
CodePointLayout::Builder('2'),
CodePointLayout::Builder(Ion::Charset::Exponential),
VerticalOffsetLayout::Builder(
CharLayout::Builder('3'),
CodePointLayout::Builder('3'),
VerticalOffsetLayoutNode::Type::Superscript));
e = Multiplication::Builder(Rational::Builder(2),Power::Builder(Constant::Builder(Ion::Charset::Exponential),Parenthesis::Builder(Rational::Builder(3))));
assert_parsed_expression_is("2X^(3)", Multiplication::Builder(Rational::Builder(2),Power::Builder(Constant::Builder(Ion::Charset::Exponential),Parenthesis::Builder(Rational::Builder(3)))));

View File

@@ -16,16 +16,16 @@ QUIZ_CASE(poincare_parenthesis_layout_size) {
LeftParenthesisLayout leftPar = LeftParenthesisLayout::Builder();
RightParenthesisLayout rightPar = RightParenthesisLayout::Builder();
layout.addChildAtIndex(leftPar, 0, 0, nullptr);
layout.addChildAtIndex(CharLayout::Builder('2'), 1, 1, nullptr);
layout.addChildAtIndex(CharLayout::Builder('+'), 2, 2, nullptr);
layout.addChildAtIndex(CodePointLayout::Builder('2'), 1, 1, nullptr);
layout.addChildAtIndex(CodePointLayout::Builder('+'), 2, 2, nullptr);
layout.addChildAtIndex(LeftParenthesisLayout::Builder(), 3, 3, nullptr);
layout.addChildAtIndex(FractionLayout::Builder(
CharLayout::Builder('3'),
CharLayout::Builder('4')),
CodePointLayout::Builder('3'),
CodePointLayout::Builder('4')),
4, 4, nullptr);
layout.addChildAtIndex(RightParenthesisLayout::Builder(), 4, 4, nullptr);
layout.addChildAtIndex(CharLayout::Builder('6'), 5, 5, nullptr);
layout.addChildAtIndex(CodePointLayout::Builder('6'), 5, 5, nullptr);
layout.addChildAtIndex(rightPar, 7, 7, nullptr);
layout.addChildAtIndex(CharLayout::Builder('1'), 8, 8, nullptr);
layout.addChildAtIndex(CodePointLayout::Builder('1'), 8, 8, nullptr);
quiz_assert(leftPar.layoutSize().height() == rightPar.layoutSize().height());
}

View File

@@ -8,7 +8,7 @@ using namespace Poincare;
QUIZ_CASE(poincare_vertical_offset_layout_serialize) {
HorizontalLayout layout = HorizontalLayout::Builder(
CharLayout::Builder('2'),
CodePointLayout::Builder('2'),
VerticalOffsetLayout::Builder(
LayoutHelper::String("x+5", 3),
VerticalOffsetLayoutNode::Type::Superscript