diff options
author | David Robillard <d@drobilla.net> | 2014-11-30 22:18:18 -0500 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2014-11-30 23:56:20 -0500 |
commit | 7eb4e5d22bf43fa1e6bc44dfa33d8732f744c2dd (patch) | |
tree | 8769e57a1e7382fc29e96ad461a419af3b4c9663 /libs/evoral/evoral | |
parent | b68fd1cc259eed8d6f67ce38458d95710063f24b (diff) |
Replace thinning static state with parameter.
Diffstat (limited to 'libs/evoral/evoral')
-rw-r--r-- | libs/evoral/evoral/ControlList.hpp | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/libs/evoral/evoral/ControlList.hpp b/libs/evoral/evoral/ControlList.hpp index e2609ad681..d6704c8e43 100644 --- a/libs/evoral/evoral/ControlList.hpp +++ b/libs/evoral/evoral/ControlList.hpp @@ -131,7 +131,20 @@ public: bool move_ranges (std::list< RangeMove<double> > const &); void modify (iterator, double, double); - void thin (); + /** Thin the number of events in this list. + * + * The thinning factor has no units but corresponds to the area of a + * triangle computed between three points in the list. If the area is + * large, it indicates significant non-linearity between the points. + * + * During automation recording we thin the recorded points using this + * value. If a point is sufficiently co-linear with its neighbours (as + * defined by the area of the triangle formed by three of them), we will + * not include it in the list. The larger the value, the more points are + * excluded, so this effectively measures the amount of thinning to be + * done. + */ + void thin (double thinning_factor); boost::shared_ptr<ControlList> cut (double, double); boost::shared_ptr<ControlList> copy (double, double); @@ -245,7 +258,7 @@ public: virtual bool writing() const { return false; } virtual bool touch_enabled() const { return false; } void start_write_pass (double time); - void write_pass_finished (double when); + void write_pass_finished (double when, double thinning_factor=0.0); void set_in_write_pass (bool, bool add_point = false, double when = 0.0); bool in_write_pass () const; @@ -254,9 +267,6 @@ public: /** Emitted when our interpolation style changes */ PBD::Signal1<void, InterpolationStyle> InterpolationChanged; - static void set_thinning_factor (double d); - static double thinning_factor() { return _thinning_factor; } - bool operator!= (ControlList const &) const; void invalidate_insert_iterator (); @@ -291,8 +301,6 @@ protected: Curve* _curve; - static double _thinning_factor; - private: iterator most_recent_insert_iterator; double insert_position; |