[apps/graph] Hangle displayed derivative for non cartesian functions

This commit is contained in:
Léa Saviot
2019-09-10 10:33:40 +02:00
parent 4caf9f5197
commit a72f42d75e
3 changed files with 10 additions and 3 deletions

View File

@@ -6,6 +6,7 @@
namespace Graph {
class BannerView : public Shared::XYBannerView {
friend class GraphController;
public:
BannerView(
Responder * parentResponder,

View File

@@ -30,9 +30,9 @@ I18n::Message GraphController::emptyMessage() {
void GraphController::viewWillAppear() {
m_view.drawTangent(false);
m_view.setCursorView(&m_cursorView);
m_bannerView.setNumberOfSubviews(Shared::XYBannerView::k_numberOfSubviews + m_displayDerivativeInBanner);
FunctionGraphController::viewWillAppear();
selectFunctionWithCursor(indexFunctionSelectedByCursor()); // update the color of the cursor
// Update the cursor color and the derivative display in the banner view
selectFunctionWithCursor(indexFunctionSelectedByCursor());
}
void GraphController::interestingFunctionRange(ExpiringPointer<CartesianFunction> f, float tMin, float tMax, float step, float * xm, float * xM, float * ym, float * yM) const {
@@ -130,11 +130,16 @@ void GraphController::selectFunctionWithCursor(int functionIndex) {
FunctionGraphController::selectFunctionWithCursor(functionIndex);
ExpiringPointer<CartesianFunction> f = functionStore()->modelForRecord(functionStore()->activeRecordAtIndex(functionIndex));
m_cursorView.setColor(f->color());
int numberBannerViewSubviews = k_numberOfBannerViewSubviewsWithoutDerivate + (m_displayDerivativeInBanner && f->plotType() == CartesianFunction::PlotType::Cartesian);
if (m_bannerView.numberOfSubviews() != numberBannerViewSubviews) {
m_bannerView.setNumberOfSubviews(numberBannerViewSubviews);
reloadBannerView();
}
}
void GraphController::reloadBannerView() {
FunctionGraphController::reloadBannerView();
if (!m_displayDerivativeInBanner) {
if (m_bannerView.numberOfSubviews() == k_numberOfBannerViewSubviewsWithoutDerivate) {
return;
}
Ion::Storage::Record record = functionStore()->activeRecordAtIndex(indexFunctionSelectedByCursor());

View File

@@ -23,6 +23,7 @@ public:
float interestingXHalfRange() const override;
void interestingRanges(float * xm, float * xM, float * ym, float * yM) const override;
private:
static constexpr int k_numberOfBannerViewSubviewsWithoutDerivate = Shared::XYBannerView::k_numberOfSubviews;
int estimatedBannerNumberOfLines() const override { return 1 + m_displayDerivativeInBanner; }
void selectFunctionWithCursor(int functionIndex) override;
BannerView * bannerView() override { return &m_bannerView; }