mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-03-21 14:50:44 +01:00
[apps/calculation] WIP: display the complex graph when clicking on the
burger menu
This commit is contained in:
@@ -13,6 +13,7 @@ public:
|
||||
View * view() override {
|
||||
return &m_graphView;
|
||||
}
|
||||
ComplexModel * complexModel() { return &m_complex; }
|
||||
private:
|
||||
ComplexModel m_complex;
|
||||
ComplexGraphView m_graphView;
|
||||
|
||||
@@ -213,17 +213,21 @@ Calculation::EqualSign Calculation::exactAndApproximateDisplayedOutputsAreEqual(
|
||||
}
|
||||
}
|
||||
|
||||
Calculation::AdditionalOutput Calculation::additionalOuput(Context * context) {
|
||||
Calculation::AdditionalOutput Calculation::additionalOuput(Context * context, std::complex<float> * c) {
|
||||
ExpressionNode::Type type = exactOutput().type();
|
||||
if (type == ExpressionNode::Type::Rational) {
|
||||
return AdditionalOutput::BaseRepresentation;
|
||||
}
|
||||
Preferences * preferences = Preferences::sharedPreferences();
|
||||
Evaluation<float> e = approximateOutput(context).approximateToEvaluation<float>(context, preferences->complexFormat(), preferences->angleUnit());
|
||||
Evaluation<float> e = approximateOutput(context).approximateToEvaluation<float>(context, Preferences::ComplexFormat::Cartesian, preferences->angleUnit());
|
||||
if (e.type() == EvaluationNode<float>::Type::MatrixComplex) {
|
||||
return AdditionalOutput::None;
|
||||
}
|
||||
Complex<float> ec = static_cast<Complex<float> &>(e);
|
||||
if (c) {
|
||||
c->real(ec.real());
|
||||
c->imag(ec.imag());
|
||||
}
|
||||
// return AdditionalOutput::Matrix
|
||||
if ((type == ExpressionNode::Type::Cosine || type == ExpressionNode::Type::Sine) && ec.imag() == 0.0f) {
|
||||
return AdditionalOutput::TrigonometryCircle;
|
||||
|
||||
@@ -84,7 +84,7 @@ public:
|
||||
EqualSign exactAndApproximateDisplayedOutputsAreEqual(Poincare::Context * context);
|
||||
|
||||
// Additional outputs
|
||||
AdditionalOutput additionalOuput(Poincare::Context * context);
|
||||
AdditionalOutput additionalOuput(Poincare::Context * context, std::complex<float> * c = nullptr);
|
||||
private:
|
||||
static constexpr KDCoordinate k_heightComputationFailureHeight = 50;
|
||||
/* Buffers holding text expressions have to be longer than the text written
|
||||
|
||||
@@ -53,20 +53,30 @@ bool HistoryController::handleEvent(Ion::Events::Event event) {
|
||||
int focusRow = selectedRow();
|
||||
HistoryViewCell * selectedCell = (HistoryViewCell *)m_selectableTableView.selectedCell();
|
||||
SubviewType subviewType = selectedSubviewType();
|
||||
EditExpressionController * editController = (EditExpressionController *)parentResponder();
|
||||
m_selectableTableView.deselectTable();
|
||||
Container::activeApp()->setFirstResponder(editController);
|
||||
Shared::ExpiringPointer<Calculation> calculation = calculationAtIndex(focusRow);
|
||||
EditExpressionController * editController = (EditExpressionController *)parentResponder();
|
||||
if (subviewType == SubviewType::Input) {
|
||||
m_selectableTableView.deselectTable();
|
||||
Container::activeApp()->setFirstResponder(editController);
|
||||
editController->insertTextBody(calculation->inputText());
|
||||
} else {
|
||||
ScrollableExactApproximateExpressionsView::SubviewPosition outputSubviewPosition = selectedCell->outputView()->selectedSubviewPosition();
|
||||
if (outputSubviewPosition == ScrollableExactApproximateExpressionsView::SubviewPosition::Right
|
||||
&& !calculation->shouldOnlyDisplayExactOutput())
|
||||
{
|
||||
editController->insertTextBody(calculation->approximateOutputText());
|
||||
if (outputSubviewPosition == ScrollableExactApproximateExpressionsView::SubviewPosition::Burger) {
|
||||
std::complex<float> c;
|
||||
if (calculation->additionalOuput(App::app()->localContext(), &c) == Calculation::AdditionalOutput::ComplexPlan) {
|
||||
m_complexController.complexModel()->setComplex(c);
|
||||
Container::activeApp()->displayModalViewController(&m_complexController, 0.f, 0.f, Metric::PopUpTopMargin, Metric::PopUpLeftMargin, Metric::PopUpTopMargin, Metric::PopUpRightMargin);
|
||||
}
|
||||
} else {
|
||||
editController->insertTextBody(calculation->exactOutputText());
|
||||
m_selectableTableView.deselectTable();
|
||||
Container::activeApp()->setFirstResponder(editController);
|
||||
if (outputSubviewPosition == ScrollableExactApproximateExpressionsView::SubviewPosition::Right
|
||||
&& !calculation->shouldOnlyDisplayExactOutput())
|
||||
{
|
||||
editController->insertTextBody(calculation->approximateOutputText());
|
||||
} else {
|
||||
editController->insertTextBody(calculation->exactOutputText());
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
#include "history_view_cell.h"
|
||||
#include "calculation_store.h"
|
||||
#include "selectable_table_view.h"
|
||||
#include "additional_outputs/complex_graph_controller.h"
|
||||
|
||||
namespace Calculation {
|
||||
|
||||
@@ -35,6 +36,7 @@ private:
|
||||
CalculationSelectableTableView m_selectableTableView;
|
||||
HistoryViewCell m_calculationHistory[k_maxNumberOfDisplayedRows];
|
||||
CalculationStore * m_calculationStore;
|
||||
ComplexGraphController m_complexController;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user