mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-01-19 00:37:25 +01:00
[escher] [apps] Implement app snapshot
Change-Id: I24d7eed7cef964af8be1c85222e758c297dc0da1
This commit is contained in:
@@ -34,6 +34,59 @@ Calculation::~Calculation() {
|
||||
void Calculation::reset() {
|
||||
m_inputText[0] = 0;
|
||||
m_outputText[0] = 0;
|
||||
tidy();
|
||||
}
|
||||
|
||||
void Calculation::setContent(const char * c, Context * context) {
|
||||
reset();
|
||||
strlcpy(m_inputText, c, sizeof(m_inputText));
|
||||
output(context)->writeTextInBuffer(m_outputText, sizeof(m_outputText));
|
||||
}
|
||||
|
||||
const char * Calculation::inputText() {
|
||||
return m_inputText;
|
||||
}
|
||||
|
||||
const char * Calculation::outputText() {
|
||||
return m_outputText;
|
||||
}
|
||||
|
||||
Expression * Calculation::input() {
|
||||
if (m_input == nullptr) {
|
||||
m_input = Expression::parse(m_inputText);
|
||||
}
|
||||
return m_input;
|
||||
}
|
||||
|
||||
ExpressionLayout * Calculation::inputLayout() {
|
||||
if (m_inputLayout == nullptr && input() != nullptr) {
|
||||
m_inputLayout = input()->createLayout(Expression::FloatDisplayMode::Decimal, Expression::ComplexFormat::Algebric);
|
||||
}
|
||||
return m_inputLayout;
|
||||
}
|
||||
|
||||
Expression * Calculation::output(Context * context) {
|
||||
if (m_output == nullptr && input() != nullptr) {
|
||||
m_output = input()->evaluate(*context);
|
||||
}
|
||||
return m_output;
|
||||
}
|
||||
|
||||
ExpressionLayout * Calculation::outputLayout(Context * context) {
|
||||
if (m_outputLayout == nullptr && output(context) != nullptr) {
|
||||
m_outputLayout = output(context)->createLayout();
|
||||
}
|
||||
return m_outputLayout;
|
||||
}
|
||||
|
||||
bool Calculation::isEmpty() {
|
||||
if (strlen(m_inputText) == 0) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void Calculation::tidy() {
|
||||
if (m_input != nullptr) {
|
||||
delete m_input;
|
||||
}
|
||||
@@ -52,45 +105,4 @@ void Calculation::reset() {
|
||||
m_outputLayout = nullptr;
|
||||
}
|
||||
|
||||
void Calculation::setContent(const char * c, Context * context) {
|
||||
reset();
|
||||
strlcpy(m_inputText, c, sizeof(m_inputText));
|
||||
m_input = Expression::parse(m_inputText);
|
||||
m_inputLayout = m_input->createLayout(Expression::FloatDisplayMode::Decimal, Expression::ComplexFormat::Algebric);
|
||||
m_output = m_input->evaluate(*context);
|
||||
m_outputLayout = m_output->createLayout();
|
||||
m_output->writeTextInBuffer(m_outputText, sizeof(m_outputText));
|
||||
}
|
||||
|
||||
const char * Calculation::inputText() {
|
||||
return m_inputText;
|
||||
}
|
||||
|
||||
const char * Calculation::outputText() {
|
||||
return m_outputText;
|
||||
}
|
||||
|
||||
Expression * Calculation::input() {
|
||||
return m_input;
|
||||
}
|
||||
|
||||
ExpressionLayout * Calculation::inputLayout() {
|
||||
return m_inputLayout;
|
||||
}
|
||||
|
||||
Expression * Calculation::output() {
|
||||
return m_output;
|
||||
}
|
||||
|
||||
ExpressionLayout * Calculation::outputLayout() {
|
||||
return m_outputLayout;
|
||||
}
|
||||
|
||||
bool Calculation::isEmpty() {
|
||||
if (m_output == nullptr) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user