summaryrefslogtreecommitdiff
path: root/libs/evoral/evoral
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2014-11-30 22:18:18 -0500
committerDavid Robillard <d@drobilla.net>2014-11-30 23:56:20 -0500
commit7eb4e5d22bf43fa1e6bc44dfa33d8732f744c2dd (patch)
tree8769e57a1e7382fc29e96ad461a419af3b4c9663 /libs/evoral/evoral
parentb68fd1cc259eed8d6f67ce38458d95710063f24b (diff)
Replace thinning static state with parameter.
Diffstat (limited to 'libs/evoral/evoral')
-rw-r--r--libs/evoral/evoral/ControlList.hpp22
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;