mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-01-19 00:37:25 +01:00
[apps/poincare] Replace CharLayouts with CodePointLayouts
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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
|
||||
)
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
);
|
||||
}
|
||||
|
||||
@@ -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
|
||||
),
|
||||
};
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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
|
||||
)
|
||||
);
|
||||
|
||||
@@ -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)
|
||||
);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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:
|
||||
{
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
@@ -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++) {
|
||||
|
||||
@@ -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 \
|
||||
|
||||
@@ -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
|
||||
@@ -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(); }
|
||||
|
||||
@@ -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); }
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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);
|
||||
};
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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>
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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));
|
||||
|
||||
@@ -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)");
|
||||
|
||||
@@ -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)))));
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user