[apps/sequence] Align sequence title and expression baselines

This commit is contained in:
Léa Saviot
2018-11-30 11:16:04 +01:00
parent 64446f24e6
commit 3595a8e628
13 changed files with 72 additions and 65 deletions

View File

@@ -24,7 +24,7 @@ Sequence::Sequence(const char * text, KDColor color) :
m_firstInitialConditionLayout(),
m_secondInitialConditionLayout(),
m_nameLayout(),
m_definitionNameWithEqual(),
m_definitionName(),
m_firstInitialConditionName(),
m_secondInitialConditionName(),
m_initialRank(0)
@@ -155,38 +155,23 @@ Poincare::Layout Sequence::nameLayout() {
}
Poincare::Layout Sequence::definitionName() {
if (m_type == Type::Explicit) {
return HorizontalLayout(
CharLayout(name()[0], k_layoutFont),
VerticalOffsetLayout(LayoutHelper::String("n", 1, k_layoutFont), VerticalOffsetLayoutNode::Type::Subscript));
if (m_definitionName.isUninitialized()) {
if (m_type == Type::Explicit) {
m_definitionName = HorizontalLayout(
CharLayout(name()[0], k_layoutFont),
VerticalOffsetLayout(LayoutHelper::String("n", 1, k_layoutFont), VerticalOffsetLayoutNode::Type::Subscript));
} else if (m_type == Type::SingleRecurrence) {
m_definitionName = HorizontalLayout(
CharLayout(name()[0], k_layoutFont),
VerticalOffsetLayout(LayoutHelper::String("n+1", 3, k_layoutFont), VerticalOffsetLayoutNode::Type::Subscript));
} else {
assert(m_type == Type::DoubleRecurrence);
m_definitionName = HorizontalLayout(
CharLayout(name()[0], k_layoutFont),
VerticalOffsetLayout(LayoutHelper::String("n+2", 3, k_layoutFont), VerticalOffsetLayoutNode::Type::Subscript));
}
}
if (m_type == Type::SingleRecurrence) {
return HorizontalLayout(
CharLayout(name()[0], k_layoutFont),
VerticalOffsetLayout(LayoutHelper::String("n+1", 3, k_layoutFont), VerticalOffsetLayoutNode::Type::Subscript));
}
assert(m_type == Type::DoubleRecurrence);
return HorizontalLayout(
CharLayout(name()[0], k_layoutFont),
VerticalOffsetLayout(LayoutHelper::String("n+2", 3, k_layoutFont), VerticalOffsetLayoutNode::Type::Subscript));
}
Poincare::Layout Sequence::definitionNameWithEqual() {
if (m_definitionNameWithEqual.isUninitialized()) {
m_definitionNameWithEqual = definitionName();
assert(m_definitionNameWithEqual.isHorizontal());
static_cast<HorizontalLayout&>(m_definitionNameWithEqual).addChildAtIndex(
CharLayout(' ', KDFont::SmallFont), // Cheat margin
m_definitionNameWithEqual.numberOfChildren(),
m_definitionNameWithEqual.numberOfChildren(),
nullptr);
static_cast<HorizontalLayout&>(m_definitionNameWithEqual).addChildAtIndex(
CharLayout('=', k_layoutFont),
m_definitionNameWithEqual.numberOfChildren(),
m_definitionNameWithEqual.numberOfChildren(),
nullptr);
}
return m_definitionNameWithEqual;
return m_definitionName;
}
Poincare::Layout Sequence::firstInitialConditionName() {
@@ -199,10 +184,7 @@ Poincare::Layout Sequence::firstInitialConditionName() {
Layout indexLayout = LayoutHelper::String(buffer, strlen(buffer), k_layoutFont);
m_firstInitialConditionName = HorizontalLayout(
CharLayout(name()[0], k_layoutFont),
VerticalOffsetLayout(indexLayout, VerticalOffsetLayoutNode::Type::Subscript),
CharLayout(' ', KDFont::SmallFont), // Cheat margin
CharLayout('=', k_layoutFont)
);
VerticalOffsetLayout(indexLayout, VerticalOffsetLayoutNode::Type::Subscript));
}
return m_firstInitialConditionName;
}
@@ -215,10 +197,7 @@ Poincare::Layout Sequence::secondInitialConditionName() {
Layout indexLayout = LayoutHelper::String(buffer, strlen(buffer), k_layoutFont);
m_secondInitialConditionName = HorizontalLayout(
CharLayout(name()[0], k_layoutFont),
VerticalOffsetLayout(indexLayout, VerticalOffsetLayoutNode::Type::Subscript),
CharLayout(' ', KDFont::SmallFont), // Cheat margin
CharLayout('=', k_layoutFont)
);
VerticalOffsetLayout(indexLayout, VerticalOffsetLayoutNode::Type::Subscript));
}
}
return m_secondInitialConditionName;
@@ -331,7 +310,7 @@ void Sequence::tidy() {
m_firstInitialConditionExpression = Expression();
m_secondInitialConditionExpression = Expression();
m_nameLayout = Layout();
m_definitionNameWithEqual = Layout();
m_definitionName = Layout();
m_firstInitialConditionName = Layout();
m_secondInitialConditionName = Layout();
}