#ifndef SPEC_HARM_H #define SPEC_HARM_H #include #include #include "script_global.h" namespace gtl { namespace scr { class SCRIPT_EXPORT spec_harm : public QObject { Q_OBJECT Q_PROPERTY(qreal freq READ freq CONSTANT) Q_PROPERTY(qreal peak_freq READ peak_freq CONSTANT) Q_PROPERTY(int color READ color WRITE set_color NOTIFY color_changed) Q_PROPERTY(qreal weight READ weight WRITE set_weight NOTIFY weight_changed) Q_PROPERTY(qreal amplitude READ amplitude NOTIFY amplitude_changed) Q_PROPERTY(qreal level READ level NOTIFY amplitude_changed) Q_PROPERTY(bool is_present READ is_present NOTIFY amplitude_changed) Q_PROPERTY(qreal base READ base NOTIFY amplitude_changed) Q_PROPERTY(qreal integral_index READ integral_index NOTIFY amplitude_changed) Q_PROPERTY(qreal tolerance READ tolerance WRITE set_tolerance NOTIFY tolerance_changed) public: explicit spec_harm(QObject *parent, qreal freq, int color, qreal weight); spec_harm(QObject *parent); qreal freq() const; qreal peak_freq() const; int color() const; qreal weight() const; bool is_present() const; qreal amplitude() const; qreal level() const; qreal base() const; qreal tolerance() const; qreal integral_index() const; void update(); void save_state(QJsonObject &root); void restor_state(const QJsonObject &root); void get_max_level(qreal &max_ampl); private: qreal _freq; int _color; qreal _weight; qreal _tolerance; public slots: void set_color(int value); void set_weight(qreal value); void set_tolerance(qreal value); signals: void color_changed(); void weight_changed(); void tolerance_changed(); void get_peak_freq(qreal freq, qreal tolerance, qreal&) const; void amplitude_changed(); void get_amplitude(qreal freq, qreal &value) const; void get_base(qreal freq, qreal &value) const; void get_max_harm_ampl(qreal &value) const; void get_modulating_harms_integral_index(qreal &value) const; }; } } #endif // SPEC_HARM_H