mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-01-19 08:47:28 +01:00
47 lines
1.5 KiB
C++
47 lines
1.5 KiB
C++
#ifndef SHARED_FUNCTION_H
|
|
#define SHARED_FUNCTION_H
|
|
|
|
#include <poincare.h>
|
|
#include <kandinsky.h>
|
|
#include <escher.h>
|
|
|
|
namespace Shared {
|
|
|
|
class Function {
|
|
public:
|
|
Function(const char * name = nullptr, KDColor color = KDColorBlack);
|
|
virtual ~Function(); // Delete expression and layout, if needed
|
|
Function& operator=(const Function& other);
|
|
Function& operator=(Function&& other) = delete;
|
|
Function(const Function& other) = delete;
|
|
Function(Function&& other) = delete;
|
|
virtual uint32_t checksum();
|
|
const char * text() const;
|
|
const char * name() const;
|
|
KDColor color() const { return m_color; }
|
|
Poincare::Expression * expression() const;
|
|
Poincare::ExpressionLayout * layout();
|
|
virtual bool isDefined();
|
|
bool isActive();
|
|
void setActive(bool active);
|
|
virtual bool isEmpty();
|
|
virtual void setContent(const char * c);
|
|
void setColor(KDColor m_color);
|
|
virtual float evaluateAtAbscissa(float x, Poincare::Context * context) const;
|
|
virtual void tidy();
|
|
private:
|
|
constexpr static size_t k_dataLengthInBytes = (TextField::maxBufferSize()+2)*sizeof(char)+2;
|
|
static_assert((k_dataLengthInBytes & 0x3) == 0, "The function data size is not a multiple of 4 bytes (cannot compute crc)"); // Assert that dataLengthInBytes is a multiple of 4
|
|
virtual char symbol() const = 0;
|
|
mutable Poincare::Expression * m_expression;
|
|
char m_text[TextField::maxBufferSize()];
|
|
const char * m_name;
|
|
KDColor m_color;
|
|
Poincare::ExpressionLayout * m_layout;
|
|
bool m_active;
|
|
};
|
|
|
|
}
|
|
|
|
#endif
|