#ifndef GRAPH_CARTESIAN_FUNCTION_STORE_H #define GRAPH_CARTESIAN_FUNCTION_STORE_H #include "cartesian_function.h" #include "../shared/function_store.h" #include #include namespace Graph { class CartesianFunctionStore : public Shared::FunctionStore { public: CartesianFunctionStore(); uint32_t storeChecksum() override; CartesianFunction * functionAtIndex(int i) override; CartesianFunction * activeFunctionAtIndex(int i) override; CartesianFunction * definedFunctionAtIndex(int i) override; CartesianFunction * addEmptyFunction() override; void removeFunction(Shared::Function * f) override; int maxNumberOfFunctions() override; char symbol() const override; static constexpr int k_maxNumberOfFunctions = 8; private: const char * firstAvailableName() override; const KDColor firstAvailableColor() override; static constexpr int k_numberOfDefaultColors = 8; static constexpr KDColor k_defaultColors[k_numberOfDefaultColors] = { Palette::Red, Palette::Blue, Palette::YellowDark, Palette::Magenta, Palette::Pink, Palette::Turquoise, Palette::Orange, Palette::Green }; static constexpr const char * k_functionNames[k_maxNumberOfFunctions] = { "f", "g", "h", "p", "q", "r", "s", "t" }; CartesianFunction m_functions[k_maxNumberOfFunctions]; }; } #endif