Files
Upsilon/apps/graph/function.h
Émilie Feral 39dab5125c [apps] Add angle unit preference in apps
Change-Id: I25eb760883d164563cb3059d73e8d1fff92ad6da
2017-02-06 16:30:48 +01:00

44 lines
1.2 KiB
C++

#ifndef GRAPH_FUNCTION_H
#define GRAPH_FUNCTION_H
#include <poincare.h>
#include <kandinsky.h>
namespace Graph {
class Function {
public:
static constexpr const char * Parameter = "(x)";
Function(const char * text = nullptr, KDColor color = KDColorBlack);
~Function(); // Delete expression and layout, if needed
const char * text();
const char * name();
KDColor color() const { return m_color; }
Expression * expression();
ExpressionLayout * layout();
bool isActive();
void setActive(bool active);
bool displayDerivative();
void setDisplayDerivative(bool display);
void setContent(const char * c);
void setColor(KDColor m_color);
float evaluateAtAbscissa(float x, Context * context, Expression::AngleUnit angleUnit) const;
float approximateDerivative(float x, Context * context, Expression::AngleUnit angleUnit) const;
private:
constexpr static float k_epsilon = 0.0001f;
constexpr static float k_precision = 0.01f;
constexpr static int k_bodyLength = 255;
char m_text[k_bodyLength];
const char * m_name;
KDColor m_color;
Expression * m_expression;
ExpressionLayout * m_layout;
bool m_active;
bool m_displayDerivative;
};
}
#endif