mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-01-19 00:37:25 +01:00
[poincare] Symbol: createLayout is special for sequence symbols. We add w(n) and w(n+1) to all other sequence symbols.
This commit is contained in:
@@ -85,33 +85,21 @@ Layout SymbolNode::createLayout(Preferences::PrintFloatMode floatDisplayMode, in
|
||||
return CodePointLayout::Builder('n');
|
||||
}
|
||||
// TODO return Parse(m_name).createLayout() ?
|
||||
if (strcmp(m_name, "u(n)") == 0) {
|
||||
return HorizontalLayout::Builder(
|
||||
CodePointLayout::Builder('u'),
|
||||
VerticalOffsetLayout::Builder(
|
||||
CodePointLayout::Builder('n'),
|
||||
VerticalOffsetLayoutNode::Position::Subscript));
|
||||
}
|
||||
if (strcmp(m_name, "u(n+1)") == 0) {
|
||||
return HorizontalLayout::Builder(
|
||||
CodePointLayout::Builder('u'),
|
||||
VerticalOffsetLayout::Builder(
|
||||
LayoutHelper::String("n+1", 3),
|
||||
VerticalOffsetLayoutNode::Position::Subscript));
|
||||
}
|
||||
if (strcmp(m_name, "v(n)") == 0) {
|
||||
return HorizontalLayout::Builder(
|
||||
CodePointLayout::Builder('v'),
|
||||
VerticalOffsetLayout::Builder(
|
||||
CodePointLayout::Builder('n'),
|
||||
VerticalOffsetLayoutNode::Position::Subscript));
|
||||
}
|
||||
if (strcmp(m_name, "v(n+1)") == 0) {
|
||||
return HorizontalLayout::Builder(
|
||||
CodePointLayout::Builder('v'),
|
||||
VerticalOffsetLayout::Builder(
|
||||
LayoutHelper::String("n+1", 3),
|
||||
VerticalOffsetLayoutNode::Position::Subscript));
|
||||
// Special case for the symbol names: u(n), u(n+1), v(n), v(n+1), w(n), w(n+1)
|
||||
const char * sequenceIndex[] = {"n", "n+1"};
|
||||
for (char sequenceName = 'u'; sequenceName <= 'w'; sequenceName++) {
|
||||
if (m_name[0] == sequenceName) {
|
||||
for (int i = 0; i < sizeof(sequenceIndex)/sizeof(char *); i++) {
|
||||
size_t sequenceIndexLength = strlen(sequenceIndex[i]);
|
||||
if (m_name[1] == '(' && strncmp(sequenceIndex[i], m_name+2, sequenceIndexLength) == 0 && m_name[2+sequenceIndexLength] == ')' && m_name[3+sequenceIndexLength] == 0) {
|
||||
return HorizontalLayout::Builder(
|
||||
CodePointLayout::Builder(sequenceName),
|
||||
VerticalOffsetLayout::Builder(
|
||||
LayoutHelper::String(sequenceIndex[i], sequenceIndexLength),
|
||||
VerticalOffsetLayoutNode::Position::Subscript));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return LayoutHelper::String(m_name, strlen(m_name));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user