diff options
author | Stanislaw Halik <sthalik@misaki.pl> | 2015-10-30 07:37:41 +0100 |
---|---|---|
committer | Stanislaw Halik <sthalik@misaki.pl> | 2015-10-30 08:39:32 +0100 |
commit | aa066bdd4622d4f6824fee864f6be6806813f04d (patch) | |
tree | 3df328b8b364cba2373a85827191b259bd78d546 /filter-ewma2/ftnoir_filter_ewma2.h | |
parent | d6a54431d178632a2bf466c9904f74abd143afe6 (diff) |
move to subdirectory-based build system
Closes #224
Diffstat (limited to 'filter-ewma2/ftnoir_filter_ewma2.h')
-rw-r--r-- | filter-ewma2/ftnoir_filter_ewma2.h | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/filter-ewma2/ftnoir_filter_ewma2.h b/filter-ewma2/ftnoir_filter_ewma2.h new file mode 100644 index 00000000..bf4e83ad --- /dev/null +++ b/filter-ewma2/ftnoir_filter_ewma2.h @@ -0,0 +1,66 @@ +#pragma once + +#include "opentrack/plugin-api.hpp" +#include "ui_ftnoir_ewma_filtercontrols.h" +#include <QElapsedTimer> +#include <QWidget> +#include <QMutex> +#include "opentrack/options.hpp" +using namespace options; + +struct settings : opts { + // these are sadly sliders for now due to int/double mismatch -sh + value<int> kMinSmoothing, kMaxSmoothing, kSmoothingScaleCurve; + settings() : + opts("ewma-filter"), + kMinSmoothing(b, "min-smoothing", 15), + kMaxSmoothing(b, "max-smoothing", 50), + kSmoothingScaleCurve(b, "smoothing-scale-curve", 10) + {} +}; + + +class FTNoIR_Filter : public IFilter +{ +public: + FTNoIR_Filter(); + void reset(); + void filter(const double *input, double *output); + void receiveSettings(); +private: + // Deltas are smoothed over the last 1/60sec (16ms). + const double delta_RC = 0.016; + // Noise is smoothed over the last 60sec. + const double noise_RC = 60.0; + double last_delta[6]; + double last_noise[6]; + double last_output[6]; + QElapsedTimer timer; + settings s; +}; + +class FilterControls: public IFilterDialog +{ + Q_OBJECT +public: + FilterControls(); + void register_filter(IFilter* flt); + void unregister_filter(); + +private: + Ui::UICFilterControls ui; + void save(); + settings s; + FTNoIR_Filter* pFilter; + +private slots: + void doOK(); + void doCancel(); +}; + +class FTNoIR_FilterDll : public Metadata +{ +public: + QString name() { return QString("EWMA"); } + QIcon icon() { return QIcon(":/images/filter-16.png"); } +}; |