test_sdk/script/gtl_scr_spec_harm.h

83 lines
2.5 KiB
C
Raw Normal View History

#ifndef SPEC_HARM_H
#define SPEC_HARM_H
#include <QObject>
#include <QJsonObject>
#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